2012-03-14 85 views
0

我真的非常喜歡聽到令人沮喪的問題,我不認爲我會再次嘗試使用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 publicblog文檔根目錄的符號鏈接。訪問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.rbhome#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.rbapp/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,所以我真的不知道該怎麼做。

+0

我很困惑,你試圖將應用程序部署或者只是得到一個本地運行的發展?我不確定我會在第二個之前嘗試第一個。 – miked 2012-03-14 20:35:41

+0

@miked我猜兩個在同一時間? – 2012-03-14 20:44:20

+0

您是否嘗試過使用內置的WEBrick服務器? – miked 2012-03-14 20:47:02

回答

1

假設你已經安裝了導軌(這聽起來像你有)。以會發生什麼?:這

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

然後NAV到:http://localhost:3000

+0

我在共享主機而不是我自己的計算機上這樣做,所以'localhost'不會工作..什麼是'rails s'? – 2012-03-14 20:51:58

+1

好吧,有你的問題的一部分。 Rails在本地啓動和運行(在您自己的計算機上)非常簡單。我建議在嘗試在共享主機上對其進行配置之前執行此操作。這聽起來不像你在http://guides.rubyonrails.org/getting_started.html上做的第4步,因爲'rails s'啓動了一個本地web服務器,所以你可以看到你的應用程序並開發它。 – miked 2012-03-14 20:57:49

+0

但是我怎麼能看到「冒煙測試」着陸頁? – 2012-03-14 21:02:27