机械化和Sinatra冲突

5 ruby mechanize sinatra

我使用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个宝石分别工作正常,但只有它们合并才会导致问题.任何人都可以指出问题可能是什么?

ilt*_*mpo 3

最有可能的是,您正在重写诸如 get 和 mechanize 之类的方法。尝试将您的 Sinatra 应用程序包装到应用程序类中。这可能会解决问题。

require 'sinatra/base'

class MyApp < Sinatra::Base
  get '/' do
    # mechanize stuff
  end
end
Run Code Online (Sandbox Code Playgroud)

在Sinatra 文档中了解有关该方法的更多信息。