ruby-on-rails – Rails 3.2中的ActionController :: Dispatcher
我正在按照Rails 3的方式进行示例,当我尝试使用ActionController :: Dispatcher.new.call(env).last.body向控制台中的调度程序发送请求时
我有 1.9.3p194:001> ActionController的:: Dispatcher.new.call(ENV).last.body 我使用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应用程序对象的说法:
所以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.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |