2010-07-15 29 views
0

Quelqu'un at-il déjà rencontré l'erreur suivante après avoir installé et tenté d'exécuter le Geocommons geocoder sous Mac OS X 10.5.8? Ceci est ma sortie exacte de la fenêtre du Terminal du point où j'ai commencé irb:NoMethodError (set_result) dans SQLite3 lors de l'exécution de Geocommons Geocoder avec irb sur Mac OS X 10.5.8

$ 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>> 

Soit dit en passant, « orangeca.db » est les données TIGER/Line pour Orange County, Californie - Je ne téléchargé depuis le base de données du recensement plutôt que l'ensemble des données américaines car je ne fais que tester l'utilité de Geocoder pour un logiciel que je veux écrire et je ne voulais pas passer 10 heures à télécharger plusieurs Go de données que je n'utiliserais peut-être pas dans le produit final de toute façon.

Mes meilleures estimations à expliquer ce comportement, en fonction des informations que je trouve sur la base de données SQLite3 :: :: classe FunctionProxy, sont les suivantes:

  1. Mon SQLite3 est correctement installé, mais quelque chose est mal configuré de telle sorte que mon Geocoder ne trouve pas set_result comme souhaité.
  2. Mon SQLite3 est incorrectement installé, mais je ne suis pas sûr d'où je me suis trompé en le configurant.

Si quelqu'un pouvait vous aider, je l'apprécierais énormément. Merci d'avance pour votre aide!

Répondre

0

Essayez d'utiliser cette version de SQLite Ruby Gem: http://github.com/schuyler/sqlite3-ruby

+0

Je pensais que je l'ai déjà fait - avez-vous utilisé des options spéciales lors de l'installation? –

+0

Comment avez-vous installé SQLite3? De la source ou en utilisant Macports? – wonderchook

+0

J'ai installé le SQLite3 original à partir de la source en téléchargeant sqlite-amalgamation-3.6.23.1.tar.gz depuis http://www.sqlite.org/download.html et en procédant de là. J'ai obtenu le Rubis Gem de SQLite corrigé de Schuyler, d'un autre côté, en utilisant RubyGems (c'est-à-dire en tapant 'sudo gem install sqlite3-ruby' dans Terminal). –

0

Vous devez utiliser la version 1.2.5 de la gemme sqlite3-ruby.

gem install sqlite3-ruby --version=1.2.5 

Vous pouvez vous assurer qu'il n'y a pas d'autres pierres précieuses fournissant sqlite3 (comme sqllite3 ou une version plus récente de sqllite3-ruby) ou d'exiger explicitement cette version de ce joyau.