在Rails中播种 - 检查是否需要种子

时间:2015-08-12 12:10:38

标签: ruby-on-rails

我不想为每个部署加载种子文件,因为它需要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

1 个答案:

答案 0 :(得分:0)

通常如果有数据我只需要创建一次,我尝试设置一个自定义rake任务,可以在部署后直接在服务器上运行,也可以设置一个capistrano配方来运行一次。如果你想使用seeds.rb,我发现这样做的唯一方法就是检查记录是否已经存在。但我不知道执行种子文件的任何全局检查或包装。