Я работаю над обновлением одного из наших приложений Rails 2.3.8 до Rails 3, и столкнулся с досадной проблемой с пакетированием и развертыванием.Я разрабатываю приложение на компьютере под управлением Windows, но производственная среда работает под управлением Ubuntu Linux.Теперь моя проблема в том, что упаковщик игнорирует гем mysql
в производственной среде, и Пассажир выплевывает: "!!! Отсутствует драгоценный камень mysql. Добавьте его в свой Gemfile: gem 'mysql', '2.8.1 '"
Вот мой Gemfile
:
# Edit this Gemfile to bundle your application's dependencies.
# This preamble is the current preamble for Rails 3 apps; edit as needed.
source 'http://rubygems.org'
gem 'rails', '3.0.0'
gem 'net-ldap', :require => 'net/ldap'
gem 'highline', :require => 'highline/import'
gem 'mysql', '2.8.1'
gem 'net-ssh', :require => 'net/ssh'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :development, :test do
gem 'fakeweb', :require => 'fakeweb'
gem 'flexmock', :require => 'flexmock/test_unit'
end
Как видите, указан камень mysql
.Однако при развертывании, bundler игнорирует его.Зачем?Причина в том, что Bundler генерирует следующие Gemfile.lock
(только соответствующие части включены):
....
mime-types (1.16)
mysql (2.8.1-x86-mingw32)
net-ldap (0.1.1)
....
Обратите внимание, что он включает в себя конкретный гем платформы.Это явно НЕ то, что я хочу, потому что этот гем не подходит (и явно игнорируется) при работе под Linux.
Итак, есть ли у Bundler какой-либо способ справиться с этими проблемами?Или я должен помнить, что нужно вручную менять версию mysql gem в сгенерированном Gemfile.lock
каждый раз, когда я запускаю пакетную установку на моей машине для разработки?
Заранее спасибо!
Обновление
Кажется, команда разработчиков знает об этой проблеме .