【问题标题】:How do I get an installed ruby gem included in Rails?如何获得包含在 Rails 中的已安装 ruby​​ gem?
【发布时间】:2009-03-28 22:57:31
【问题描述】:

我正在尝试让我安装的 gem 在 Rails 应用程序中工作。我可以在从命令行运行的 Ruby 程序中很好地要求 gem:

require 'nokogiri'

但是当我尝试在我的一个 Rails 控制器中执行相同操作时,它会出错,提示“没有要加载的此类文件 -- nokogiri”。

我尝试使用 lib/nokogiri.rb 文件的完整路径,但由于找不到“nokogiri/native”而失败。

【问题讨论】:

    标签: ruby-on-rails ruby rubygems nokogiri


    【解决方案1】:

    最好将以下内容放在你的 environment.rb 文件中:

    Rails::Initializer.run do |config|
      ...
      config.gem :nokogiri
      ...
    end
    

    这将告诉 Rails 你依赖于那个特定的 gem。它还允许您指定特定版本,它会自动保持所有 gem 同步,或者如果您愿意,可以将它们解压缩到 vendor/gems 中。

    【讨论】:

    • +1 这是一个更好的长期解决方案,但我认为他可能安装了错误的 gem。
    【解决方案2】:

    我遇到了类似的错误,但只是忘记在我的 environment.rb 文件中添加以下内容:(注意引用的 "nokogiri"

    Rails::Initializer.run do |config|
      ...
      config.gem "nokogiri"
      ...
    end
    

    【讨论】:

      【解决方案3】:

      好的,我想通了。这听起来很愚蠢......但是哦,好吧......

      原来我的机器上安装了两个 ruby​​。我使用 InstantRails 为我的测试应用程序提供服务,它预装了 ruby​​ 安装包。我有另一个安装但在此之外,它是在这里安装 nokogiri,而不是在 InstantRails 中的安装中。

      无论如何,他们在不同的地方寻找宝石。

      【讨论】:

        【解决方案4】:

        试试下面的

        require 'rubygems'  
        gem 'nokogiri'  
        

        如果您使用某种形式的 *nix,那么您在安装 gem 时是否遇到任何错误,特别是指出 gem 不在路径上的错误。如果您以自己而不是 root 身份安装了 gem,并且您的 gem 路径中没有您的个人 gem 库,则可能会发生这种情况。

        如果你总是使用

        安装你的gem
        sudo gem install some_gem_name 
        

        那么你应该不会遇到这个问题。

        【讨论】:

        • 这给出了:找不到 RubyGem nokogiri (>= 0) 可以用不同的名称命名吗?
        • 见稍后编辑。你是在windows还是某种形式的*nix上运行
        • 嗯。在那种情况下,我会尝试 Brian 的解决方案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-31
        • 1970-01-01
        相关资源
        最近更新 更多