0

在 Mac OS X 10.5.8 上安装并尝试运行Geocommons 地理编码器后,这里有没有人遇到过以下错误?这是我从启动 irb 时终端窗口的确切输出:

$ irb
>> require 'geocoder/us'
=> true
>> db = Geocoder::US::Database.new("/opt/tiger/orangeca.db")
=> #<Geocoder::US::Database:0x57ac10 @threadsafe=false, @db=#<SQLite3::Database:0x57ab98>, @debug=false, @st={}>
>> p db.geocode("Disneyland Anaheim, CA 92802")
NoMethodError: undefined method `set_result' for #<SQLite3::Database::FunctionProxy:0x576778>
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:64:in `tune'
from /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.0/lib/sqlite3/database.rb:316:in `call'
from /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.0/lib/sqlite3/database.rb:316:in `create_function'
from /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.0/lib/sqlite3/resultset.rb:66:in `call'
from /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.0/lib/sqlite3/resultset.rb:66:in `step'
from /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.0/lib/sqlite3/resultset.rb:66:in `next'
from /Library/Ruby/Gems/1.8/gems/sqlite3-ruby-1.3.0/lib/sqlite3/resultset.rb:97:in `each'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:138:in `execute_statement'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:46:in `synchronize'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:46:in `synchronize'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:135:in `execute_statement'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:122:in `execute'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:151:in `places_by_zip'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:339:in `find_candidates'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:654:in `geocode_address'
from /Library/Ruby/Gems/1.8/gems/Geocoder-US-2.0.0/lib/geocoder/us/database.rb:724:in `geocode'
from (irb):3>>  

顺便说一句,“orangeca.db”是加利福尼亚州奥兰治县的 TIGER/Line 数据——我只从主要的人口普查数据库而不是整个美国数据集中下载了它,因为我只是在测试 Geocoder 对我想要的一个软件的有用性写,我不想花 10 个小时下载几 GB 的数据,我可能最终不会在最终产品中使用这些数据。

根据我在 SQLite3::Database::FunctionProxy 类上找到的信息,我对解释这种行为的最佳猜测如下:

  1. 我的 SQLite3 安装正确,但配置不正确,以至于我的地理编码器没有找到所需的 set_result。
  2. 我的 SQLite3 安装不正确,但我不确定我在哪里设置错误。

如果有人可以提供任何帮助,我将不胜感激。预先感谢您的帮助!

4

2 回答 2

0

您需要使用 1.2.5 版本的sqlite3-rubygem。

gem install sqlite3-ruby --version=1.2.5

您可以确保没有其他 gem 提供 sqlite3(例如 sqllite3 或更新版本的 sqllite3-ruby)或明确需要此 gem 的此版本。

于 2011-06-25T21:38:57.207 回答
0

尝试使用这个版本的 Sqlite Ruby Gem:http: //github.com/schuyler/sqlite3-ruby

于 2010-07-15T20:09:41.980 回答