当我们使用自定义Gem构建我们的应用程序时,我们必须不断修改我们的Gemfile以指向我们的本地代码,我们的共享服务器(使用geminabox)或在生产中我们使用的版本gem unpacked(因为我们的gem服务器受vpn保护)。
这意味着我们在gemfile中有这样的代码:
# QA and Bamboo
gem 'our_gem', '0.0.1', source: 'https://gems.website.com'
# Development, Test
#gem 'our_gem', path: "../our_gem"
# Production
#gem 'our_gem', path: "../vendor/gems/our_gem-0.1.1"
我们的开发人员必须继续评论和取消注释每一行,然后才能推动分支机构在Bamboo等上构建。
一项建议是使用自定义方法替换它:
custom_gem 'our_gem', '0.1.1'
代替Gemfile中的gem
声明。
这将是:
def custom_gem(name, version = '0.0.1')
case Rails.env
when qa?, :bamboo?
gem name, version, source: 'https://gems.website.com'
when development?, test?
gem name, path: "../#{name}"
when production?
gem name, path: "../vendor/gems/#{name}-#{version}"
else
fail "Unknown environment for gem: #{name}"
end
end
问题是......你可以在Gemfile中使用这样的自定义方法吗?如果是这样,这段代码将在应用程序中存在。或者我们不得不求助于使用:http://bundler.io/man/gemfile.5.html#INSTALL_IF