加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 3.2中的ActionController :: Dispatcher

发布时间:2020-12-17 02:43:58 所属栏目:百科 来源:网络整理
导读:我正在按照Rails 3的方式进行示例,当我尝试使用ActionController :: Dispatcher.new.call(env).last.body向控制台中的调度程序发送请求时 我有 1.9.3p194:001 ActionController的:: Dispatcher.new.call(ENV).last.body NameError:未初始化的常量ActionCon
我正在按照Rails 3的方式进行示例,当我尝试使用ActionController :: Dispatcher.new.call(env).last.body向控制台中的调度程序发送请求时

我有

1.9.3p194:001> ActionController的:: Dispatcher.new.call(ENV).last.body
NameError:未初始化的常量ActionController :: Dispatcher’

我使用rails 3.2.6,我检查了rails api并发现他们在ActionController中删除了调度程序,但rails指南说:ActionController :: Dispatcher.new是Rails应用程序的主要Rack应用程序对象.任何符合Rack的Web服务器都应该使用ActionController :: Dispatcher.new对象来为Rails应用程序提供服务.

我找到了rails api的v3.0.7,Dispatcher仍然存在于该版本中.

所以,这是我的问题:如何找到作为ActionController.Dispatcher.new的等效方法?鉴于我的应用程序与rails 3.2.6配合良好,哪部分rails现在扮演ActionController.Dispatcher的角色?

解决方法

这是Rails边缘指南关于主要Rack应用程序对象的说法:

ApplicationName::Application is the primary Rack application object of a Rails application. Any Rack compliant web server should be using ApplicationName::Application object to serve a Rails application.

所以ActionController :: Dispatcher.new刚刚被ApplicationName :: Application取代.我不确定他们什么时候做这个转换.这对我有用:

Blog::Application.call(env).last.body

??

(NoMethodError之后的前几行:未定义的方法’key?’为nil:NilClass告诉我们在actionpack-3.2.11 / lib / action_dispatch / routing / route_set.rb中调用了key?方法.从那里向后工作,我们可以看到变量

params = env['action_dispatch.request.path_parameters']

什么时候不应该是零.所以我们可以在控制台中设置env [‘action_dispatch.request.path_parameters’],但这会导致在initialize方法中设置的nil对象上出现另一个NoMethodError.所以我们可以通过将选项哈希传递给Dispatcher.new来解决这个问题,但最好只使用ApplicationName :: Application.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读