首页 > 解决方案 > Rails puts 和 logger.info 在 do 循环内部不起作用

问题描述

def poster
    mechanize = Mechanize.new
    Spider.start_at('http://www.cnn.com/') do |s|
      s.add_url_check do |a_url|
        a_url =~ %r{^http://www.cnn.com/*}
      end
      s.on :success do |a_url, resp|
        agent = mechanize.get("#{a_url}")
        cnnbody = resp.body
        parsedcnnbody = Nokogiri::HTML.parse(cnnbody)
        tags = parsedcnnbody.xpath("//a")
        imgs = parsedcnnbody.xpath("//img")
        headers = parsedcnnbody.css("h1")
        containers = parsedcnnbody.css(".zn__containers")
        containers.each do |container|
          container.xpath("//a").each do |link|
            Spider.start_at(link['href']) do |d|
              d.on :success do |b_url, res|
                # @org = Organization.where(title: "CNN").first_or_create!
                @parsedbody = Nokogiri::HTML.parse(res.body)
                @authorusername = @parsedbody.css(".metadata__byline__author")
                puts @authorusername
                # @author = User.where(username: @authorusername, organization_id: @org.id).first_or_create!
                @parsedtext = @parsedbody.css(".l-container").css(".l-container")
                puts @parsedtext
                # @post = Post.where(title: parsedbody.css(".pg-headline"), content: parsedtext)

在取消注释剩余的工作之前,我想用 puts 参数测试这个蜘蛛的输出。

但是,当 @org 未注释时,它只是循环遍历而不从 puts 显示。

标签: loggingruby-on-rails-5puts

解决方案


我通常用于Rails.logger.debug ''在服务器上显示消息或调试。

正如我刚刚检查的那样,我仍然可以使用它来循环显示消息。

希望这可以帮助


推荐阅读