5

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>'

ソースコードはとてもシンプルです:

require 'sinatra'
require 'mechanize'

get '/' do
   # mechanize stuff
end

いくつかの調査を行ったところ、2 つの gem が別々に機能することがわかりましたが、それらを組み合わせるだけで問題が発生します。誰が問題が何であるかを指摘できますか?

4

3 に答える 3

0

iltempo と user2632580 が述べたように、これが失敗する理由は、Sinatra がデフォルトで試行するサーバーのリストであり、Mechanize gem がオーバーライドした HTTP で失敗します。

これを克服する別の方法は、 http://www.sinatrarb.com/configuration.htmlのドキュメントに従って、Sinatra に別のサーバーのリストを提供して試すことです(「組み込みの設定」>「:server」を参照)。 .

スクリプト例:

require 'sinatra'
require 'mechanize'

set :server, %w[thin puma reel webrick]

get '/' do
   "Hello world!"
end

Sinatra::Base::serverこの例のリストは、マイナスの現在の値に基づいていますHTTP

于 2015-04-06T16:02:24.480 に答える