Подтвердить что ты не робот

Спутник неправильно пытается установить "разработку" и "тест" группы драгоценных камней в производство

У меня есть небольшое веб-приложение, в котором используется куча драгоценных камней. Некоторые из них используются только для сред test и development. Теперь, когда я пытаюсь запустить единорог на производственном сервере, используя следующую команду, он терпит неудачу.

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

Ошибка, которую я вижу в файлах журнала:

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

Я вставил свой gemfile ниже:

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

Бундлер должен обнаруживать правильную среду и игнорировать другие драгоценные камни, верно? Прямо сейчас я удаляю все строки, которые не входят в группу по умолчанию на сервере, чтобы заставить это работать, но это уродливое взломать.

4b9b3361

Ответ 1

После долгих поисков я нашел решение этой проблемы. Все, что мне нужно было сделать, это запустить bundle install --without development test перед запуском сервера. Это добавляет файл .bundle/config в корневой каталог rails со строкой BUNDLE_WITHOUT: test:development. Теперь, когда вы запускаете bundle install или запускаете сервер, они игнорируют эти группы.

Из документации

Интерфейс командной строки Bundler позволяет вам указать список групп, чьи инсталляции с гемами не должны устанавливаться с опцией --without. Чтобы указать несколько групп, которые нужно игнорировать, укажите список групп, разделенных пробелами.

Пакетная установка --without тестовая установка Пакетная установка --without тест разработки После запуска комплектной установки --without тестирование, упаковщик запомнит, что вы исключили группу тестирования в последней установке. В следующий раз, когда вы запустите установку пакета, без какой-либо опции --without, пакет запустит его.

Кроме того, при вызове Bundler.setup без параметров или при вызове require "bundler/setup" будут настроены все группы, кроме тех, которые вы исключили с помощью --without (поскольку они, очевидно, недоступны).

Ответ 2

В моем случае это была установка драгоценных камней из jenkins env. Поэтому мне пришлось установить свою собственную переменную bundle_without в capistrano.

Gemfile

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

deploy.rb

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

Ответ 3

Вы не определили производственную группу =)