Хорошо, я думаю, что что-то придумал. По сути, идея состоит в том, чтобы выполнять вторичный Gemfile только тогда, когда выполняется приложение Rails. Для этого добавим две вещи:
Сначала немного изменим скрипт rails:
# in ./script/rails
Kernel::IN_RAILS_APP = true
APP_PATH = File.expand_path('../../config/application', __FILE__)
require File.expand_path('../../config/boot', __FILE__)
require 'rails/commands'
Во-вторых, мы сообщаем, что упаковщик загружает дополнительный Gemfile, если мы находимся в приложении rails и существует вторичный файл:
# Gemfile
if Kernel.const_defined?(:IN_RAILS_APP)
local_gemfile = File.dirname(__FILE__) + "/Gemfile.local"
if File.exists?(local_gemfile)
puts 'using local gemfile'
self.instance_eval(Bundler.read_file(local_gemfile))
end
end
Теперь вы можете добавить Gemfile.local
в ваш проект и запускать определенные гемы для каждого компьютера. bundle install
работает нормально, поскольку константа IN_RAILS_APP
не существует.
** Обязательно добавьте Gemfile.local к вашему .gitignore.