Назад | Перейти на главную страницу

Ошибка стойки с DreamHost, Passenger и Rails 3.0.0.rc

Задний план: Я просмотрел этот вопрос так же как вот этот - к сожалению, безрезультатно.

Сообщение об ошибке (пассажир): Вы уже активировали стойку 1.1.0, но для вашего Gemfile требуется стойка 1.2.1. Рассмотрите возможность использования пакета exec.

мой Gemfile:

source 'http://rubygems.org'

gem 'rails', '3.0.0.rc'
gem 'nifty-generators' 
gem 'nokogiri'
group :after_initialize do
 gem 'feedzirra'
end

у моего Gemfile.lock есть эта строка:

rack (1.2.1)

мой environment.rb имеет эту строку вверху:

ENV['GEM_PATH'] = File.expand_path('~/.gems') + ':/usr/lib/ruby/gems/1.8'

у моего boot.rb есть эта строка вверху:

Gem.clear_paths

У меня стойка (1.2.1) установлена ​​правильно локально - мое приложение отлично работает на моем локальном хосте, а версия 1.2.1 отображается после «списка драгоценных камней» в терминале.

Я упаковал свои драгоценные камни в «пакетный пакет» перед тем, как отправить свое приложение на рабочий сервер.

Перед развертыванием я выполнил следующую команду (на своем производственном сервере из корня приложения):

bundle install --path vendor/bundle --local

Следуя приведенной выше команде установки, "проверка пакета" возвращает следующее:

The Gemfile's dependencies are satisfied

И это обратная трассировка, предоставленная пассажиром (вместе с сообщением об ошибке, упомянутым выше):

0   /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler/runtime.rb   27   in `setup'
1  /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler/spec_set.rb  12  in `each'
2  /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler/spec_set.rb  12  in `each'
3  /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler/runtime.rb  17  in `setup'
4  /home/bbahry/.gems/gems/bundler-1.0.0/lib/bundler.rb  100  in `setup'
5  /home/bbahry/gseeds.brentbahry.com/releases/20100927012812/config/boot.rb  9  
6  /usr/lib/ruby/1.8/rubygems/custom_require.rb  31  in `gem_original_require'
7  /usr/lib/ruby/1.8/rubygems/custom_require.rb  31  in `require'
8  /home/bbahry/gseeds.brentbahry.com/releases/20100927012812/config/application.rb  1  
9  /usr/lib/ruby/1.8/rubygems/custom_require.rb  31  in `gem_original_require'
10  /usr/lib/ruby/1.8/rubygems/custom_require.rb  31  in `require'
11  /home/bbahry/gseeds.brentbahry.com/releases/20100927012812/config/environment.rb  7  
12  /usr/lib/ruby/1.8/rubygems/custom_require.rb  31  in `gem_original_require'
13  /usr/lib/ruby/1.8/rubygems/custom_require.rb  31  in `require'
14  config.ru  3  
15  /usr/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/builder.rb  46  in `instance_eval'
16  /usr/lib/ruby/gems/1.8/gems/rack-1.1.0/lib/rack/builder.rb  46  in `initialize'
17  config.ru  1  in `new'
18  config.ru  1 

Мне интересно, придумал ли кто-нибудь решение этой проблемы?

Следует отметить, что образец приложения rails - он же запускает новое appName rails и прямая передача его по ftp на рабочий сервер на DreamHost - будет работать нормально. Это меня смущает, поскольку я представляю, что и мое настоящее приложение, и пример приложения имеют зависимость от стойки (1.2.1); что означает для меня, что, пытаясь обойти жемчужины сервера DreamHost, я каким-то образом возился с реализацией стойки в моем реальном приложении.

У меня есть мое примерное приложение rails, работающее на отдельном поддомене на DreamHost, при этом я получаю эту ошибку для поддоменов обоих реальных приложений, которые я пытаюсь развернуть.

Кроме того, я изначально пытался установить драгоценные камни локально в моем пользовательском каталоге DreamHost, прежде чем использовать подход поставщика / кеша. Может это ни на что не влияет ..

Спасибо за мучительный ответ на этот длинный вопрос.

DreamHost не поддерживает Rails 3. В том смысле, что они не обновили некоторые из необходимых версий гемов для запуска приложения Rails 3, и у вас действительно нет возможности разрешить вашим собственным драгоценным камням заменять те, которые были установлены DreamHost.

В этом случае мое тестовое приложение не использовало никаких конфликтующих драгоценных камней (просто отображало страницу index.html по умолчанию), однако любое реальное приложение будет, и поэтому ни одно из моих других приложений rails 3 не сработало.

(Я отправил запрос о проблеме, и DreamHost сказал мне, что пройдет некоторое время, прежде чем будет поддерживаться Rails 3.)

Решение - либо использовать VPS (я рекомендую Linode), либо попробовать Heroku. Есть шанс найти хороший общий хост, который также поддерживает приложения rails 3 - шанс.

VPS гарантирует полный контроль и предотвращение сценариев, как у меня с DreamHost. В то время как Heroku делает развертывание чертовски легким, но вы можете столкнуться с проблемой позже, если они не поддерживают драгоценный камень / службу, которая нужна вашему приложению. Кроме того, Heroku стоит дорого из-за того, что они предоставляют вам с точки зрения ресурсов сервера. Сейчас я использую Линоде.