【问题标题】:Uninitialized constant error message after a typo done while installing devise gem安装 devise gem 时出现拼写错误后未初始化的常量错误消息
【发布时间】:2012-12-03 23:37:13
【问题描述】:

我刚开始学习如何编程,但是已经使用 Ubuntu 几年了,所以我对研究问题和错误非常熟悉,但是这个领域对我来说太新了,或者我真的找不到任何具体的答案为此。

我正在参加 ruby​​ on rails 介绍课程,到了必须安装 devise gem 的地步,这就是我犯错的地方。

在按照the devise github page 上的说明操作时,我不小心输入了:

rails generate devise install

而不是

rails generate devise:install

现在,每当我尝试加载时

铁轨

我收到此错误消息:

/home/amer/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/inflector/methods.rb:230:in `block in constantize': uninitialized constant Install (NameError)
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/inflector/methods.rb:229:in `each'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/inflector/methods.rb:229:in `constantize'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise.rb:256:in `get'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise/mapping.rb:77:in `to'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise/mapping.rb:72:in `modules'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise/mapping.rb:89:in `routes'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise/mapping.rb:156:in `default_used_route'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise/mapping.rb:66:in `initialize'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise.rb:290:in `new'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise.rb:290:in `add_mapping'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise/rails/routes.rb:208:in `block in devise_for'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise/rails/routes.rb:207:in `each'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/devise-2.1.2/lib/devise/rails/routes.rb:207:in `devise_for'
from /home/amer/Documents/Rails_Projects/omrails/omrails1/config/routes.rb:3:in `block in <top (required)>'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.2.9/lib/action_dispatch/routing/route_set.rb:282:in `instance_exec'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.2.9/lib/action_dispatch/routing/route_set.rb:282:in `eval_block'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/actionpack-3.2.9/lib/action_dispatch/routing/route_set.rb:260:in `draw'
from /home/amer/Documents/Rails_Projects/omrails/omrails1/config/routes.rb:1:in `<top (required)>'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application/routes_reloader.rb:40:in `each'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application/routes_reloader.rb:40:in `load_paths'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application/routes_reloader.rb:16:in `reload!'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application/routes_reloader.rb:26:in `block in updater'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/file_update_checker.rb:78:in `call'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/file_update_checker.rb:78:in `execute'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application/routes_reloader.rb:27:in `updater'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application/finisher.rb:66:in `block in <module:Finisher>'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/initializable.rb:30:in `instance_exec'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/initializable.rb:30:in `run'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/initializable.rb:55:in `block in run_initializers'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/initializable.rb:54:in `each'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/initializable.rb:54:in `run_initializers'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/application.rb:136:in `initialize!'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /home/amer/Documents/Rails_Projects/omrails/omrails1/config/environment.rb:5:in `<top (required)>'
from /home/amer/Documents/Rails_Projects/omrails/omrails1/config.ru:4:in `block in <main>'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
from /home/amer/Documents/Rails_Projects/omrails/omrails1/config.ru:1:in `new'
from /home/amer/Documents/Rails_Projects/omrails/omrails1/config.ru:1:in `<main>'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/commands/server.rb:46:in `app'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/commands/server.rb:70:in `start'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/commands.rb:55:in `block in <top (required)>'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/commands.rb:50:in `tap'
from /home/amer/.rvm/gems/ruby-1.9.3-p327/gems/railties-3.2.9/lib/rails/commands.rb:50:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

在此处发布之前,我尝试重新安装 ruby​​ 1.9.3。使用 rvm。我尝试使用

rvm gemset empty [gemset_name]

正如RVM: Uninstalling all gems of a gemset 中所述,但这也没有真正的帮助。

我该怎么办?谁能向我解释这里发生了什么?

【问题讨论】:

    标签: ruby-on-rails ubuntu devise ruby-1.9.3 ruby-on-rails-3.2


    【解决方案1】:

    我了解您的问题。 你写了rails generate devise install。这意味着您已将install 关联为模型来设计而不是配置它。所以您的文件是在没有设计配置的情况下创建的。

    您只需按照我写的内容进行操作即可:
    1)在'/config/initializers'中创建一个devise.rb文件
    2) 在里面写下如下代码:

    Devise.setup do |config|
    config.mailer_sender = "devise@example.com"
    config.scoped_views = true
    require 'devise/orm/active_record'#[这对你有用]
    config.case_insensitive_keys = [ :email ]
    config.strip_whitespace_keys = [ :email ]
    config.skip_session_storage = [:http_auth]
    config.stretches = Rails.env.test? ? 1 : 10
    config.reconfirmable = true
    config.reset_password_within = 6.hours
    config.sign_out_via = :delete
    end

    2) 并在终端中写入rails destroy devise install。就是这样。
    我认为上述方法肯定会奏效。

    3) 现在再次启动您的服务器rails s
    4) 再次小心安装设备。继续吧。

    【讨论】:

    • 嘿! @VenkatK 感谢您的回答。我按照您的步骤进行操作,但是当我运行rails destroy devise install 时,我再次看到了相同的错误消息。以/home/amer/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-3.2.9/lib/active_support/inflector/methods.rb:230:in block in constantize 开头': uninitialized constant Install (NameError)` 等等。
    • @user1861553 如果再次出现这种情况,最好删除手动运行rails destroy devise install 时创建的那些文件。并重启服务器。
    【解决方案2】:

    我认为您没有 gem 问题,只是混淆了 Devise 设置,这很可能很容易被混淆。

    当您运行 Devise 生成器(使用 rails generate Devise:something)时,它会运行代码以在您的应用程序树 (app/*) 中创建一些特定于您的应用程序的文件。我正在查看 Devise 安装,并认为它主要位于 app/views/devise 目录中,但它也可能会更新您的用户模型。它肯定会更新您的app/routes.rb 文件并在config/initializers 中创建一个文件。可能还有其他人。

    删除其中任何一个。语言环境中可能还有其他文件,db/migrate(有迁移 - 不要运行它,或者在删除之前运行rake db:rollback)。

    然后重新运行安装。

    如果这不起作用,另一种方法是创建一个新的虚拟 Rails 应用程序,在那里安装设计,然后查看创建了哪些文件——通常生成器会报告它们在做什么。

    【讨论】:

    • 这些文件都不存在,而且似乎没有改变任何东西是 routes.rb。当我运行“rake db:rollback”命令时,我得到一个初始化的常量设计错误。
    • 好的,我认为很有可能是您的 Rails 应用程序中已由 Devise 安装的 something 导致了问题。仔细检查堆栈跟踪表明environment.rbroutes.rb 或者可能在initializers 目录中创建了一个文件。 @VenkatK 可能是正确的,第一次不正确的运行试图将设计与不存在的模型安装相关联,但无论如何,你应该从你的应用程序中删除任何东西(包括从Gemfile.rb 对设计 gem 的引用) .这对源代码控制很有用:-)
    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多