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



有没有办法配置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

最新更新