Rails Diary

プログラミングの学習記録です。

雑メモ帳

まとめ方を気にしている余裕がなくなったので、覚書として簡単にメモしておきます。

雑にどんどん追加していきます。

gitでcommit間の差分を出力する

経緯

課題デバッグでHTMLを不必要にいじって表示が乱れてしまったので、どこが原因でおかしくなったのか調べたい。バグに気がついたのがだいぶ後だったため、過去のコミット間の差分を調べる必要がある。

二つのcommit間の差分を出力する

git logで当該箇所のコミットIDを調べ、下記コマンドで差分をチェックできる。

git diff <コミットID1> <コミットID2>

gitでcommit間の差分を出力する - Qiita

Time.nowとTime.current

結論:Time.currentを使った方がいい

[4] pry(main)> Time.now
=> 2022-04-23 16:22:59 +0900
[5] pry(main)> Time.current
=> Sat, 23 Apr 2022 16:23:04 JST +09:00

Time.nowは環境変数(ENV['TZ]')もしくはシステムのタイムゾーンをもとに現在時刻を取得しており、デフォルト設定で環境変数の値はnil。このためアメリカ時刻になっているシステムのタイムゾーンを参照してしまう。

Time.currentはシステムのタイムゾーンに左右されず、Railsアプリごとにapplication.rbに設定したタイムゾーンを参照してくれるので、コンソール上で確認してみると日本時刻で表示されている。

【Rails】Time.currentとTime.nowの違い - Qiita

DateTime

DateTimeは非推奨らしいので、特別な理由がなければTIimeクラスを使う。

より詳しい記事

RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い - Qiita

Capybara click_onについて

click_onはclick_buttonとclick_linkのエイリアス

これはもう全部click_onでいいのでは🙄
と思っていたけど下記のような場合はclick_onで上手くクリックすることができないらしい。

#<button class="cssClassName">ボタン名</button>
# このような場合は押せる
click_on "ボタン名"


#<button class="cssClassName"><i xxxx />ボタン名</button>
#<button class="cssClassName">ボタン名(1)</button>
# こんな感じだタグ内の値だとうまくいかない
# click_on "ボタン名"

Rspec Capybaraで実際テストを書いて困ったシチュエーションの解消法 - Qiita

範囲演算子

経緯

昨日(終日)中に公開された記事を取得したい。

下記のように記述したけれど、実際もっとスマートな書き方があるかも知れない。

@articles_published_yesterday = Article.where(published_at: Time.zone.now.yesterday.beginning_of_day..Time.zone.now.yesterday.end_of_day)
  • beginning_of_dayend_of_dayでその日の始まりとその日の終わりを取得
  • .....で範囲を指定できる
  • ..は素直に〇〇から〇〇まで
  • ...の場合は終端を含まないSQLが発行されている

ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法|TechRacho by BPS株式会社

whenverの設定

これに関しては理解できていない箇所がかなり多い。

  • cronは.zshとrbenvの環境で動いてくれないらしいので、シェルコマンドの設定と.zshrcとrbenvのPATHを設定で通す必要がある

[Rails4] wheneverを使ってcrontabを管理して、cronを回す - Qiita

remoteの設定で出たエラー

No such remote 'origin'

No such remote 'origin' - Qiita