Ошибка стойки с 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 - иначе говоря, запускает новое имя приложения rails и передает его по FTP на рабочий сервер на DreamHost - будет работать нормально. Это беспокоит меня, так как я представляю, что и мое реальное приложение, и пример приложения имеют зависимость rack (1.2.1); это подразумевает, что, пытаясь обойти гемы DreamHost, я каким-то образом путаюсь с реализацией стойки в моем реальном приложении.
У меня есть пример приложения rails на отдельном поддомене в DreamHost, и я получаю эту ошибку для поддоменов обоих реальных приложений, которые я пытаюсь развернуть.
Кроме того, я сначала попытался установить gems локально в моем пользовательском каталоге DreamHost, прежде чем использовать подход vendor/cache. Может быть, это ни на что не влияет..
Спасибо за страдания из-за этого грязного / длинного вопроса
1 ответ
DreamHost не поддерживает Rails 3. В том смысле, что они не обновили некоторые из необходимых версий гемов для запуска приложения Rails 3, и у вас нет возможности позволить своим собственным драгоценным камням заменить те, которые были установлены DreamHost.
В этом случае мое тестовое приложение не использовало конфликтующие гемы (просто отображая страницу index.html по умолчанию), однако любое реальное приложение будет работать, и поэтому ни одно из моих других приложений rails 3 не работало.
(Я отправил заявку на проблему, и DreamHost сказал, что пройдет некоторое время, прежде чем Rails 3 будет поддерживаться.)
Решение состоит в том, чтобы или пойти с VPS (я рекомендую Linode) или попробовать Heroku. Есть шанс, что вы найдете хороший общий хост, который также поддерживает приложения rails 3 - шанс.
VPS гарантирует полный контроль и предотвращение сценариев, как я имел с DreamHost. Принимая во внимание, что Heroku делает развертывание гребаным бризом, все же вы можете столкнуться с проблемой позже, если они не поддерживают драгоценный камень / сервис, необходимый вашему приложению. Кроме того, Heroku стоит дорого за то, что они дают вам с точки зрения ресурсов сервера. В настоящее время я бегу на Линоде.