我真的非常喜欢听到令人沮丧的问题,我不认为我会再次尝试使用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