Ошибка Bundler при развертывании
в настоящее время я использую guard, т. е. guard-coffeescript gem для компиляции моего javascript (и в будущем я, вероятно, добавлю еще несколько задач guard) в моей системе OSX dev. Я добавил rb-fsevent
gem для моего Gemspec, теперь я видел, что во многих Gemspecs он добавляется с оператором if следующим образом:
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
при попытке развертывания в моей промежуточной / производственной среде, которая работает под Linux, скрипт, выполняемый на сервере, использует 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, чтобы я мог развернуть свою систему и, в свою очередь, установить gem, который бесполезен на платформе без OSX?
--
edit: я запускаю bundle install
перед развертыванием в моей тестовой среде и работать bundle check
после первого раза это не удалось. Я запустил его после удаления оператора if..
3 ответов
у меня была похожая проблема. Если вы используете capistrano, вы можете установить следующий параметр:
set :bundle_without, [:darwin, :development, :test]
затем оберните линию gem 'rb-fsevent' в группу под названием darwin. Что-то вроде этого должно работать хорошо:
group :test, :darwin do
gem 'rb-fsevent'
end
это заставляет bundler делать это на сервере:
bundle --without darwin development test
что означает, что он игнорирует эти группы в Gemfile.замок. То, что вы делали, заставило бы вас OS X machine и ваш сервер придумать разные результирующие файлы блокировки. Который вот почему он жаловался.
У меня была точно такая же проблема и решение Люка починил его для меня, однако, только после того, как я убрал :require => false if RUBY_PLATFORM =~ /darwin/i
строка, которая обычно используется.
как описано в
https://github.com/guard/guard
решение просто
group :development do
gem 'rb-inotify', :require => false
gem 'rb-fsevent', :require => false
gem 'rb-fchange', :require => false
end