【问题标题】:Routing Discrepancy Between Development and Production Environments (Ruby on Rails)开发和生产环境之间的路由差异(Ruby on Rails)
【发布时间】:2011-05-14 05:30:19
【问题描述】:

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

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

当我尝试在我的 Heroku 生产环境中访问相应的页面 (http://example.heroku.com/places/new) 时,我会被路由回我的应用程序的主页。/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 页面)按预期工作。

我尝试获取 /place/new 的 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

【问题讨论】:

  • 您是否有某种身份验证可能会失败并将您重定向回主页?
  • 有身份验证,但在这两种情况下,我都在登录时尝试这样做。此外,我的会话检查器设置为重定向到 /signin 页面 (sessions#new) 并给出“请登录”闪存(在这种情况下都不会发生)。
  • 我刚刚在登录的情况下尝试在生产环境中访问/places/new,并且身份验证重定向(在我的上一条评论中描述)按预期工作。
  • 你在使用 Cancan 吗?
  • @twmills 我没听说过 Cancan,它不在我的 Gemfile 中。

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


【解决方案1】:

事实证明,我有第二个(忘记了,因为我更改了“用户”的范围)身份验证条件来检查管理员级别的状态。如果当前用户不是管理员,THAT 条件会重定向到主页。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-13
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多