繁体   English   中英

Ruby On Rails:NameError:未初始化的常量Timezone :: Configure

[英]Ruby On Rails: NameError: uninitialized constant Timezone::Configure

红宝石2.3.1p112(2016-04-26修订版54768)[x86_64-darwin15]

导轨4.2

耙,版本10.4.2

我正在接管另一个开发人员的项目。 我能够从Github签出代码,并且能够运行“捆绑安装”。 但是后来我做到了:

  bundle exec rake db:setup
  rake aborted!
  NameError: uninitialized constant Timezone::Configure

这似乎引用了以下内容:

  config/application.rb

该文件看起来像:

  # Pick the frameworks you want:
  require "active_model/railtie"
  require "active_job/railtie"
  # require "active_record/railtie"
  require "action_controller/railtie"
  require "action_mailer/railtie"
  require "action_view/railtie"
  require "sprockets/railtie"
  require "rails/test_unit/railtie"

  # Require the gems listed in Gemfile, including any gems
  # you've limited to :test, :development, or :production.
  Bundler.require(*Rails.groups)

  module Invtr
    class Application < Rails::Application
      Timezone::Configure.begin do |c|
        c.username = 'AIzaSyAtf'
        c.google_api_key = 'AIzaSyAtf'
      end

      # 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.

      # 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. Default is UTC.
      # config.time_zone = 'Central Time (US & Canada)'

      # 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}').to_s]
      # config.i18n.default_locale = :de
    end
  end

有人告诉我这对于以前的开发人员来说是有效的,所以我必须假设问题出在我的设置上。 但是我还需要做什么? 为什么没有加载正确的宝石?

之前的开发人员已将此行放入Gemfile中:

  gem 'timezone'

我看到:

  vendor/cache/ruby/2.3.0/gems/timezone-1.1.1

所以宝石在那里。

但是不知何故它没有被加载到application.rb中。

我的Gemfile:

  source 'https://rubygems.org'

  gem 'rails', '4.2.0'
  gem 'sass-rails', '~> 5.0'
  gem 'uglifier', '>= 1.3.0'
  gem 'coffee-rails', '~> 4.1.0'
  gem 'jquery-rails'
  gem 'turbolinks'
  gem 'jbuilder', '~> 2.0'
  gem 'sdoc', '~> 0.4.0', group: :doc
  gem 'bcrypt', '~> 3.1.7'
  gem 'oauth2'
  gem 'faraday'
  gem 'signet'
  gem 'unicorn'
  gem 'icalendar'
  gem 'quiet_assets', '~> 1.1'
  gem 'mongoid', '~> 5.0.0'
  gem 'bson_ext'
  gem 'devise'
  gem 'pry-rails'
  gem 'capybara'
  gem 'selenium-webdriver'
  gem 'simple_form'
  gem 'foundation-rails'
  gem 'dotenv-rails', :groups => [:development, :test]

  gem "mongoid-paperclip", :require => "mongoid_paperclip"
  gem 'aws-sdk', '~> 1.3.4'

  # CircleCI test metadata formatters
  gem 'rspec_junit_formatter', '0.2.2'
  gem 'rails_12factor', group: :production
  gem 'geocoder'
  gem 'timezone'
  gem "httpclient"

  group :development do
    # gem "letter_opener"
  end

  group :development, :test do
    gem 'byebug'
    gem 'web-console', '~> 2.0'
    gem 'spring'
    gem 'rspec-rails'
    gem 'factory_girl_rails'
    gem 'database_cleaner'
    gem 'faker'
  end

  group :test do
    gem 'shoulda-matchers'
  end

这取决于您使用的timezone gem的版本。 1.0.0版开始,您必须进行以下更改:
config/application.rb文件中,而不是使用:

Timezone::Configure.begin

使用地名进行配置时,应使用:

Timezone::Lookup.config(:geonames)

对于Google:

Timezone::Lookup.config(:google)

同时更新您的Gemfile:

gem 'timezone'更改为gem 'timezone', '~> 1.0'

因此您的代码如下所示:

Timezone::Lookup.config(:geonames) do |c|
    c.username = 'AIzaSyAtf'
end

要么

Timezone::Lookup.config(:google) do |c|
    c.api_key = 'AIzaSyAtf'
end

参考: http : //www.rubydoc.info/gems/timezone

向文件添加require "timezone"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM