今年に入り、GitHubにプライベートリポジトリを作って読書記録を残すようにしてみました。
そのリポジトリはReading-Notesというんだけれど、前回の記事を書いた段階ではcp format.md 2019/01/読んだ本のタイトル.md
とコマンドを叩くことで事前に用意していたformat.md
を複製し、そこに感想を書くようにしていました。
しかしめんどくさい!
以前、Fjord Boot Campの課題で、コマンドのls
やらwc
やらをRubyで再現するっていうのに挑戦したことがあったんですけど、それと同じように適当にファイル作るようにしたほうが簡単だと思いました。
それにコマンドを作るという点でいい復習になりますし。
ということでやってみました。
作ったもの
#!/usr/bin/env ruby require 'date' require 'fileUtils' require 'pathname' class Note < File attr_accessor :title def initialize @title = STDIN.gets.chomp + ".md" year = Date.today.year.to_s month = "%02d" % Date.today.month.to_s path = Pathname.new(year).join(month) path.mkpath unless path.exist? FileUtils.cp('format.md', path.join(@title).to_s) end end Note.new
学びになったこと
Pathname
るりまを開くと
パス名をオブジェクト指向らしく扱うクラスです。
だそうです。ふむふむ。わかったようなわからないような。Pathname
クラスがあって振る舞いがあるんだな〜っていうざっくりとした感覚では掴んだ気がします。
mkpath
メソッドを使ったらwarningがだーーーーっとでて「ひょえっ」と思いましたが、どうやら鋭意解決に取り組んでおられる模様。自分でも考えたいけどそれは無理なので心から応援しています!w
fileutils conflict in Ruby 2.5.1 · Issue #22 · ruby/fileutils · GitHub
Pathname
は初めて触ったとおもっていたのですが、Rails.root~~
がまさにこれらしく、railsでは使ったことがありました!
シバン
久しぶりにやったのでどうやるんだっけなとすっかり忘れちゃっていました。
- ファイルに
#!/usr/bin/env ruby
(これがシバン)と記載 - ファイル名は拡張子なしに(今回の場合
note.rb
としていたのをnote
に変更しました) chmod +x note
パーミッションを変更- 実行するときは
./note
感想
夫にコードレビューはしてもらったけど、ほぼ自力で書けたので良かったです! 楽しかったのでこれくらいの簡単な操作は今後も自分でコマンド書いて行くようにしてみようと思いました。