我不想为每个部署加载种子文件,因为它需要2-3分钟。 如果需要,我只想加载种子。
我有以下代码将在应用程序的初始化程序中运行种子,因此当应用程序启动时,它将加载种子。但有没有办法只在需要时才这样做(即某些事情发生了变化?)
对于迁移,我们有:if ActiveRecord::Migrator.needs_migration?
但种子怎么样?
if ENV_PROPS['run_seeds_at_startup']
Common::Log.info 'Starting seed load'
seed_file = File.join('db/seeds.rb')
load(seed_file) if File.exist?(seed_file)
Common::Log.info 'Seed data loaded'
else
Common::Log.info 'Automatic Seeds are shutdown in the env-props.yml...'
end
答案 0 :(得分:0)
通常如果有数据我只需要创建一次,我尝试设置一个自定义rake任务,可以在部署后直接在服务器上运行,也可以设置一个capistrano配方来运行一次。如果你想使用seeds.rb,我发现这样做的唯一方法就是检查记录是否已经存在。但我不知道执行种子文件的任何全局检查或包装。