Когда мы создаем наши приложения с использованием собственного Gem, мы должны постоянно вносить поправки в наш Gemfile, чтобы указывать либо на наш локальный код, на наш общий сервер (использующий geminabox), либо когда в производстве мы используем версию 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'
вместо объявления gem
в Gemfile.
Что будет:
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