Geokit в Ruby on Rails, проблема с act_as_mappable

я просмотрел список связанных вопросов, однако моя проблема, похоже, не указана, и, следовательно, вот она:

В основном я пытаюсь использовать Geokit в среде Ruby on Rails, я не уверен, правильно ли я его установил, я включил его в environment.rb (и выполнил rake db: install), и теперь я пытаюсь сделать следующий:

require 'active_record'
require 'geokit'

class Store < ActiveRecord::Base
    acts_as_mappable
end

К сожалению, когда я пытаюсь запустить это и посмотреть, все ли в порядке, я получаю следующую ошибку:

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.3.4/lib/active_record/base.rb:1959:in `method_missing': undefined local variable or method `acts_as_mappable' for #<Class:0x4cd261c> (NameError)
    from C:/Users/Erika/Documents/Visual Studio 2008/Projects/StoreLocator/StoreLocator/app/models/store.rb:5

Я запускаю Ruby in Steel для Visual Studio 2008, я не уверен, что делаю неправильно, так как все онлайн-руководства, которые я нахожу, имеют тенденцию быть довольно старыми и применимы ко мне. Любая помощь будет принята с благодарностью. Спасибо!

Изменить: (добавление согласно запросу Бена) Вот как выглядит мой environment.rb

# Be sure to restart your server when you modify this file

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.3.4' unless defined? RAILS_GEM_VERSION

# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|
  # Settings in config/environments/* take precedence over those specified here.
  # Application configuration should go into files in config/initializers
  # -- all .rb files in that directory are automatically loaded.

  # Add additional load paths for your own custom dirs
  # config.load_paths += %W( #{RAILS_ROOT}/extras )

  # Specify gems that this application depends on and have them installed with rake gems:install
  # config.gem "bj"
  # config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
  # config.gem "sqlite3-ruby", :lib => "sqlite3"
  # config.gem "aws-s3", :lib => "aws/s3"
  config.gem "geokit"
  config.gem "ym4r"

  # Only load the plugins named here, in the order given (default is alphabetical).
  # :all can be used as a placeholder for all plugins not explicitly named
  # config.plugins = [ :exception_notification, :ssl_requirement, :all ]

  # Skip frameworks you're not going to use. To use Rails without a database,
  # you must remove the Active Record framework.
  # config.frameworks -= [ :active_record, :active_resource, :action_mailer ]

  # Activate observers that should always be running
  # config.active_record.observers = :cacher, :garbage_collector, :forum_observer

  # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
  # Run "rake -D time" for a list of tasks for finding time zone names.
  config.time_zone = 'UTC'

  # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
  # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}')]
  # config.i18n.default_locale = :de
end

# These defaults are used in GeoKit::Mappable.distance_to and in acts_as_mappable
GeoKit::default_units = :kms
GeoKit::default_formula = :sphere

# This is the timeout value in seconds to be used for calls to the geocoder web
# services.  For no timeout at all, comment out the setting.  The timeout unit
# is in seconds. 
#GeoKit::Geocoders::timeout = 3

# These settings are used if web service calls must be routed through a proxy.
# These setting can be nil if not needed, otherwise, addr and port must be 
# filled in at a minimum.  If the proxy requires authentication, the username
# and password can be provided as well.
GeoKit::Geocoders::proxy_addr = nil
GeoKit::Geocoders::proxy_port = nil
GeoKit::Geocoders::proxy_user = nil
GeoKit::Geocoders::proxy_pass = nil

# This is your yahoo application key for the Yahoo Geocoder.
GeoKit::Geocoders::yahoo = 'REPLACE_WITH_YOUR_YAHOO_KEY'

# This is your Google Maps geocoder key. 
GeoKit::Geocoders::google = 'apikey'

# This is your username and password for geocoder.us.
# To use the free service, the value can be set to nil or false.  For 
# usage tied to an account, the value should be set to username:password.
GeoKit::Geocoders::geocoder_us = false 

# This is your authorization key for geocoder.ca.
# To use the free service, the value can be set to nil or false.  For 
# usage tied to an account, set the value to the key obtained from
# Geocoder.ca.

GeoKit::Geocoders::geocoder_ca = false

# This is the order in which the geocoders are called in a failover scenario
# If you only want to use a single geocoder, put a single symbol in the array.
# Valid symbols are :google, :yahoo, :us, and :ca.
# Be aware that there are Terms of Use restrictions on how you can use the 
# various geocoders.  Make sure you read up on relevant Terms of Use for each
# geocoder you are going to use.
GeoKit::Geocoders::provider_order = [:google]

person Erika    schedule 15.11.2009    source источник


Ответы (2)


acts_as_mappable является частью геокита-рельсов. Вам необходимо установить плагин geokit-rails.

script/plugin install git://github.com/andre/geokit-rails.git

Чтобы проверить, правильно ли установлен плагин, загляните в каталог vendor/plugins вашего приложения Rails. У него должен быть подкаталог geokit-rails. В нем вы найдете все файлы плагинов, другие подкаталоги, включая файл acts_as_mappable.rbvendor\plugins\geokit-rails\lib\geokit-rails).

Если кажется, что все установлено правильно, попробуйте добавить "require geokit" в начало файла init.rb в корневой папке плагина (vendor\plugins\geokit-rails).

Обязательно перезапустите сервер приложений после внесения изменений.

person JRL    schedule 15.11.2009
comment
О боже ты прав. Пользуюсь плагином, даже не задумывался о роли гема. Все еще сильно сбит с толку require "active_record" бизнесом. - person Ben; 16.11.2009
comment
Когда я установил его, он сказал мне, что он уже установлен, я должен сделать что-то еще, кроме его установки, пожалуйста? возможно, это путает его с другим гео-набором? большое спасибо за помощь обоим - person Erika; 16.11.2009
comment
после попытки и повторной попытки должна быть какая-то проблема. Когда я пытаюсь установить вышеупомянутый плагин, он продолжает говорить, что плагин не найден: [], когда я запускаю его с --trace. Есть идеи? - person Erika; 16.11.2009
comment
Большое спасибо, решение состояло в том, чтобы загрузить заархивированную версию кода с ‹code› github.com/andre /geokit-rails ‹/code› (похоже, у меня проблемы со скриптом/установкой). Запуск файла install.rb полностью решил проблему. еще раз спасибо - person Erika; 16.11.2009

Какой метод вы используете для включения библиотеки geokit? Плагин? Драгоценный камень? Драгоценный камень распаковывается в продавца? Как выглядит ваш environment.rb?

Изменить: я хотел оставить это как комментарий к вопросу - извините.

person Ben    schedule 15.11.2009
comment
Я добавил драгоценный камень в проект, но в папках моего проекта файл поставщика пуст. Я обновил свой пост, чтобы добавить информацию о файле environment.rb, который довольно пуст. Большое спасибо за вашу помощь - person Erika; 16.11.2009
comment
Единственное необычное, что я вижу, сравнивая это с некоторыми из моих проектов, это то, что вам требуются активная запись и геокит в вашем файле модели - это не нужно и может вызвать сложности. Удалите эти две строки и повторите попытку. Если это не сработает, попробуйте выполнить rake gems:unpack для продажи ваших драгоценных камней. - person Ben; 16.11.2009
comment
Спасибо, я сделал rake gems:unpack, однако в файле модели, если я не укажу require ...., то даже активная запись не распознается. Я также добавил некоторый код в свой файл environment.rb (еще одно редактирование). Я все еще потерян, к сожалению :s - person Erika; 16.11.2009
comment
Есть ли что-то нестандартное в этом приложении Rails или в том, как вы его вызываете? Вам определенно не нужно требовать activerecord - я думаю, у вас проблемы посерьезнее. - person Ben; 16.11.2009
comment
я не знаю, почему, но во время миграции для создания того, что мне нужно, он использует ActiveRecord, и когда я пытаюсь разгребать файл, он не будет выполняться, если я не добавлю «require ..» =/ (я просто новичок в Рубин на рельсах) - person Erika; 16.11.2009
comment
я пытаюсь заставить это сделать: / видя, что большинство руководств либо устарели, обесценились и т. д., для тех, кто плохо знаком с языком, не так просто обойти вещи =\ - person Erika; 16.11.2009
comment
Под моим вопросом я имею в виду, работало ли это приложение до того, как вы добавили функциональность геокита? Можете ли вы создать базовое приложение для рельсов и заставить его работать? В проекте Rails Guides есть актуальные руководства. guides.rails.info - person Ben; 16.11.2009
comment
базовый каркас работает да, однако, когда я установил надстройку geokit-rails, кажется, что это только добавляет пустую папку в поставщика/плагины! Судя по внешнему виду, возможно, он неправильно установлен или что-то в этом роде. - person Erika; 16.11.2009
comment
Большое спасибо, я наконец решил проблему, загрузив код в zip, запустив установочный файл rb, а также просто выбросил свой предыдущий проект и перезапустил его, похоже, мне не нужно было каждый раз добавлять require active_record после всего! большое спасибо за вашу помощь - person Erika; 16.11.2009