【问题标题】:why do I get uninitialized constant Devise name Error when running webrick server?为什么在运行 webrick 服务器时出现未初始化的常量设计名称错误?
【发布时间】:2011-09-26 23:22:12
【问题描述】:

在我的应用程序中,我使用了 ruby​​ 1.9.2 和 rails 3.0.3,并且还安装了 Devise gem。当我运行 Webrick 服务器时出现问题,我得到未初始化的常量 Devise name 错误。

       /home/app/Workspace/project/Library_Management/Library_Management/config/initializers/devise.rb:3:in `<top (required)>': uninitialized constant Devise (NameError)
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/engine.rb:201:in `block (2 levels) in <class:Engine>'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/engine.rb:200:in `each'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/engine.rb:200:in `block in <class:Engine>'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `instance_exec'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/initializable.rb:25:in `run'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/initializable.rb:50:in `block in run_initializers'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `each'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/initializable.rb:49:in `run_initializers'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/application.rb:134:in `initialize!'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/application.rb:77:in `method_missing'
from /home/app/Workspace/project/Library_Management/Library_Management/config/environment.rb:5:in `<top (required)>'
from /home/app/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require'
from /home/app/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require'
from /home/app/Workspace/project/Library_Management/Library_Management/config.ru:3:in `block in <main>'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.3/lib/rack/builder.rb:46:in `instance_eval'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.3/lib/rack/builder.rb:46:in `initialize'
from /home/app/Workspace/project/Library_Management/Library_Management/config.ru:1:in `new'
from /home/app/Workspace/project/Library_Management/Library_Management/config.ru:1:in `<main>'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.3/lib/rack/builder.rb:35:in `eval'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.3/lib/rack/builder.rb:35:in `parse_file'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.3/lib/rack/server.rb:162:in `app'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.3/lib/rack/server.rb:253:in `wrapped_app'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.3/lib/rack/server.rb:204:in `start'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/commands/server.rb:65:in `start'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/commands.rb:30:in `block in <top (required)>'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/commands.rb:27:in `tap'
from /home/app/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.9/lib/rails/commands.rb:27:in `<top (required)>'
from /home/app/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:58:in `require'
from /home/app/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:58:in `rescue in require'
from /home/app/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'

谢谢

【问题讨论】:

  • 是否在您的 Gemfile.lock 中设计?
  • 我得到了错误类型,对我来说它实际上有助于关闭终端并打开一个新终端。可能会有所帮助,但我不会将其发布为答案,因为我不知道是什么原因造成的。
  • 确保在安装新 gem 后重新启动服务器。

标签: ruby-on-rails ruby devise


【解决方案1】:

在你的 config/application.rb 添加require 'yaml'。这个对我有用。试试

【讨论】:

    【解决方案2】:

    我必须在 spec/spec_helper.rb 文件中添加 require 'devise',然后该错误就消失了。

    【讨论】:

      【解决方案3】:

      我刚遇到这个问题,是因为我错误地生成了一个视图模型,我没有从我的 routes.rb 中删除它

      【讨论】:

        【解决方案4】:

        如果您不再使用 devise gem 则删除

        gem 'devise'
        

        从 gemfile 中删除

        config/initializers/devise.rb 
        

        还要确保没有在任何地方使用该设备

        【讨论】:

          【解决方案5】:

          我遇到了类似的问题,我发现了这个https://github.com/plataformatec/devise

          它说你必须做

          rails generate devise:install

          按照该页面上的“入门”让我继续前进

          【讨论】:

            【解决方案6】:

            如果您正在编写具有自己设计配置的引擎,只需添加

            require 'devise'
            

            在设计初始化程序的开头。 就我而言,我在应用程序中没有设计要求:)

            干杯

            【讨论】:

              【解决方案7】:

              我在安装 Devise 后添加了几列,并在我的用户模型中添加了一些验证。 从错误消息来看,rails 似乎找不到必要的库,因此找不到设计。也许检查 Github 设计 Wiki 页面并确保所有依赖项都得到满足?

              希望对您有所帮助!

              【讨论】:

                【解决方案8】:

                检查你的 config/application.rb,你需要添加 require 'devise' 应该没问题。

                【讨论】:

                  【解决方案9】:

                  当我有一个自定义设计控制器来覆盖“新”方法来执行一些自定义操作时,我遇到了类似的错误,而忘记使用“超级”

                  你有自定义控制器吗?

                  【讨论】:

                    【解决方案10】:

                    确保您已在 Gemfile 中列出 Devise 并运行 bundle install

                    【讨论】:

                    • 是的,我已经列出了 devise n 也运行了 bundle install 但我仍然遇到同样的错误..
                    • 在 Configuration/application.rb 中我添加了行 require 'devise' 并且能够解决问题
                    • 另外,请尝试“捆绑更新”,因为它在安装更新时会更加激进。它使用所有依赖项更新所有 gem,这通常可以帮助消除这样的错误。看看ryanbigg.com/2011/01/why-you-should-run-bundle-update
                    • 我仍然遇到同样的问题——奇怪的是,只是在我的开发环境中。我只需要重新启动我的开发服务器并清除它。但是在一次用户登录尝试后,它再次炸毁。我尝试了上面列出的包含,但它们似乎不需要它们——它们对我没有帮助。
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-10-10
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多