bundler niepoprawnie próbuje zainstalować w produkcji klejnoty grup "development" i "test"

Mam małą aplikację internetową, która wykorzystuje kilka klejnotów. Niektóre z nich są używane tylko w środowiskach test i development. Teraz, gdy próbuję uruchomić unicorn na serwerze produkcyjnym za pomocą poniższej komendy, to się nie udaje.

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

Błąd jaki widzę w plikach logów to:

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`.

Wkleiłem mój gemfile poniżej:

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
Bundler ma wykrywać właściwe środowisko i ignorować inne klejnoty, prawda? W tej chwili usuwam wszystkie linie, które nie są w domyślnej grupa na serwerze, aby to działa, ale to jest brzydki hack.
Author: Khaja Minhajuddin, 2010-12-14

3 answers

Po wielu Kopaniach znalazłem poprawkę dla tego problemu. Wszystko co musiałem zrobić to uruchomić bundle install --without development test przed uruchomieniem serwera. Powoduje to dodanie pliku .bundle/config do katalogu głównego rails z linią BUNDLE_WITHOUT: test:development . Teraz, gdy uruchomisz bundle install lub uruchomisz serwer, zignoruje on te grupy.

Z dokumentacji

Bundler CLI pozwala określić lista grup, których gems bundle install nie powinien instalować z -- bez opcji. Aby określić wiele grup do zignorowania, podaj listę grupy oddzielone spacjami.

Bundle install -- bez pakietu testowego install -- without development test Po uruchomieniu instalacji pakietu -- bez test, bundler zapamięta, że ty wykluczono grupę badaną w ostatnim instalacja. Następnym razem jak uciekniesz pakiet instalacyjny, bez żadnych ...bez opcja, bundler ją przypomni.

Również dzwoni do Bundlera.konfiguracja bez parametry, lub wywołanie wymaga "bundler / setup" ustawi Wszystkie grupy z wyjątkiem tych, których wykluczyłeś poprzez -- bez (ponieważ oczywiście nie są dostępne).
 52
Author: Khaja Minhajuddin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-15 05:45:45

W moim przypadku instalował perełki z jenkins env. Musiałem więc ustawić własną bundle_bez zmiennej w capistrano.

Gemfile

group :test, :development, :jenkins do  
  gem 'test-unit', '1.2.3'  
  gem 'rspec-rails'
end
/ Align = "left" / rb
set :bundle_without, [:development, :test, :jenkins]
 4
Author: Pratik Khadloya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-13 19:30:44

Nie zdefiniowałeś grupy produkcyjnej=)

 -2
Author: Icid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-14 11:29:54