2012-03-14 79 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