Рельсы просто не работают - PullRequest
0 голосов
/ 14 марта 2012

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

В любом случае, теперь, когда я выпустил этот пар, вот описание того, что происходит и где я застрял.

У меня есть сайт 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, поэтому я действительно не уверен, что делать.

1 Ответ

1 голос
/ 15 марта 2012

Предполагается, что у вас установлены рельсы (что звучит так же, как у вас).Что происходит с этим?:

$>rails new myapplication
$>cd myapplication
$>rails s

, затем перейдите к: http://localhost:3000

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