Rails歴2ヶ月ほどの、ど素人なのですが、今回初めてリファクタリングをしたいと思っています。ですが、なかなか思う様に動いてくれず足踏みしています。オブジェクト指向やリーダブルコードなどの本は一式読んだのですが、実際にリファクタリングをするとなると、どうも上手く動きません。以下には、今まで試してみたことや実現したいことなどを記載しますので、ぜひお力添えをいただければと思います。
前提条件
Rails: 5.2.3
OS: Mac
デバック方法: コードの中に**「byebug」**を埋め込む。
※このモデルはスクレイピング用のモデルです。モデルに処理を全て書き、「whenever(gem)」を使ってモデルに対して定期実行を行います。(つまり、メソッドをViewに書く想定はしていません)
実現したいこと
**「モデルファイルの、メソッドの処理をデバッグ」**したい。
ruby
1#app/models/clone.rb 2 3class Clone < ApplicationRecord 4 5 def self.set_url_for_scraping(url) 6 web_url = 'url' 7 unparsed_page = HTTParty.get(web_url) 8 parsed_page = Nokogiri::HTML(unparsed_page) 9 #ここに「byebug」を埋め込んで、ターミナルでデバッグしたい 10 end 11
試したこと
①デバック用にModelファイルを作成。(中身は同じ)
②メソッドの中に「byebug」を埋め込む。
ruby
1#scrape.rb(Gemfileと同じ階層) 2class Clone < ApplicationRecord 3 4 def self.set_url_for_scraping(url) 5 web_url = 'url' 6 unparsed_page = HTTParty.get(web_url) 7 parsed_page = Nokogiri::HTML(unparsed_page) 8 byebug #デバッグのため 9 end 10
③の1: ターミナルで**「$ rails r scrape.rb」**を叩く
→Running via Spring preloader in process .....(ただただ走り抜けた)
③の2: ターミナルで**「$ rails r scrape.rb.set_url_for_scraping」**を叩く
→undefined local variable or method `scrape' for main:Object(未定義になる)
わからないこと
①Modelをデバックするために一時的に作るファイルは、どの階層に置くのか。
(自分はGemfileと同じ階層に置きました)
②byebugを埋め込んだメソッドを、指定して実行するコマンドはどんなものか。
(自分は③の1、③の2のように実行して失敗しました)
以上のようなことが解決できず、質問させていただきました。
もしかすると、Modelファイルのメソッドをデバックするという発想自体、間違っているのかもしれませんが、ぜひそのあたりも未熟な自分にご教授いただければ幸いです。
回答2件
あなたの回答
tips
プレビュー