如何在不指定其他参数的情况下仅对我的测试数据库进行播种?

How can I seed only my test-database without specifying additional arguments?

有没有办法配置seed_fu so that it seeds only my test-database? I know there is a way to specify environment like this:

rake db:seed RAILS_ENV=test

但是有没有办法配置 seed_fu 使用默认的测试环境,这样我就不需要一直指定它了?

在您的 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

我发现通过将固定装置放置在环境特定的子目录中,例如

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

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

放置在 lib/fixtures 正下方的固定装置 总是 运行- 看起来像是您想要在所有环境中保留的一般固定装置的位置。

有关详细信息,请查找 seed_fu gem railtie file and seed_fu gem rake task

刚刚通过在子 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