ruby-on-rails - 执行数据库 :seed task for development

标签 ruby-on-rails rake

我有以下任务:

namespace :db do
  desc "Drop, create, migrate, seed the database and prepare the test database for rspec"
  task :reset_db => :environment do
    puts "Environment Check: Rails Environment = #{Rails.env}"
    Rake::Task['db:drop'].invoke
    Rake::Task['db:create'].invoke
    Rake::Task['db:migrate'].invoke
    #Rake::Task['db:fixtures:load'].invoke
    Rake::Task['db:test:prepare'].invoke
    puts 'Seeding Database..'
    Rake::Task['db:seed'].invoke
  end
end

此任务在最后一个 db:seed 之前都可以正常工作线。
它似乎正在使用 test环境并在那里创建数据,而所有其他任务在 development 中执行环境。当我执行 rake db:seed通过命令行,它在 development 中正确运行环境。

如何防止它在 test 中运行环境?

最佳答案

db:test:prepare rake 任务准备测试数据库,因此设置 RAILS_ENV=test .

所以你的任务在测试环境中运行的原因是因为db:test:prepare实际上覆盖了您的 RAILS_ENV多变的。

关于ruby-on-rails - 执行数据库 :seed task for development,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8866760/

相关文章:

ruby-on-rails - 预先加载、模型方法、fields_for、each 和 N+1

ruby-on-rails - 无法连接到本地 PostgreSQL

ruby-on-rails - Rails : How to run code when server starts up, 但在运行 rake 任务或控制台时不是?

ruby-on-rails - 更新 Rails 种子数据的最佳实践是什么

ruby-on-rails - 通过 asset_sync 在 Heroku 上访问 `/favicon.ico`

ruby-on-rails - RSpec 说明 : Why does the `should` come before the method that should be causing it?

ruby-on-rails - Rails 3.1 引擎 rake 分贝 :test:prepare task missing

ruby-on-rails - 如何在 rails 外使用 rake 执行 rake 任务?

rake 数据库 :seed for i18n data

ruby-on-rails - 如何比较json数据类型字段的记录是否存在?