开发和生产环境之间的路由差异(Ruby on Rails)

时间:2011-05-12 19:33:50

标签: ruby-on-rails ruby-on-rails-3

我正在Rails(v3.0.5)中编写一个应用程序,我正在部署到Heroku。

当我在开发环境中访问http://localhost:3000/places/new时,我会进入相应的页面(创建新地点的表单)。一切都按预期工作(我可以创造新的地方)。

当我尝试在我的Heroku制作环境中访问相应的页面(http://example.heroku.com/places/new)时,我将回到我的应用程序的主页。

我的routes.db文件的内容:

ExampleSite::Application.routes.draw do

    resources :users
    resources :sessions, :only => [:new, :create, :destroy]
    resources :places

    root              :to => 'pages#home'
    match '/contact', :to -> 'pages#contact'
    match '/about',   :to -> 'pages#about'
    match '/signin',  :to -> 'sessions#new'
    match '/signout', :to -> 'sessions#destroy'

end

可能导致开发与生产之间出现差异的原因是什么?

注意:到目前为止,我在'places'控制器中构建的唯一操作是'new'和'create'(两者都在开发环境中按预期执行)。不确定这应该是相关的,但请记住。此外,所有“用户”操作和路径似乎都在开发和生产中按预期工作。

编辑:如下面的评论中所述,/ places / new是一个受身份验证的页面,但在这两种情况下我都是在登录时尝试这个。此外,当我尝试访问/ places / new时生产环境在登录时,相应的重定向(到我的/ signin页面)按预期工作。

我的Heroku记录了尝试获取/放置/新建:

2011-05-12T23:37:30+00:00 app[web.1]: Started GET "/places/new" for 74.87.126.82 at Thu May 12 16:37:30 -0700 2011
2011-05-12T23:37:30+00:00 app[web.1]:   Processing by PlacesController#new as HTML
2011-05-12T23:37:30+00:00 app[web.1]: Redirected to http://example.heroku.com/
2011-05-12T23:37:30+00:00 app[web.1]: Completed 302 Found in 4ms
2011-05-12T23:37:30+00:00 heroku[router]: GET example.heroku.com/places/new dyno=web.1 queue=0 wait=0ms service=9ms bytes=631
2011-05-12T23:37:30+00:00 app[web.1]: 
2011-05-12T23:37:30+00:00 app[web.1]: 
2011-05-12T23:37:30+00:00 app[web.1]: Started GET "/" for 74.87.126.82 at Thu May 12 16:37:30 -0700 2011
2011-05-12T23:37:30+00:00 app[web.1]:   Processing by PagesController#home as HTML
2011-05-12T23:37:30+00:00 app[web.1]: Rendered layouts/_header.html.erb (4.3ms)
2011-05-12T23:37:30+00:00 app[web.1]: Rendered pages/home.html.erb within layouts/application (5.7ms)
2011-05-12T23:37:30+00:00 app[web.1]: Completed 200 OK in 7ms (Views: 3.5ms | ActiveRecord: 5.8ms)
2011-05-12T23:37:30+00:00 heroku[router]: GET example.heroku.com/ dyno=web.1 queue=0 wait=0ms service=14ms bytes=2357

1 个答案:

答案 0 :(得分:0)

事实证明,我有一秒(忘记了,因为我改变了'用户'的范围)认证条件,检查了管理员级别状态。如果当前用户不是管理员,则那个条件会重定向到主页。

我在开发环境中创建的测试用户 IS 是管理员(因为我在切换范围之前创建了该用户),而我在生产环境中创建的测试用户不是< / strong>一个管理员(因此重定向)。

感谢大家的帮助!虽然这个错误是一种疏忽,但你的建议让我了解了一些我没想过要用的新诊断工具。