在Gemfile中获取gem的自定义方法

时间:2018-05-01 14:35:40

标签: ruby rubygems gemfile

当我们使用自定义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

0 个答案:

没有答案