如何在不指定其他参数的情况下仅对我的测试数据库进行播种?
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
有没有办法配置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