我有一个 Sinatra 应用程序,它需要我在本地开发的另一个 gem。我在配置 Bundler 以在开发过程中使用我的本地 gem 代码但在生产中使用我的供应商 gem 代码时遇到问题。
理想情况下,我可以做这样的事情,但 Bundler 不允许您两次指定相同的 gem:
# Doesn't work:
group :development do
gem 'awesome', :path => "~/code/awesome"
end
group :production do
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
end
与此同时,我每次部署时都求助于手动出售 gem 并更新 Gemfile 中的 gem 源,这很麻烦。我的工作流程是这样的:
- 在开发过程中指向我的本地 gem (
gem 'awesome', :path => "~/code/awesome"
) - 准备好部署时,将 gem 解压到
vendor/gems
- 更新 Gemfile 以指向 vendored gem (
gem 'awesome', :path => "vendor/gems/awesome-0.0.1"
) - 运行
bundle install
(更新 Gemfile.lock) - 部署代码
- 返回步骤 1。
多么麻烦!我想做一些更干净的事情,而不是简单地编写 Rake 任务来自动化我当前的设置。
这种场景的最佳工作流程是什么?