Пользовательский метод для получения драгоценного камня внутри Gemfile - PullRequest
0 голосов
/ 01 мая 2018

Когда мы создаем наши приложения с использованием собственного 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

...