Ошибка Bundler при развертывании
В настоящее время я использую гвардию guard-coffeescript, чтобы скомпилировать мой javascript (и в будущем, вероятно, добавлю несколько дополнительных задач защиты) в свою систему OSX dev. Я добавил жемчужину rb-fsevent
к моему Gemspec, теперь я увидел, что во многих Gemspecs добавлен оператор if, например:
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
Попытка развертывания в моей промежуточной/производственной среде, работающей под Linux, script, выполняемая на сервере, использует результаты bundle install --deployment
в следующем исключении:
# bundle install --deployment
You have modified your Gemfile in development but did not check
the resulting snapshot (Gemfile.lock) into version control
You have deleted from the Gemfile:
* rb-fsevent
Есть ли способ обойти эту проблему или мне просто нужно удалить if, чтобы я мог развернуть свою систему и, в свою очередь, установить драгоценный камень, который бесполезен на платформе, отличной от OSX?
-
edit: я запускаю bundle install
перед развертыванием в мою промежуточную среду и запускаю bundle check
после первого сбоя. Я запустил его после удаления инструкции if.
Ответы
Ответ 1
У меня была аналогичная проблема. Если вы используете capistrano, вы можете установить следующий параметр:
set :bundle_without, [:darwin, :development, :test]
Затем заверните строку gb 'rb-fsevent' в группе под названием darwin. Что-то вроде этого должно работать красиво:
group :test, :darwin do
gem 'rb-fsevent'
end
Это делает связку делать это на сервере:
bundle --without darwin development test
Это означает, что он игнорирует эти группы в Gemfile.lock. То, что вы делали, заставит вашу машину OS X и ваш сервер придумать разные файлы блокировки. Вот почему он жаловался.
Ответ 2
У меня была такая же проблема, и решение Luke исправило это для меня, однако, только после того, как я удалил строку :require => false if RUBY_PLATFORM =~ /darwin/i
, которая обычно используется.
Ответ 3
Как описано в
https://github.com/guard/guard
решение просто
group :development do
gem 'rb-inotify', :require => false
gem 'rb-fsevent', :require => false
gem 'rb-fchange', :require => false
end