如何在不指定其他参数的情况下仅为我的测试数据库添加种子?

时间:2016-03-17 11:29:32

标签: ruby-on-rails ruby ruby-on-rails-4 mysql2 seeding

有没有办法配置seed_fu,以便只种 我的测试数据库?我知道有一种方法可以指定像this这样的环境:

rake db:seed RAILS_ENV=test

但有没有办法让seed_fu使用test-environment作为默认值,这样我就不需要一直指定它?

3 个答案:

答案 0 :(得分:1)

在seed_fu任务中,您可以明确设置环境:

Rails.env = 'test'

为了实现你所需要的,我将像这样包装seed_fu任务:

namespace :db do
  task :custom_seed => :environment do
    Rails.env = 'test'
    Rake::Task["db:seed_fu"].execute
  end
end

然后打电话:

rake db:custom_seed

答案 1 :(得分:0)

我发现将灯具放在特定于环境的子目录中,如

/lib/fixtures/test
/lib/fixtures/development
/lib/fixtures/production

消除了在错误的环境中激活错误灯具的可能性,这也是我的主要问题之一。在此变体中运行seed_fu 时仍需指定环境。它只是消除了在错误的环境中运行错误灯具的可能性。

位于lib/fixtures下方的灯具将始终运行 - 看起来像是您希望在所有环境中保留的常规灯具的位置。

有关更多信息,请查找seed_fu gem railtie file和seed_fu gem rake task

答案 2 :(得分:0)

通过在子shell中执行命令,发现了另一种方法:

namespace :db do

  desc "Seed_fu only in test-database"
  task seed_fu_test: :environment do
    system("rake db:seed_fu RAILS_ENV=test")
  end

end