Я очень расстроен с разочарованием до такой степени, что не думаю, что когда-нибудь снова попытаюсь использовать рельсы. Это второй раз, когда я пытался использовать его, и я, честно говоря, даже не могу начать.
В любом случае, теперь, когда я выпустил этот пар, вот описание того, что происходит и где я застрял.
У меня есть сайт example.com
. Этот сайт имеет .htaccess
, который делает много перенаправлений (он работает от одного файла в корне документа, который загружает соответствующие контроллеры и что у вас). Используя cpanel, я настроил blog.example.com
. Корнем документа для него является example.com/blog
. Я решил, что с таким же успехом могу попытаться использовать RoR для блога и узнать что-то новое.
Я начал с этого руководства: http://guides.rubyonrails.org/getting_started.html - версия их рельсов, кажется, 3.1.3. Один на моем сервере 3.0.9, но я не думаю, что это должно иметь значение для таких простых вещей. Я потратил много времени на настройку MySQL. Я, вероятно, далеко, но я по крайней мере хотел страницу для печати.
После установки я создал символическую ссылку от RoR public
до корня документа blog
. Посещение blog.example.com
отображает страницу RoR «тест на дым». Замечательно.
При нажатии «О среде вашего приложения» (ссылки на http://blog.example.com/rails/info/properties
) перенаправляется на example.com
. Это действительно плохой знак. Я понятия не имею, почему он будет перенаправлять не только на собственный корень документа, но и на корень документа основного домена. Я думал, что это из-за перенаправления, происходящего в example.com
.htaccess
, поэтому я удалил указанный .htaccess. Без кубиков - такое же перенаправление происходит. Я думал, что это может быть и кеш браузера, но очистка кеша и даже использование другого браузера все еще вызывает это перенаправление! Я должен сделать вывод, что само по себе rails
перенаправляет с blog.example.com/rails/info/properties
на example.com
, но это не имеет никакого смысла - тем более, что я ничего не касался конца приложения RoR.
Во всяком случае, я решил продолжить. Я создаю контроллер с rails generate controller home index
. Все файлы, кажется, в порядке. Я также обновил root :to
в routes.rb
до home#index
.
rake routes
отпечатков:
home_index GET /home/index(.:format) {:controller=>"home", :action=>"index"}
root /(.:format) {:controller=>"home", :action=>"index"}
Я удаляю app/public/index.html
в соответствии с инструкциями, чтобы отобразился маршрут по умолчанию.
С example.com/.htaccess
посещение /
просто дает 404, а посещение /first/index
(или /first
, /first/
или /first/index/
) - все перенаправления на example.com
. Я снова удалил .htaccess
, так как он, вероятно, вызывает перенаправления. Я не уверен, сервер это или какая-то другая черная магия, но удаление .htaccess
все еще вызывает перенаправления на example.com
, даже если он больше не работает, так как ему требуется .htaccess
для соответствующей перезаписи сам по себе. Использование другого браузера, похоже, исправляет это.
Тем не менее, я все еще получаю 404 за посещение /
или /first/index
или любого их варианта. log/product.log
имеет много:
Started GET "/first/index/" for ?.?.?.? at 2012-03-14 15:40:59 -0400
ActionController::RoutingError (No route matches "/first/index"):
Started GET "/" for ?.?.?.? at 2012-03-14 15:41:57 -0400
ActionController::RoutingError (No route matches "/"):
... но rake routes
показывает, что для них доступны маршруты. app/view/home/index.html.erb
существует и имеет <h1>Home#index</h1>...
Что странно, так это то, что log
не всегда, кажется, записывает эту ошибку при каждом посещении, поэтому, возможно, сервер или что-то кэширует ответ - я не знаю, но я знаю, что я получаю 404 каждый раз, хотя rake
даже говорит, что маршруты существуют (и проверка config/routes.rb
и app/controllers/home_controller.rb
, кажется, указывает на то, что они тоже должны существовать).
Извините за длинное резюме, но эта информация может быть уместной. У меня двоякий вопрос:
1) Как заставить blog.example.com
игнорировать example.com
.htaccess
или иным образом игнорировать перенаправления (при условии, что это .htaccess
вызывает их - я не уверен на 100%, что это дело но кажется вероятным). Для справки, .htaccess
это:
RewriteEngine on
RedirectMatch example/(.*)$ http://example.com/$1
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.html/$0/ [PT]
2) Как заставить контроллеры RoR работать? Я следовал инструкциям по настройке маршрутов к письму - с моей стороны все выглядит неправильно, но я все еще получаю 404, поэтому я действительно не уверен, что делать.