设置Figaro gem时未初始化的常量Project(NameError)

时间:2013-12-04 04:01:12

标签: ruby-on-rails ruby-on-rails-3.2

我将Rails 2.3应用程序更新为3.2,这似乎是一个非常简单的过程,但在设置Figaro gem时我遇到了这个错误:

C:\Sites\JustManage>rails generate figaro:install
C:/Sites/JustManage/config/environment.rb:5:in `<top (required)>': uninitialized
 constant Projectmanagement (NameError)
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.1
/lib/rails/application.rb:103:in `require_environment!'
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/railties-3.2.1
/lib/rails/commands.rb:25:in `<top (required)>'
        from script/rails:6:in `require'
        from script/rails:6:in `<main>'

以下是 environment.rb 的内容:

# Load the rails application
require File.expand_path('../application', __FILE__)

# Initialize the rails application
Projectmanagement::Application.initialize!

这是我的 application.rb 文件:

require File.expand_path('../application', __FILE__)

require 'rails/all'

if defined?(Bundler)
  Bundler.require(*Rails.groups(:assets => %w(development test)))
end

module Railsapp
  class Application < Rails::Application
    config.encoding = "utf-8"

    config.filter_parameters += [
      :password,
      :password_clear,
      :password_verify
    ]

    config.assets.enabled = true
    config.assets.version = '1.0'

  end
end

我以前从未遇到过这个错误,也不知道为什么会这样。

2 个答案:

答案 0 :(得分:4)

您的应用程序的名称似乎在需要显示的不同位置不同。请检查以下文件,看看它们是否包含Projectmanagement::ApplicationRailsapp::Application

  • config / application.rb(实际初始化常量)
  • 到config / environment.rb
  • 配置/环境/ development.rb
  • 配置/环境/ production.rb
  • 配置/环境/ test.rb
  • 配置/初始化/ secret_token.rb
  • 配置/初始化/ session_store.rb
  • config / mongoid.yml(如果使用Mongoid)
  • 配置/ routes.rb中
  • config.ru
  • Rake文件
  • app / views / layouts / application.html.erb,标题标记

然后选择一个名称(ProjectmanagementRailsapp)并更改上述文件中的所有名称,使其匹配。这应该解决你正在经历的未初始化的常数错误。

答案 1 :(得分:1)

我无法确定它们不是复制/粘贴错误,但您的application.rb似乎不正确。我看到的问题:

  • L1:您需要application.rb第二次需要boot.rb
  • L12:此模块的名称(即您的应用名称)与environment.rb文件(RailsappProjectmanagement)中的内容不一致。

第二个问题实际上是导致你看到的错误 - 在调用方法之前你还没有定义Projectmanagement常量。