Настройка Ruby on Rails 4 на общем сервере Dreamhost

Итак, я новичок в Ruby / Rails и начал писать небольшое приложение, используя последние версии на моем собственном компьютере. В настоящее время у меня есть общий хостинг через Dreamhost, и я дошел до того момента, когда я хотел попробовать развернуть то, что у меня есть, на поддомене, который я настроил с помощью нового пользователя. К сожалению, я не осознавал, что версия Ruby и Rails по умолчанию безнадежно устарела, поэтому я начал искать способы ее обновления. Немного погуглил, и я наткнулся на некоторые инструкции, которые, казалось, должны были содержать ответ:

RAILS 4.0.0 С РУБИНОМ 2.0 НА ОБЩЕМ СЕРВЕРЕ DREAMHOST

Сначала кажется, что он работает, Ruby и rails устанавливаются нормально и начинают указывать на самые новые версии. К сожалению, когда я пытаюсь сделать последние шаги и настроить тестовое приложение, я получаю ошибку 500, возвращаемую каждый раз.

Rails application failed to start properly

Я просмотрел свои каталоги в поисках файлов журналов и обнаружил в своем файле home / user / logs / subdomain.domain.com / http / error.log кучу следующего:

[Чт, 23 октября, 15:11:41 2014] [ошибка] [клиент 24.93.22.1] Превышено ограничение в 10 внутренних перенаправлений из-за возможной ошибки конфигурации. При необходимости используйте LimitInternalRecursion, чтобы увеличить лимит. Используйте «Отладка LogLevel», чтобы получить обратную трассировку.

Просматривая вики Dreamhost для FCGI и Rails, было предложено при отладке запустить мой dispatch.fcgi из консоли и посмотрите, какие ошибки выдает. Когда я это делаю, кажется, что ничего не происходит, как будто он каким-то образом застревает в бесконечном цикле, пока я не нажму Enter во второй раз, после чего я вернусь в командную строку. Вот мой файл dispatch.fcgi, я не совсем понимаю, что здесь происходит, так как я просто скопировал и вставил его из первой опубликованной ссылки, мне никогда не приходилось делать что-либо подобное раньше.

#!/home/user/ruby/bin/ruby
ENV['RAILS_ENV'] = 'development'
ENV['HOME'] ||= `echo ~`.strip
ENV['GEM_HOME'] = File.expand_path('~/.gems')
ENV['GEM_PATH'] = File.expand_path('~/.gems')
require 'fcgi'
require File.join(File.dirname(__FILE__), '../config/environment.rb')
class Rack::PathInfoRewriter
  def initialize(app)
    @app = app
  end
  def call(env)
    env.delete('SCRIPT_NAME')
    parts = env['REQUEST_URI'].split('?')
    env['PATH_INFO'] = parts[0]
    env['QUERY_STRING'] = parts[1].to_s
    @app.call(env)
  end
end

Вот и мой файл .htaccess, который я создал и вставил в свою домашнюю / пользовательскую папку, опять же, прямое задание копирования / вставки, которое я не очень хорошо понимаю.

<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
</IfModule>
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
</IfModule>
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/dispatch.fcgi/$1 [QSA,L]
ErrorDocument 500 "Rails application failed to start properly"

Итак, я понимаю, что общий сервер Dreamhost, вероятно, не лучшая среда для запуска Rails, но это то, что у меня есть на данный момент, и если бы я смог заставить его работать, я был бы счастлив. Я бы даже остановился на этом, чтобы просто понять, что именно происходит, даже если нет способа это исправить, потому что я бился головой о стену большую часть сегодняшнего дня, бегая по Интернету, пытаясь понять что именно я делаю.


person Devin    schedule 24.10.2014    source источник


Ответы (1)


У меня была такая же ошибка.

Решил это с gem "fcgi" в моем Gemfile.

person fetsh    schedule 21.02.2016