【问题标题】:How to run rails db:seed once for all Elastic Beanstalk instances?如何为所有 Elastic Beanstalk 实例运行一次 rails db:seed?
【发布时间】:2017-04-08 09:19:07
【问题描述】:

我正在将 RoR 应用程序部署到 Amazon Elastic Beanstalk (EB)。为了通过预加载数据来准备容器,我正在使用预部署脚本运行 rake 任务:

container_commands:
  01seed:
    command: rails db:seed:dataset size=$SIZE --trace

问题是,如果我使用eb create --scale 4 启动四个实例,任务会运行四次,这会导致我的部署由于违反唯一键约束而失败。如何为每个部署运行一个实例的任务?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk


    【解决方案1】:

    我认为您以错误的方式处理此问题。即使您设法找到了每次部署运行一次 rails db:seed 的方法,如果您的自动扩展规则添加了一个实例,您仍然会遇到问题。

    相反,您可以修改种子文件以允许其多次运行。我已经使用first_or_createfind_or_create_by 完成了这项工作,仅在缺少种子数据时才创建它。

    【讨论】:

      猜你喜欢
      • 2014-12-26
      • 1970-01-01
      • 2020-02-28
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 2017-03-11
      • 2015-07-16
      • 2016-10-24
      相关资源
      最近更新 更多