我不想为每个部署加载一个种子文件,因为这需要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发布于 2015-08-12 20:25:39
通常,如果有数据我只需要创建一次,我会尝试设置一个自定义的rake任务,该任务可以在部署后直接在服务器上运行,或者可以设置capistrano配方运行一次。如果你想使用seeds.rb,我找到的唯一方法就是检查记录是否已经存在。但我不知道在执行种子文件时是否有任何全局检查或包装器。
https://stackoverflow.com/questions/31964837
复制相似问题