Bündler falsch versucht, „Entwicklung“ und „Test“ Gruppe Edelsteine ??in der Produktion zu installieren
-
09-10-2019 - |
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.
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.
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 =)