Найдено решение: созданная cPanel установка Ruby On Rails возвращает пустые страницы для любых представлений - PullRequest
2 голосов
/ 08 февраля 2011

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

Это, похоже, ошибка, характерная для 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 / просмотров / дом / index.html.erb. Это просто

<h1>Hello rails!</h1>

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

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

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

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

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

Генерация контроллера дома и действия индекса выше добавили следующие строки в мой файл 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 Ответ

0 голосов
/ 08 февраля 2011

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

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

...