在Rails中不能要求'nokogiri'(但在irb中可以使用)。[英] Cannot require 'nokogiri' in Rails (but works in irb)

本文是小编为大家收集整理的关于在Rails中不能要求'nokogiri'(但在irb中可以使用)。的处理方法,想解了在Rails中不能要求'nokogiri'(但在irb中可以使用)。的问题怎么解决?在Rails中不能要求'nokogiri'(但在irb中可以使用)。问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我刚刚开始使用 Ruby on Rails,到目前为止它运行良好.我现在正在尝试实现一个 gem,但它不起作用,我希望这只是一个初学者的错误——我还没有掌握的东西!!

我已经按照教程获得了我的 hello world 示例 - 还设法将其 git push 到我的 Heroku 帐户.我开始在这里学习教程:http://railscasts.com/episodes/190-screen-scraping-with-nokogiri 并在终端(在 mac 上)中运行以下代码

require 'rubygems'
require 'nokogiri'
require 'open-uri'

url = "http://www.walmart.com/search/search-ng.do?search_constraint=0&ic=48_0&search_query=batman&Find.x=0&Find.y=0&Find=Find"
doc = Nokogiri::HTML(open(url))
puts doc.at_css("title").text

所以效果很好.我可以在终端内看到标题.但是,当我尝试将此代码放在我的视图控制器中时,它找不到 nokogiri gem.我的控制器中的代码是

class HomeController < ApplicationController
    def index
        require 'rubygems'
        require 'nokogiri'
        require 'open-uri'

        url = "http://www.walmart.com/search/search-ng.do?search_constraint=0&ic=48_0&search_query=batman&Find.x=0&Find.y=0&Find=Find"
        doc = Nokogiri::HTML(open(url))
        @mattVar = doc.at_css("title").text
    end
end

那么在我的 HTML 中,我有

<h1>Hello!</h1>
<p><%= @mattVar %></p>

应该在终端窗口中输出标题.但是,我收到一条错误消息 no such file to load -- nokogiri

有什么想法我哪里出错了吗?
如果我这样做 gem list 我可以在那里看到 nokogiri 宝石.

<小时>

更新

我关闭了本地 Rails 服务器并重新启动.它现在正在工作.不确定是因为将 gem 添加到我的根目录或执行"捆绑安装"(如下面的帖子所建议的那样).感谢您的帮助.

推荐答案

首先尝试将控制器更改为类似

class HomeController < ApplicationController
    require 'nokogiri'
    require 'open-uri'

    def index
        url = "http://www.walmart.com/search/search-ng.do?search_constraint=0&ic=48_0&search_query=batman&Find.x=0&Find.y=0&Find=Find"
        doc = Nokogiri::HTML(open(url))
        @mattVar = doc.at_css("title").text
    end
end

我猜你也在使用 bundler,检查你是否包含了这个 gem 并运行 bundle install.

您可以在 http://gembundler.com/

找到相关文档

本文地址:https://www.itbaoku.cn/post/786365.html