NameError:未定义的局部变量或main:Object的方法`request'

时间:2016-08-15 00:59:18

标签: sinatra rack rails-geocoder

我正在构建一个Sinatra应用程序,它将获取访问者的IP地址并返回该位置的天气。在Geocoder doc之后,似乎获取IP就像

一样简单
city = request.location.city

然后输入到irb中,只会给出你在帖子标题中看到的NameError。在我看来逻辑路径并尝试创建一个使用request方法的新类会导致另一个NameError - 这次是env所采用的Rack::Request.new(env)哈希。 / p>

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

1 个答案:

答案 0 :(得分:1)

就这么简单:

require "sinatra"
require "geocoder"

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

您的问题是,您试图在irb中运行它,而您还没有创建和填充请求对象的请求的上下文。为了玩它,我建议只运行sinatra。或者使用类似rackshtux的内容,它会为您提供类似irb但需要所有上下文的内容。