2016-08-15 5 views
0

私は訪問者のIPアドレスを取得し、その場所の天気を返すSinatraアプリを構築しています。ジオコーダdocに続いて、IPを得ることがIRBにそのを入力NameError:未定義のローカル変数またはメソッド `request 'for main:Object

city = request.location.city 

と同じくらい簡単であるように思わ、しかし、ちょうどあなたが記事のタイトルに表示NameErrorを与えます。論理的なルートになって、 requestメソッドを使用する新しいクラスを作成しようとすると、で取得された envハッシュの別のNameErrorが発生します。

私は自分で物を作る方法を理解することができますが、私はこの特定の点で困惑しており、ドキュメントで言及されていないものを見落としていると仮定します。 requestenvが未定義のまま残っていると私は間違って何をしているのですか?それらを正しく定義するにはどうしたらいいですか?

答えて

1

それはそれと同じくらい簡単です:

require "sinatra" 
require "geocoder" 

get "/" do 
    p request.location.city 
    "works" 
end 

あなたの問題は、あなたが作成し、あなたのリクエストオブジェクトを移入要求のコンテキストを持っていないところirbでそれを実行しようとしているということです。それを再生するには私はsinatraを実行することをお勧めします。またはrackshtuxのようなものを使用してください。これはirbのようなものですが、必要なすべてのコンテキストを備えています。

関連する問題