Ruby 当我运行带有“的rack应用程序时,为什么会出现NameError?”;“货架”;?
使用Ruby 当我运行带有“的rack应用程序时,为什么会出现NameError?”;“货架”;?,ruby,rack,rackup,Ruby,Rack,Rackup,使用rackup运行rack应用程序时遇到问题 这是我的config.ru: $:.unshift "#{File.dirname(__FILE__)}/lib/" require 'blogrite' run Blogrite::Server.new(:with => :test) 调用rackup config.ru抛出: [~/Code/blogrite master] rackup config.ru /Users/josemota/Code/blogrite/lib/blo
rackup
运行rack应用程序时遇到问题
这是我的config.ru:
$:.unshift "#{File.dirname(__FILE__)}/lib/"
require 'blogrite'
run Blogrite::Server.new(:with => :test)
调用rackup config.ru
抛出:
[~/Code/blogrite master] rackup config.ru
/Users/josemota/Code/blogrite/lib/blogrite/server.rb:2:in `<module:Blogrite>': uninitialized constant Blogrite::Server (NameError)
from /Users/josemota/Code/blogrite/lib/blogrite/server.rb:1:in `<top (required)>'
from /Users/josemota/Code/blogrite/config.ru:5:in `block in <main>'
...
[~/code/blogrite master]rackup config.ru
/Users/josemota/Code/blogrite/lib/blogrite/server.rb:2:in`':未初始化常量blogrite::server(NameError)
from/Users/josemota/Code/blogrite/lib/blogrite/server.rb:1:in`'
from/Users/josemota/Code/blogrite/config.ru:5:in'block in'
...
您可以签入完整的项目。我不明白我得到
名称错误的原因
我已经找到了出现此错误的原因。显示的NameError是从模块触发的,模块无法正确识别路径
@道伯特正确地指出,自动加载可能不起作用。根据中的Dave Barker,自动加载的类必须包含$:
/$LOAD\u path
中的当前路径。我做到了,现在它起作用了
现在可以使用。首先感谢@Dogbert指出自动加载问题 如果你做了一个
需要'blogrite/server'
而不是自动加载的操作,它可以正常工作吗?更新:它可以。自动加载是不是搞砸了?它以前是有效的。我不知道为什么现在不行。让我看看。我从来没有用过自动加载。有经验的人可能会回答得更好。谢谢@Dogbert,我会问合适的人。