Bündler falsch versucht, „Entwicklung“ und „Test“ Gruppe Edelsteine ??in der Produktion zu installieren

StackOverflow https://stackoverflow.com/questions/4438601

Frage

Ich habe einen kleinen Web-App, die eine Reihe von Edelsteinen verwendet. Einige von ihnen sind nur für test und development Umgebungen eingesetzt. Jetzt, wenn ich versuche, auf dem Produktionsserver zu starten Einhorn mit dem folgenden Befehl, es funktioniert nicht.

unicorn_rails -E production -D -c config/unicorn.rb

Der Fehler, den ich in den Protokolldateien ist:

Refreshing Gem list
Could not find gem 'spork (>= 0.9.0.rc2, runtime)' in any of the gem sources listed in your Gemfile.
Try running `bundle install`.

Ich habe klebte mein gemfile unter:

source 'http://rubygems.org'

gem 'rails', '3.0.1'
gem 'unicorn'
gem 'mongoid', '>= 2.0.0.beta.19'
gem 'devise'
gem 'cancan'
gem 'haml', '>= 3.0.0'
gem 'bson'
gem 'bson_ext'
gem 'formtastic'
gem 'bluecloth'

group :production do
  gem 'capistrano'
end

group :development do
  gem 'haml-rails'
  gem 'hpricot', '0.8.2'
  gem 'ruby_parser', '2.0.5'
  gem 'less'
  gem 'rspec-rails', '>= 2.0.1'
end

group :development,:test do
  gem 'spork', '>=0.9.0.rc2'
  gem 'mongoid-rspec'
end

group :test do
  gem 'factory_girl_rails'
  gem 'autotest'
  gem 'cucumber-rails'
  gem 'cucumber'
  gem 'capybara'
  gem 'shoulda'
  gem 'database_cleaner'
  gem 'test_notifier'
  gem 'rspec', '2.0.1'
  gem 'launchy' 
end

Bündler soll die richtige Umgebung erkennen und die anderen Edelsteine, rechts zu ignorieren? Gerade jetzt, ich bin das Löschen aller Linien, die auf dem Server nicht in der Standardgruppe sind diese Funktion zu erhalten, aber das ist eine hässliche Hack.

War es hilfreich?

Lösung

Nach viel ich graben die Fehlerbehebung für dieses Problem gefunden. Alles, was ich tun musste, war vor dem Start des Server bundle install --without development test laufen. Dies fügt eine .bundle/config Datei in den Schienen Wurzel mit der Linie BUNDLE_WITHOUT: test:development. Nun, wenn Sie bundle install oder starten Sie den Server ausgeführt werden es diese Gruppen ignorieren.

Aus der Dokumentation

Der Bündler CLI können Sie festlegen, eine Liste von Gruppen, deren gems bündeln installieren sollte mit der nicht installieren --without Option. Um mehrere Gruppen angeben, zu ignorieren, geben Sie eine Liste von Gruppen durch Leerzeichen getrennt sind.

bündeln --ohne Testpaket installieren installieren --ohne Entwicklung Test Nach dem Ausführen Bündel installieren --ohne Test, Bündler wird, dass Sie sich daran erinnern die Testgruppe in den letzten ausgeschlossen Installation. Das nächste Mal, wenn Sie laufen bündeln installieren, ohne --ohne Option, Bündler wird es wieder zu verwenden.

Auch Aufruf Bundler.setup mit nein Parameter oder Berufung erfordern „Bündler / Setup“ Setup alle Gruppen Mit Ausnahme von denen, die Sie ausgeschlossen über --without (da sie offenbar nicht verfügbar).

Andere Tipps

In meinem Fall war es die Installation von Edelsteinen aus jenkins env. So musste ich meine eigene bundle_without Variable in Capistrano gesetzt.

Gemfile

group :test, :development, :jenkins do  
  gem 'test-unit', '1.2.3'  
  gem 'rspec-rails'
end

deploy.rb

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

Sie haben keine Produktionsgruppe definiert =)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top