ruby-on-rails-3 - 土工工具 - `block (2 levels) in <class:Railtie>' : undefined method

标签 ruby-on-rails-3 geokit rails-3-upgrade

我正在将 Rails 2.3.8 应用程序迁移到 Rails 3.0.20,因此我从使用“gem 'geokit' 1.6.0”改为“gem “geokit-rails”。

我得到:

/Users/alextoul/.rvm/gems/ruby-1.9.3-p484@rails3/gems/geokit-rails-2.0.1/lib/geokit-rails/railtie.rb:33:in `block (2 levels) in <class:Railtie>': undefined method `proxy_addr=' for Geokit::Geocoders:Module (NoMethodError)

我的geokit_config.rb是:

   MyApp::Application.configure do

  # These defaults are used in Geokit::Mappable.distance_to and in acts_as_mappable
   config.geokit.default_units = :miles
   config.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. 
   config.geokit.geocoders.request_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.
   config.geokit.geocoders.proxy_addr = nil
   config.geokit.geocoders.proxy_port = nil
   config.geokit.geocoders.proxy_user = nil
   config.geokit.geocoders.proxy_pass = nil

   # This is your yahoo application key for the Yahoo Geocoder.
   # See http://developer.yahoo.com/faq/index.html#appid
   # and http://developer.yahoo.com/maps/rest/V1/geocode.html
   config.geokit.geocoders.yahoo = 'secret'

   # This is your Google Maps geocoder key. 
   # See http://www.google.com/apis/maps/signup.html
   # and http://www.google.com/apis/maps/documentation/#Geocoding_Examples
   config.geokit.geocoders.google = 'secret'

   # You can also set multiple API KEYS for different domains that may be directed to this same application.
   # The domain from which the current user is being directed will automatically be updated for Geokit via
   # the GeocoderControl class, which gets it's begin filter mixed into the ActionController.
   # You define these keys with a Hash as follows:
   #config.geokit.geocoders.google = { 'rubyonrails.org' => 'RUBY_ON_RAILS_API_KEY', 'ruby-docs.org' => 'RUBY_DOCS_API_KEY' }

   # 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.
   # See http://geocoder.us
   # and http://geocoder.us/user/signup
   config.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.
   # See http://geocoder.ca
   # and http://geocoder.ca/?register=1
   config.geokit.geocoders.geocoder_ca = false

   # require "external_geocoder.rb"
   # Please see the section "writing your own geocoders" for more information.
   # config.geokit.geocoders.external_key = 'REPLACE_WITH_YOUR_API_KEY'

   # 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.
   config.geokit.geocoders.provider_order = [:google,:us]

   # The IP provider order. Valid symbols are :ip,:geo_plugin.
   # As before, make sure you read up on relevant Terms of Use for each.
   # config.geokit.geocoders.ip_provider_order = [:external,:geo_plugin,:ip]

end

当我删除 geokit_config.rb 文件时,服务器启动,但我显然有:

ArgumentError (Unknown key(s): origin, within):

有什么想法吗?

最佳答案

proxy_addr/port/user 和 pass 已替换为代理 这是一个像这样的字符串:

https://user:password@host:port

所以如果你有:

config.geokit.geocoders.proxy_addr = nil
config.geokit.geocoders.proxy_port = nil
config.geokit.geocoders.proxy_user = nil
config.geokit.geocoders.proxy_pass = nil

现在:

config.geokit.geocoders.proxy = nil
PS。您不需要从 geokit 切换到 geokit-rails,事实上它们是不同的。 geokit-rails 是 geokit 加上一些用于 Rails 的东西,比如 Acts_as_mappable。

如果您在升级之前不需要 geokit-rails,那么升级之后也不需要它。如果您需要的话,它只是添加特定于 Rails 的额外项目。

关于ruby-on-rails-3 - 土工工具 - `block (2 levels) in <class:Railtie>' : undefined method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194371/

相关文章:

当我使用远程调用或 jQuery 远程加载部分/内容时,jquery ujs 不起作用

ruby-on-rails - 为移动和桌面客户端提供服务的 Rails 3.1+ 方式

javascript - 有没有带有注释和绘图工具的高级股票图表库?

ruby-on-rails - Geokit ActiveModel::MissingAttributeError: 无法写入未知属性 `within`

ruby-on-rails - Geokit 未定义方法 `acts_as_mappable' rails

ruby-on-rails-3 - Rails 3 CSRF_meta_tag 无法正常工作

ruby-on-rails - Paperclip 2.3.5 到 3.3.1 导致 url 与路径不同

ruby-on-rails - 如何删除重复的验证错误