有没有办法配置seed_fu,以便它只播种我的测试数据库?我知道有一种方法可以指定这样的环境:
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
消除了在错误环境中激活错误夹具的可能性,这也是我的主要问题之一。在此变体中运行seed_fu时也必须指定 Still- 环境。它只是消除了在错误环境中运行错误夹具的可能性。
放置在lib/fixtures
正下方的灯具将始终运行 - 看起来像您想要在所有环境中保留的一般灯具的地方。
有关更多信息seed_fu查找宝石轨道文件和seed_fu宝石耙任务。
刚刚通过在子外壳中执行命令发现了另一种方法:
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