NoMethodError (set_result) в SQLite3 при запуске Geocommons Geocoder с использованием irb в Mac OS X 10.5.8 - PullRequest
0 голосов
/ 15 июля 2010

Кто-нибудь здесь сталкивался со следующей ошибкой после установки и попытки запуска геокодера Geocommons в Mac OS X 10.5.8?Это мой точный вывод из окна терминала из точки, с которой я запустил 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 для округа Ориндж, Калифорния - я скачал только егоиз основной базы данных Census, а не из всего набора данных США, потому что я просто тестирую полезность Geocoder для программного обеспечения, которое я хочу написать, и я не хотел тратить 10 часов на загрузку нескольких ГБ данных, которые я мог бы не использоватьв любом случае в конечном продукте.

Мои лучшие догадки по объяснению этого поведения на основе информации, которую я нашел в классе SQLite3 :: Database :: FunctionProxy, следующие:

  1. MySQLite3 установлен правильно, но что-то настроено неправильно, так что мой геокодер не находит set_result должным образом.
  2. Мой SQLite3 установлен неправильно, но я не уверен, в чем я ошибся при настройке.

Если бы кто-нибудь мог предложить какую-либо помощь в этом, я был бы очень признателен.Заранее благодарю за помощь!

Ответы [ 2 ]

0 голосов
/ 26 июня 2011

Вам необходимо использовать версию 1.2.5 sqlite3-ruby гема.

gem install sqlite3-ruby --version=1.2.5

Вы можете убедиться, что нет других гемов, предоставляющих sqlite3 (например, sqllite3 или более новую версию sqllite3-ruby) или явно требуете эту версию этого драгоценного камня.

0 голосов
/ 16 июля 2010

Попробуйте использовать эту версию Sqlite Ruby Gem: http://github.com/schuyler/sqlite3-ruby

...