我有一个Sinatra应用程序,需要我在本地开发的另一个宝石.我在配置Bundler时在开发过程中使用我的本地gem代码,但是在制作中却是由我生产的gem代码.
理想情况下,我可以做这样的事情,但是Bundler不允许你两次指定相同的宝石:
# 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
在此期间,我已经采取了手工方式的宝石和更新宝石源在Gemfile每次我部署,这是一个麻烦.我的工作流程是这样的:
>在开发过程中指向我的本地宝石(gem’awesome’,:path =>“〜/ code / awesome”)
>准备好部署时,将gem打包成供应商/宝石
>更新Gemfile指向vendored gem(gem’awesome’,:path =>“vendor / gems / awesome-0.0.1”)
>运行bundle install(更新Gemfile.lock)
>部署代码
>返回步骤1.
什么麻烦!我想做一些更简单的事情,而不是简单地编写Rake任务来自动化我的当前设置.
这种情况下最好的工作流程是什么?
解决方法
有一个新功能允许这样做,只需指定local.gem_name配置选项,如:
bundle config local.rack ~/path/to/local/rack
这只有在gem具有Gemfile中指定的git repo和branch的情况下才有效.
有关详细信息,请参阅thr Bundler文档:http://bundler.io/v1.3/bundle_config.html