1

好的,这个棘手的问题又出现了,我们仍然很难找到解决方案。

问题

我们有一个 Gemfile:

group :development do
  gem 'debugger'
end

部署到生产时,Passenger 会因为找不到 gem '调试器'而爆炸。

约束

  • ops 不会将“调试器”安装到产品中

  • 部署后我们无法运行任何 shell 命令,例如bundle installbundle --without development

  • 我们不能在bundle --without development本地运行并复制 Gemfile.lock 或 .bundle/* 目录(如前所述),因为我们的开发机器与我们的生产机器的架构不同。

  • prod 机器与http://rubygems.org隔离。在 prod 机器上安装/更新 gem的唯一方法是手动请求操作gem install

  • 所有应用程序的 gem 在 prod 机器上共享(没有 rvm 等)

  • 我们确实有一个在部署后运行的 rake 任务

我们目前的解决方案

  • 在发布到 prod 之前查看 Gemfile 并注释掉开发组。稍后取消评论。根据发布周期中的位置重复。(容易出错)

我能想到的可能解决方案

  • 保留 Gemfile 的两个版本(即 Gemfile.dev Gemfile.prod)并使用 rake 任务将它们交换/cp 到 Gemfile。
4

0 回答 0