Make Bundler verwenden verschiedene Edelsteine für verschiedene Plattformen

Ich arbeite daran, eine unserer Rails 2.3.8-Apps auf Rails 3 zu aktualisieren, und bin auf ein ärgerliches Problem mit Bundler und Bereitstellung gestoßen. Ich entwickle die Anwendung auf einem Windows-Computer, aber in der Produktionsumgebung wird Ubuntu Linux ausgeführt. Nun, mein Problem ist, dass der Bundler das @ ignoriemysql Juwel in der Produktionsumgebung, und Passagier spuckt aus: "!!! Fehlender MySQL-Edelstein. Füge ihn zu deiner Gemfile hinzu: Edelstein 'MySQL', '2.8.1'"

Hier ist meinGemfile:

# 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

Wie Sie sehen können, diemysql gem ist angegeben. Bei der Bereitstellung ignoriert der Bundler dies jedoch. Warum? Der Grund ist, dass Bundler das folgende @ generieGemfile.lock (nur relevante Teile enthalten):

....
mime-types (1.16)
mysql (2.8.1-x86-mingw32)
net-ldap (0.1.1)
....

Bitte beachten Sie, dass es das plattformspezifische Juwel enthält. Dies ist offensichtlich NICHT das, was ich möchte, da dieses Juwel unter Linux nicht geeignet ist (und anscheinend ignoriert wird).

Also, hat Bundler eine Möglichkeit, mit diesen Problemen umzugehen? Oder muss ich daran denken, die Version von mysql gem im generierten @ manuell zu änderGemfile.lock Jedes Mal, wenn ich die Bundle-Installation auf meinem Entwicklungscomputer ausführe?

Danke im Voraus

Aktualisiere

Es scheint, als ob das Bundlerteam davon Kenntnis hatProble.

Antworten auf die Frage(18)

Ihre Antwort auf die Frage