Заставить компоновщик использовать разные гемы для разных платформ

Я работаю над обновлением одного из наших приложений 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 какой-либо способ справиться с этими проблемами? Или я должен помнить, что нужно вручную изменять версию gem mysql в сгенерированном Gemfile.lock каждый раз, когда я запускаю пакетную установку на моей машине для разработки?

Заранее спасибо!

Обновление

Кажется, команда разработчиков знает об этой проблеме .

46
задан Daniel Abrahamsson 5 November 2010 в 12:06
поделиться