我使用Mechanize作为命令行实用程序编写了一个简单的Web爬网程序.然后我决定使用Sinatra创建Web应用程序,但在尝试运行本地Web服务器时遇到了这个错误:
/home/nazar/.rvm/gems/ruby-2.0.0-p195/gems/sinatra-1.4.2/lib/sinatra/base.rb:1569:in `run!': undefined method `run' for HTTP:Module (NoMethodError)
from /home/nazar/.rvm/gems/ruby-2.0.0-p195/gems/sinatra-1.4.2/lib/sinatra/main.rb:25:in `block in <module:Sinatra>'
Run Code Online (Sandbox Code Playgroud)
源代码很简单:
require 'sinatra'
require 'mechanize'
get '/' do
# mechanize stuff
end
Run Code Online (Sandbox Code Playgroud)
我经历了一些调查,并设法发现2个宝石分别工作正常,但只有它们合并才会导致问题.任何人都可以指出问题可能是什么?
最有可能的是,您正在重写诸如 get 和 mechanize 之类的方法。尝试将您的 Sinatra 应用程序包装到应用程序类中。这可能会解决问题。
require 'sinatra/base'
class MyApp < Sinatra::Base
get '/' do
# mechanize stuff
end
end
Run Code Online (Sandbox Code Playgroud)
在Sinatra 文档中了解有关该方法的更多信息。