メモアプリリファクタリング

writeメソッドについて

IO.write

IOクラスの特異メソッド
IO.write (Ruby 3.1 リファレンスマニュアル)

File.openした後に使えるwrite

IOクラスのインスタンスメソッドを継承している
IO#write (Ruby 3.1 リファレンスマニュアル)

詰まった事

下記のコードだと、この処理の後にメモを新規登録する際に、jsonファイルのデータ末尾の次の行からデータを書き込んでくれるので、データの取り出しがうまくできる。

  File.open("memo.json", mode = "w"){|f|
    json.each{|x|
      f.write("#{x.to_json}\n")
    }
  }

下記のコードだと、この処理の後にメモを新規登録する際に、jsonファイルのデータ末尾が改行していない状態で書き込みしてしまい、取り出しがうまく出来なくなる。

 IO.write('memo.json',json.map{|x|x.to_json}.join("\n")) 

原因と解決

Joinで繋いだ部分にしか\nが入っていない事が原因だった!
初歩的なミス😱
こういうのは寝て起きて、朝見ると、なぜこんなところで詰まったんだ😱となる。。。
下記の様にして解決!

IO.write('memo.json',json.map{|x| "#{x.to_json}\n"}.join )

writeメソッドの使い方

少し書き込むだけ、少し読み込むだけの場合には、IOクラスの特異メソッドで処理した方が早いと思った。
たくさんの処理がある場合にはFile.openしてブロック内で続けて処理するのが良さそう!

Git addについて

git add -u と git add -A と git add . の違い | note.nkmk.me

CSSについて

id属性

同じWebページ内でid属性の値が重複してはならない。
属性値(名前)の前に「#」(シャープ)をつけることで、CSSを指定できます。

class属性

同じWebページ内で同じclass属性の値を何度でも用いることができる。
属性値(名前)の前に「.」(ドット)をつけることで、CSSを指定できます。