Как развернуть тестовое приложение на Dreamhost Rails 3.0.4? - PullRequest
4 голосов
/ 22 февраля 2011

Все эти выходные я пытался настроить приложение Rails 3.0.4 в работе на общем сервере Dreamhost.Я следовал этой статье вики , чтобы иметь свой собственный набор настроек rubygems на сервере.Кроме того, я также установил rvm и ruby ​​1.9.2 с помощью следующей команды:

bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.
rvm use 1.9.2 --default

Выполнение ruby -v возвращает ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux], поэтому я считаю, что rvm правильно установил версию ruby.

Я создал свое приложение, заставляющее использовать базу данных mysql, а затем сгенерировал контроллер статей:

rails new test_app -d mysql
cd test_app
rails g scaffold articles title:string body:text

Теперь, когда я захожу в домен, я вижу обычное «Добро пожаловать на борт, вы едете на Ruby on Rails».!»экран, но если я нажимаю ссылку «О среде вашего приложения», я получаю сообщение об ошибке пассажира:

Не удалось запустить приложение Ruby (Rack). Приложение закрылось во время запуска (т.е.во время оценки config / environment.rb).Сообщение об ошибке могло быть записано в файл журнала веб-сервера.Пожалуйста, проверьте файл журнала веб-сервера (то есть не файл журнала приложения (Rails)), чтобы узнать, почему приложение вышло.Если это не помогло, используйте отладку ниже для устранения проблемы.

Наконец, если я подключаюсь по SSH к серверу и просто выполняю rails s, я вижу, что приложение работает правильно на порту 3000.

Я никогда не запускал приложение в производство, поэтому я очень растерялся.Пассажир не использует версию ruby ​​RVM?Возможно ли это даже на общем сервере DreamHost?Что мне нужно сделать, чтобы исправить эту проблему?

Любая помощь приветствуется, спасибо.

Ответы [ 2 ]

4 голосов
/ 10 марта 2012

Мне удалось успешно развернуть приложение Rails 3.2.2 на Dreamhost. Вот несколько заметок, которые я написал для себя.


На локальной машине разработки

Прежде всего, Dreamhost Passenger основан на Ruby 1.8.7, а не Ruby 1.9.2. Из-за этого Dreamhost не понравится часть вашего кода Ruby, потому что он имеет некоторый новый синтаксис значения ключа. Посмотрите на любой код, подобный этому:

key: "value"

и изменить на стиль Ruby 1.8.7 (который также понимает Ruby 1.9.2):

:key => "value"

Я обнаружил, что вы можете найти этот код, выполнив что-то вроде этого ... это можно сделать более эффективно на * nix box, но я сделал это в Windows с некоторыми установленными командами * nix:

egrep -r -i "^.*\w: .*$" . | grep rb

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

$> bundle package

На сервере (он же Dreamhost)

(Получите ваши файлы на Dreamhost. Лично я фиксирую и помещаю изменения в git remote repository, затем git pull их в личную папку на dreamhost. После того, как они там, я скопируйте их в папку «Пассажир»)

Затем я запускаю эти команды из папки приложения Rails ( / home / username / www.myapp.com / ):

$> bundle install --path vendor/bundle --local
$> rake db:migrate RAILS_ENV="production"
$> bundle exec rake assets:precompile
$> touch tmp/restart.txt

Вуаля, похоже, это работает. Если это все еще не работает, проверьте log / production.log.

3 голосов
/ 12 июня 2011

Я столкнулся с той же проблемой. Я полагаю, это потому, что пассажир не загружает интерпретатор ruby, который вы указываете в rvm, как он или гемы, которые вы указываете. Вы, вероятно, увидите, что загружаемые самоцветы ссылаются на / usr / ... Я столкнулся с этим http://blog.ninjahideout.com/posts/the-path-to-better-rvm-and-passenger-integration,, но мне не удалось обойти это, Dreamhost использует ruby ​​1.8.7 в своей конфигурации пассажира, и вы и я хотели бы использовать 1.9.2

...