我真的非常喜歡聽到令人沮喪的問題,我不認爲我會再次嘗試使用Rails。這是我第二次嘗試使用它,而且我真的無法開始。Rails根本無法工作
無論如何,現在我已經吹走了那股熱氣,下面是對發生什麼事情以及我卡在哪裏的描述。
我有一個網站example.com
。該站點有一個.htaccess
,它執行大量的重定向(它在文檔根目錄中的單個文件中加載適當的控制器以及你有什麼)。使用cPanel,我設置了blog.example.com
。它的文檔根目錄是example.com/blog
。我決定不妨嘗試將RoR用於博客並學習新的東西。
我開始使用本指南:http://guides.rubyonrails.org/getting_started.html - 它們的rails版本似乎是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)如何獲得的回報率控制器工作週期?我已經按照指示設置了這封信的路線 - 我的一切都看起來不對,但我仍然得到404s,所以我真的不知道該怎麼做。
我很困惑,你試圖將應用程序部署或者只是得到一個本地運行的發展?我不確定我會在第二個之前嘗試第一個。 – miked 2012-03-14 20:35:41
@miked我猜兩個在同一時間? – 2012-03-14 20:44:20
您是否嘗試過使用內置的WEBrick服務器? – miked 2012-03-14 20:47:02