2016-08-15 71 views
0

我正在构建一个Sinatra应用程序,它将访问访客的IP地址并返回该位置的天气。继地理编码doc,它似乎是获得IP很简单,只要NameError:未定义的本地变量或方法`请求'为主:对象

city = request.location.city 

进入该进IRB,但是,只是给你的文章标题看NameError。对我而言逻辑路线,并试图创建一个新的类使用request方法会导致另一个NameError - 这次是由Rack::Request.new(env)采取的env散列。

我可以弄清楚如何自己构建这个东西,但是我很困惑这个问题,并且假设我忽略了文档中没有提到的东西。我做错了什么导致requestenv保持未定义状态,我该如何正确定义它们?

回答

1

它是如此简单:

require "sinatra" 
require "geocoder" 

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

你的问题是,你想运行在irb,你有没有创建并填充您的请求对象的请求的情况下。为了玩它,我会建议只运行sinatra。或者使用类似racksh,tux的东西,它给了你一些像irb一样的东西,但需要所有的上下文。

相关问题