【问题标题】:Geokit Gem :Uninitialized ConstantGeokit Gem:未初始化的常量
【发布时间】:2014-06-19 00:04:20
【问题描述】:

所以我只想从常规地址(字符串)中提取经度/纬度坐标。我去了 geokit gem 文档并准确地做了记录的内容,但我一直收到这个错误:“NameError: uninitialized constant Geokit::Geocoders::OpenSSL”

我在 gemfile 中添加了“geokit”,并且:

require 'rubygems'
require 'geokit'




def get_coordinates
  @a = Geokit::Geocoders::GoogleGeocoder.geocode '140 Market St, San Francisco, CA'
  @a.ll
end

我之前也尝试过添加这个,但无济于事。 Geokit::Geocoders::GoogleGeocoder.api_key = api_key

我只想要坐标,如果这不是一个可行的解决方案,有人可以推荐另一个地理编码器。我尝试了railscasts,但也无法让它工作。任何帮助将不胜感激!

【问题讨论】:

  • 大家好,我是geokit的维护者。我们在 ruby​​ 1.8 - 2.1 上运行测试。我想知道在编译 ruby​​ 或没有用 openssl 编译 ruby​​ 时你是否以某种方式没有 OpenSSL。您能否通过告诉我 2 个命令的输出来帮助我:openssl 版本和 ruby​​ -ropenssl -e "require 'openssl'; OpenSSL"正确的调试命令等
  • 我必须明确地require 'openssl'(在 ruby​​ 2.0.0 上测试)才能使这个错误消失(就像@Anastasia 回答 BTW)。
  • 我和 OP 有同样的问题。我在 Mac 上运行 Mavericks,并且正在使用 Ruby 2.1。当我在 irb 中运行这些命令时,只要我首先需要 openssl,geokit 就可以工作。但是,在我的 Padrino 应用程序中,我收到了相同的错误消息(“未初始化的常量 Geokit”),即使我在那里也明确需要 openssl。 Geokit 在我的 Gemfile 中,已安装,并且还出现在我的 Padrino 应用程序的“外部库”下。 openssl 版本产生:“OpenSSL 0.9.8zc 201 年 10 月 15 日。”当我运行 ruby​​ 命令时,我没有得到任何响应,只是回到提示符。
  • 好吧,我错了。通常工头(heroku padrino 守护进程)会在不需要重新启动的情况下进行更改,但在这种情况下不会。不过,它在重新启动后确实有效。

标签: geokit


【解决方案1】:

添加 require 'openssl'require 'geokit'.

Geokit 不会自动包含所需的 OpenSSL gem。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • @YanSklyarenko 你是什么意思?这是问题的解决方案,添加建议的行使我的脚本运行。
  • @nathanvda,这可能是一个解决方案(尽管作者尚未接受答案),但更多解释可能会有所帮助。
  • 答案对我来说非常清楚。收到的错误是抱怨缺少(标准)库,Anastasia 正确回答应该明确包括在内。没有什么可以解释的了。很多低分用户根本不知道如何使用该网站,所以我猜这就是为什么 OP 没有接受答案。或者他已经转向别的事情了。这个答案是对我的回答,所以恕我直言,您的评论是错误的。
【解决方案2】:

我在旧的 Ubuntu Lucid 上运行旧的 Rails 应用程序时遇到了同样的问题。我安装了一个旧版本的 geokit gem (1.5.0),它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多