So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole

Hallo Das Schreiben ist heute hauptsächlich für Anfänger. Dieses Mal werde ich eine bestimmte Debaking-Methode einführen. Das Debuck ist "Byebug". Es erfordert keinen Edelstein wie binding.pry, und es ist attraktiv, dass die Ansicht dies nicht tut. Sie können debuggen, indem Sie einfach byebug in die Verarbeitung des Modells oder Controllers schreiben. Selbst wenn Sie es in der Ansicht schreiben, können Sie es nicht debuggen.

scraping.rb


class Scraping < ApplicationRecord
    def self.get_infomation
        require 'mechanize'
        agent = Mechanize.new
        links = []
        current_page = agent.get("https://talent-dictionary.com/s/jobs/3/20")
        elements = current_page.at('.home_talent_list_wrapper')
        boxs = elements.search('.item')
        roks = boxs.search('.right')
        qqqs = roks.search('a')
        eees = qqqs.search('.title')
        eees.each do |eee|
            links <<  eee.inner_text
        end
        links.each do |link|
            get_personal_infomation('https://talent-dictionary.com/' + link)
        end
    end
    def self.get_personal_infomation(link)
        agent = Mechanize.new
        personal_page = agent.get(link)
        aaas = personal_page.at('.talent_name_wrapper')
        ages = aaas.at('.age').inner_text.delete('Alter').to_i if aaas.at('.age')
        names = aaas.at('h1').inner_text  if aaas.at('h1')
        image_urls = personal_page.at('.main_image img').get_attribute('src') if personal_page.at('.main_image img')
        infomation = Infomation.where(name: names).first_or_initialize
        infomation.age = ages
        infomation.image_url = image_urls
        byebug 
        infomation.save
    end
end

Führen Sie dann get_infomation auf der Konsole aus

[23, 32] in /home/ec2-user/environment/filebook/app/models/scraping.rb
   23:         ages = aaas.at('.age').inner_text.delete('Alter').to_i if aaas.at('.age')
   24:         names = aaas.at('h1').inner_text  if aaas.at('h1')
   25:         image_urls = personal_page.at('.main_image img').get_attribute('src') if personal_page.at('.main_image img')
   26:         infomation = Infomation.where(name: names).first_or_initialize
   27:         infomation.age = ages
   28:         infomation.image_url = image_urls
   29:         byebug 
=> 30:         infomation.save
   31:     end
   32: end
(byebug) 

Auf diese Weise können Sie den Prozess im Modell stoppen. Sie können dies tun, indem Sie eine Methode in diese (byebug) schreiben.

(byebug) infomation
#<Infomation id: 14, age: 22, name: "Hirose Dose", image_url: "https://images.talent-dictionary.com/uploads/image...", created_at: "2020-11-01 07:14:44", updated_at: "2020-11-01 07:14:44">

Sie können den Inhalt herausnehmen. Als nächstes, wenn Sie es mit infomation.name tun

(byebug) infomation.name
"Hirose Dose"

Wenn Sie es personal_page machen


personal_page
#<Mechanize::Page
 {url
  #<URI::HTTPS https://talent-dictionary.com/%E5%BA%83%E7%80%AC%E3%81%99%E3%81%9A>}
 {meta_refresh}
 {title "Von der Geburt von Hirose Tin bis zur Gegenwart-Talentwörterbuch"}
 {iframes
  #<Mechanize::Page::Frame
   nil
   "//www.googletagmanager.com/ns.html?id=GTM-P49Z2S">
  #<Mechanize::Page::Frame nil "https://www.youtube.com/embed/hY0oCSd6G78">}
 {frames}
 {links
  #<Mechanize::Page::Link "Talentwörterbuch" "https://talent-dictionary.com/">
  #<Mechanize::Page::Link "Talentwörterbuch" "https://talent-dictionary.com/">
  #<Mechanize::Page::Link
   "Hirose Dose"
   "https://talent-dictionary.com/%E5%BA%83%E7%80%AC%E3%81%99%E3%81%9A">
  #<Mechanize::Page::Link
   ""
   "https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Ftalent-dictionary.com%2F%25E5%25BA%2583%25E7%2580%25AC%25E3%2581%2599%25E3%2581%259A">
  #<Mechanize::Page::Link
   ""
   "https://twitter.com/share?url=h
Der Rest entfällt

Sie können alle Informationen in der Ansicht extrahieren.

Sie können dasselbe mit dem Controller tun

infomation_controller.rb



def show
        @infomation = Infomation.find(params[:id])
          byebug 
        @comments = @infomation.comments
        @favorite = @infomation.favorites
end

Und wenn Sie den Server starten

[3, 12] in /home/ec2-user/environment/filebook/app/controllers/infomations_controller.rb
    3:         @infomations = Infomation.all
    4:         @infomations_rankings = Infomation.find(Favorite.group(:infomation_id).order('count(infomation_id) desc').limit(3).pluck(:infomation_id))
    5:     end
    6:     def show
    7:         @infomation = Infomation.find(params[:id])
    8:           byebug 
=>  9:         @comments = @infomation.comments
   10:         @favorite = @infomation.favorites
   11:     end
   12: end
(byebug)

Wenn Sie @infomation in diesem Zustand starten

(byebug) @infomation
#<Infomation id: 1, age: 21, name: "Kanna Hashimoto", image_url: "https://images.talent-dictionary.com/uploads/image...", created_at: nil, updated_at: nil>

Und Sie können die Informationen erhalten.

Recommended Posts

So debuggen Sie die Verarbeitung im Ruby on Rails-Modell nur mit der Konsole
[Ruby on Rails] Wie schreibe ich eine Enumeration auf Japanisch?
[Ruby on Rails] So ändern Sie den Spaltennamen
[Ruby On Rails] So setzen Sie die Datenbank in Heroku zurück
So beheben Sie Fehler, die beim Integrationstest "Ruby on Rails" auftreten
[Ruby on Rails] So melden Sie sich nur mit Ihrem Namen und Passwort mit dem Gem-Gerät an
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
[Rails / Eindeutigkeitsbeschränkung] Überprüfen der Modellvalidierung auf der Konsole / Eindeutigkeitsbeschränkung für mehrere Spalten
[Ruby on Rails] Verwendung von redirect_to
Dinge, an die Sie sich erinnern sollten, und Konzepte im Ruby on Rails-Tutorial
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]
So lösen Sie die lokale Umgebungskonstruktion von Ruby on Rails (MAC)!
So erstellen Sie die einfachste Blockchain in Ruby
So überprüfen Sie Rails-Befehle im Terminal
[Ruby on Rails] Beim ersten Anmelden ・ So teilen Sie den Bildschirm mit jQuery in zwei Hälften
[Ruby on Rails] So machen Sie das Linkziel zu einem Teil der angegebenen ID
[Ruby on Rails] So japanisieren Sie die Fehlermeldung des Formularobjekts (ActiveModel)
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...
So debuggen Sie die generierte JAR-Datei mit Eclipse
(Ruby on Rails6) So erstellen Sie ein Modell und eine Tabelle
[Schienen] So zeigen Sie Bilder in der Ansicht an
[Ruby on Rails] Debuck (bindend.pry)
[Ruby on Rails] Nur den Benutzer, der Beiträge verfasst hat, dürfen bearbeiten
[Ruby on Rails] Zeigt den Seitentitel schnell im Browser an
[Ruby on Rails] Eliminierung von Fat Controller-First, Logik zum Modell-
So rufen Sie den Hashwert in einem Array in Ruby ab
[Hinweis] Über das Fizz_Buzz-Problem (Funktionsweise von Ruby on Rails)
So wechseln Sie Java in der OpenJDK-Ära auf dem Mac
So führen Sie React und Rails auf demselben Server aus
Wenden Sie CSS auf eine bestimmte Ansicht in Ruby on Rails an
[Schienen] Anzeigen von Informationen, die in der Datenbank gespeichert sind
Wie man in Ruby auf unbestimmte Zeit iteriert
So stellen Sie Bootstrap auf Rails bereit
Ruby on Rails Japanisch-Englisch kompatibler i18n
So installieren Sie Bootstrap in Ruby
So installieren Sie jQuery in Rails 6
So installieren Sie Swiper in Rails
[Rails / Routing] So verweisen Sie auf den Controller in Ihrem eigenen Verzeichnis
So benennen Sie ein Modell mit externen Schlüsseleinschränkungen in Rails um
Ich habe den Ablauf bis zur Implementierung von simple_calendar in Ruby on Rails zusammengefasst.
Messen Sie den Engpass! So verfolgen Sie nur langsame Methoden in AspectJ