【问题标题】:Getting uninitialized constant error from unused gem从未使用的 gem 中获取未初始化的常量错误
【发布时间】:2015-01-05 20:06:39
【问题描述】:

我试图在 Rails 的特定操作中使用 Addressable gem。

我通常的做法是在 Gemfile 中包含 gem,然后在需要的地方 require 模块。

宝石文件:

gem 'addressable'

some_controller.rb:

class SomeController < ApplicationController

  def new
    require "addressable/uri"
    current_url = Addressable::URI.parse(request.original_url)
    ....
  end

end

但是,我在其他未使用 gem 的操作/控制器上收到 500 错误。

故障安全响应期间的错误:未初始化的可寻址常量

最后,我删除了 all 调用可寻址的代码,但将条目保留在 gemfile 中,并且 500 错误在所有操作中仍然存在。为什么会这样?

【问题讨论】:

    标签: ruby-on-rails gem addressable-gem


    【解决方案1】:

    不知道为什么你会得到那个特定的错误,但是使用像 Addressable 这样的 gem,你想要在你的 Gemfile 中自动执行 require 'addressable',你应该有:

    gem 'addressable', :require => false
    

    【讨论】:

    • @smathy- 不走运! :require =&gt; false 没有改变任何东西,仍然会出现所有错误。当我尝试:require =&gt; true 时,我得到了 Bundler 错误:“无法加载此类文件——可寻址(LoadError)”
    • 如果您从 Gemfile 中删除该行,那么错误就会消失?
    • 不!我刚刚从 Gemfile 中删除了 gem 行,运行 bundle install,然后重新启动服务器 - STILL 出现错误 - wtf!?
    • 对,所以要么你的代码中某处有另一个“可寻址”,要么你的应用程序没有正确重启。
    • 唯一可寻址的地方是作为我的 Gemfile.lock 中的 lanuchy gem 的依赖项,但这已经存在了几个月。完全不知道什么是放弃 - 放弃这个,我只需要在我的初始化程序中的模块,它解决了这个废话。感谢您的帮助..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多