Ошибка Bundler при развертывании - PullRequest
16 голосов
/ 24 июня 2011

В настоящее время я использую guard, т.е. guard-coffeescript gem, для компиляции моего javascript (и в будущем я, вероятно, добавлю еще несколько охранных задач) в моей системе OSX dev.Я добавил гем rb-fsevent в свой 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, чтобы я могразвернуть в моей системе и, в свою очередь, установить гем, который бесполезен на платформе не OSX?

-

edit: я запускаю bundle install перед развертыванием в моей промежуточной среде и запускаю bundle check после первого раза это не удалось.Я запустил его после удаления оператора if ..

Ответы [ 3 ]

23 голосов
/ 11 августа 2011

У меня была похожая проблема.Если вы используете capistrano, вы можете установить следующую опцию:

set :bundle_without, [:darwin, :development, :test]

Затем оберните строку вашего гема 'rb-fsevent' в группу под названием darwin.Примерно так должно работать:

group :test, :darwin do
  gem 'rb-fsevent'
end

Это заставляет упаковщик делать это на сервере:

bundle --without darwin development test

Это означает, что он игнорирует эти группы в Gemfile.lock.То, что вы делали, заставляло вас работать на машине с OS X, и ваш сервер создавал разные файлы блокировки.Вот почему он жаловался.

6 голосов
/ 30 августа 2011

У меня была точно такая же проблема, и решение Люка устранило ее для меня, однако, только после того, как я удалил строку :require => false if RUBY_PLATFORM =~ /darwin/i, которая обычно используется.

2 голосов
/ 30 ноября 2012

Как описано в

https://github.com/guard/guard

решение просто

group :development do
  gem 'rb-inotify', :require => false
  gem 'rb-fsevent', :require => false
  gem 'rb-fchange', :require => false
end
...