Найденное решение: созданная cPanel установка Ruby On Rails возвращает пустые страницы для любых представлений

Решение найдено!

Это похоже на ошибку, специфичную для Mongrel + Rails 2.3.8, веб-сервера, используемого Rails+cPanel. Вот почему он отображается только при запуске приложения из cPanel, но не при локальном обслуживании через скрипт / сервер.

Для получения дополнительной информации см.: https://rails.lighthouseapp.com/projects/8994/tickets/4690-mongrel-doesnt-work-with-rails-238

Найденный обходной путь - поместить следующий файл в каталог /config/initializers каждого нового приложения Rails 2.3.8:

https://gist.github.com/471663

Как только я добавляю этот инициализатор, мое приложение Rails функционирует как положено.

Оригинальный вопрос:

Я прошел очень полезное руководство на railsforzombies.org и теперь готов начать тестовую установку RoR. Мой сайт находится на общем хосте с использованием cPanel. Я создал тестовое приложение с помощью cPanel, и оно настроено в ~/rails_apps/blog. Я создал перезапись, которая перенаправляет mydomain.com/testblog/ на mydomain.com:12002, на порт cPanel, на котором запущено мое приложение RoR. Я также запустил приложение через cPanel, в режиме разработки.

Если я захожу на mydomain.com/testblog/, я вижу полезную страницу, которая позволяет мне узнать, что мое приложение RoR создано и работает. Отлично, правда? Ну, не так быстро.

Я следую инструкциям руководства по началу работы по адресу guides.rubyonrails.org/v2.3.8/getting_started.html и перехожу к шагу 4. Я запустил script/generate controller home index и отредактировал полученное представление в app/views/home/index.html.erb. Это просто

<h1>Hello rails!</h1>

Однако, когда я захожу на mydomain.com/testblog/home/index (с или без завершающего символа '/'), в моем браузере появляется пустая страница, ничего не отображается (View Source ничего не показывает).

Чтобы убедиться, что я не схожу с ума, я помещаю текстовый файл в каталог / public моего приложения rails, и когда я захожу на mydomain.com/testblog/test.txt, он обслуживается должным образом. Итак, я знаю, что переписывание Apache с cPanel работает правильно.

Есть идеи? Я полагаю, что я упускаю из виду что-то очевидное, но пока рисую пробел.

Для справки, я работаю на cPanel 11, Ruby 1.8.7 и Rails 2.3.8. Я бы хотел запустить Rails 3.0, но общий хостинг пока говорит, что пока нет.

отредактировано, чтобы добавить:

Генерация контроллера home и действие index выше добавили следующие строки в мой файл rout.rb (я проверил, они есть):

map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'

поэтому mydomain.com/testblog/home/index должен отображаться в app/views/home/index.html.erb.

Отредактировано снова с большим количеством деталей расследования:

Я нашел то, что может пролить свет на это. Если я остановлю приложение rails в cPanel, войдите в систему через PuTTY и запустите сервер dev с помощью script/server и выполнить

curl http://0.0.0.0:3000/home/index

сервер разработки отвечает

<h1>Hello Rails!</h1>

от app/views/home/index.html.erb, Так что это работает там. Когда я запускаю приложение Rails в cPanel (которое сообщает мне, что оно работает на порте 12002), я получаю пустой ответ от mydomain.com/testblog/home/index. Я также получаю пустой ответ от

curl http://0.0.0.0:12002

если я запускаю его через SSH на сервере. Так что с cPanel похоже что-то нехорошее, а не с Rails.

1 ответ

Удостоверились ли вы и удалили ли вы файл index.html в каталоге app/public вашего приложения?

Кроме того, после генерации домашнего контроллера вы настроили ваш route.rb для распознавания нового контроллера и действия?

Другие вопросы по тегам