2013-03-11 2 views
0

Я нахожусь на VPS. Я создал новое приложение для рельсов с rails new rails_app -d mysql. Я бегу nginx с пассажиром. Я запускаю Rails 3.2.12 и Ruby 1.9.3. В моем файле nginx.conf я добавил следующее в server директивы:Приложение Moving Rails для производства с nginx

listen  80; 
server_name www.mydomain.com; 
passenger_enabled on; 
root /home/mike/www/rails_app/public; 
rails_env production; 

Когда я указываю на www.mydomain.com я вижу Добро пожаловать на борт едешь Ruby On Rails !. Когда я нажимаю на О среде вашего приложения я получаю эту ошибку:

The page you were looking for doesn't exist. 

Когда я просматриваю production.log я вижу эту ошибку и не знаю, что с ним делать:

ActionController::RoutingError (No route matches [GET] "/rails/info/properties") 

I «Я всю ночь пробовал и прочитал все проблемы, похожие на это, но все же я не могу решить свою проблему. Если я запустил это в процессе разработки, все будет хорошо.

EDIT

Я нашел это объяснение для Rails 2.3.4 проблемы: ссылка выстреливает запрос AJAX рельсов/Информацию/свойство. Действие свойства определено в Rails :: InfoController, который живет в /rails/railties/builtin/rails_info/rails/info_controller.rb.

Маршрут не обязательно должен быть определен явно, поскольку он соответствует маршруту по умолчанию Rails: controller /: action /: id (хотя в этом случае идентификатор отсутствует, а контроллер живет в пространстве имен Rails).

Но я не вижу info_controller.rb в любом месте.

ОК Я нашел это: config.consider_all_requests_local - это флаг. Если true, любая ошибка приведет к тому, что в ответе HTTP будет выгружена подробная информация об отладке, а контроллер Rails :: Info отобразит контекст среды выполнения приложения в/rails/info/properties. Истина по умолчанию в средах разработки и тестирования и false в режиме производства. Для более тонкого управления установите для этого значение false и реализуйте local_request? в контроллерах указать, какие запросы должны предоставлять отладочную информацию об ошибках.

но установка этого на false делает ничего.

EDIT 2 Хорошо, я идиот. Найденный здесь: You're clicking the "About your application’s environment" link on the Rails default index.html page. This link only works in development environment, not in production.

И всю эту ночь я думал, что мое приложение Rails не работает. Поэтому, я думаю, я сдадусь и пойду спать.

ответ

-1

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

Попробуйте эту команду:

chmod -R 777 {name of your project folder}/

Может это поможет.

+0

Нет, это не поможет. – mikeglaz

0

Вы забыли добавить passenger_base_uri:

server { 
    listen 80; 
    server_name domain.com; 
    charset utf-8; 
    root /www/domain.com/public_html; 
    passenger_enabled on; 
    passenger_base_uri /blog; 
    rails_spawn_method smart; 
    rails_env production; 
} 

Также проверьте, что пассажирские и рельсы работают в той же среде (производство или развитие).

+0

разработка произведение хорошо. Я добавил user_base_uri и все ту же ошибку. Я не понимаю, что пытается перенаправить на/rails/info/properties – mikeglaz

0

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

  1. SSH на ваш сервер, ssh [email protected]
  2. Проверить последние 20 или около того сообщения об ошибках tail -20 /home/username/appname/current/log/production.log
  3. Если это ошибка в коде (мой возвращал пустой массив из-за пустой БД), а затем исправить эта ошибка и запустить cap production deploy еще раз.
  4. Повторите, чтобы проверить наличие дополнительных ошибок.
Смежные вопросы