Rails - Получение 500 ошибок сервера через браузер, но работает через скрипт / консоль.Что дает? - PullRequest
3 голосов
/ 19 января 2010

Хорошо, я преследовал это в течение нескольких часов, и я просто не могу понять это. У меня есть приложение Ruby on Rails, которое я развернул на своем хостинг-провайдере DreamHost. Я создал новую среду под названием «stage», создал файл stage.rb в папке / config / environment и поместил следующую строку в мою environment.rb

# Be sure to restart your server when you modify this file

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION

ENV["RAILS_ENV"] ||= "stage"

# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|

Я могу запустить

RAILS_ENV=stage script/console

и все работает нормально. Я могу запустить rake db: migrate и создать свою базу данных. Затем я могу заскочить в консоль и действовать по моей модели. Я также вижу активность ActiveRecord в stage.log

Проблема в том, что когда я открываю браузер и перехожу по URL-адресу, я получаю ошибку 500, равную

Извините, но что-то пошло не так.

Когда я пытаюсь получить доступ к сайту через браузер, я не вижу ничего написанного в stage.log.

Мой файл журнала apache выглядит следующим образом.

1.1.1.1 - - [19/Jan/2010:06:05:01 -0800] "GET /classes/calendar HTTP/1.1" 500 861 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10" 

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

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

Любая помощь будет оценена, Rob

Ответы [ 2 ]

1 голос
/ 22 января 2010

Вероятно, проблема в вашей строке, устанавливающей RAILS_ENV в "stage".Используемое присвоение || = устанавливает значение, только если RAILS_ENV еще не определено.В этом случае RAILS_ENV, скорее всего, уже был установлен на «производство» DH еще до того, как оно попало в ваше приложение, поэтому назначение || = не имеет никакого эффекта.

Чтобы увидеть, действительно ли это проблема, возьмитеПосмотрите на каталог журналов - вы, вероятно, найдете файл production.log и никаких записей в stage.log (кроме тех, которые возникают из-за запуска скрипта / консоли), поскольку ваше приложение (непреднамеренно) запускается как производственное.

Одним из способов решения этой проблемы является изменение строки просто:

ENV["RAILS_ENV"] = "stage"
0 голосов
/ 19 января 2010

Обычно этой проблемой могут быть права доступа к скриптам или окружение вашего гема. Я не знаком с развертыванием приложений rails на DH, вы используете Passenger или fastcgi?

В оболочке проверьте вашу среду гемов, запустив gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.5
  - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /home/<username>/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org/", "http://gems.github.com", "http://gemcutter.org"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
     - http://gems.github.com
     - http://gemcutter.org

Эти настройки применяются из консоли, но не при работе через apache. Для этого вам нужно отредактировать config / environment.rb и добавить

ENV['GEM_PATH'] = '/home/<usrname>/.gem/ruby/1.8:/usr/lib/ruby/gems/1.8'

Вы хотите убедиться, что то, что вы здесь задаете как GEM_PATH, совпадает с выводом команды gem env.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...