好的,这个棘手的问题又出现了,我们仍然很难找到解决方案。
问题
我们有一个 Gemfile:
group :development do
gem 'debugger'
end
部署到生产时,Passenger 会因为找不到 gem '调试器'而爆炸。
约束
ops 不会将“调试器”安装到产品中
部署后我们无法运行任何 shell 命令,例如
bundle install
或bundle --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。