週刊Railsウォッチ(20180702)Ruby 2.2メンテ正式終了、Ransackがつらくなるとき、書籍『Domain-Driven Rails』、GitHubの高可用MySQLほか

こんにちは、hachi8833です。これまで金曜夕方に刊行していた週刊Railsウォッチを月曜夕方に移動いたします。今後ともどうぞよろしくお願いします。 7月最初のウォッチ、いってみましょう。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ ⚓Rails: 先週の改修 というわけで「今週の改修」改め「先週の改修」となります。 先週は公式の更新情報はなかったのでmasterから見繕いました。今回は一息ついたのかドキュメント更新の方が盛んです。 ⚓Date#wdayの対応付けを修正 commit: Use same weekday correspondance as Date#wday. · rails/rails@dd7f8ca DeepCoverというカバレッジツールによると、wday != 0 ? wday – 1 : 6が一貫していない部分があったそうです。 # activesupport/lib/active_support/core_ext/date_and_time/calculations.rb#L5 module DateAndTime module Calculations DAYS_INTO_WEEK = { – monday: 0, – tuesday: 1, – wednesday: 2, – thursday: 3, – friday: 4, – saturday: 5, – sunday: 6 + sunday: 0, + monday: 1, + tuesday: 2, + wednesday: 3, + thursday: 4, + friday: 5, + saturday: 6, } WEEKEND_DAYS = [ 6, 0 ] つっつきボイス: 「monday始まりがsunday始まりに変わったみたいです」「この辺ってPOSIXで決められてなかったっけ?🤔」 後で調べたら以下のようになってました。 %w Weekday as a decimal number [0,6] (0=Sunday). pubs.opengroup.org dateより 「なんでもDeepCoverというカバレッジツールで見つかったんだそうです(後述)」「あーRubyKaigi 2018で説明されてましたねそれ😀: 確かにcurrent_day_number = wday != 0 ? wday – 1 : 6だと悲しい😆」「😆」「😆」「この数値がデータベースに入ってたりするとつらいだろうけど、そのまま使うことはないだろうしねー」 「そういえば週の日曜始まりと月曜始まりも文化圏で違ってますね」「そういえば🧐」 参考: 曜日 - Wikipedia 週が始まる日を、日曜日とすることもあり、また月曜日からとするところもある。アメリカ製のカレンダー、ヘブライ語、ポルトガル語、アラビア語、ペルシア語、ベトナム語などでは前者であり、フランス製のカレンダーなどは後者である。イスラム圏では金曜日が公休日になっていて、カレンダーも土曜日から始まるものがある。【中略】日本で販売されているカレンダーには日曜始まりのものと月曜始まりのものが混在している。 ⚓fetchでエラーハンドリングを改善 commit: Use fetch for better error handling · rails/rails@e1f31e8 # activesupport/lib/active_support/core_ext/date_and_time/calculations.rb#L265 def days_to_week_start(start_day = Date.beginning_of_week) – start_day_number = DAYS_INTO_WEEK[start_day] + start_day_number = DAYS_INTO_WEEK.fetch(start_day) (wday – start_day_number) % 7 end これも上のdd7f8caに関連しているっぽいです。 つっつきボイス: 「これは普通に#fetchでやるやつですね🕶: fetchだとハッシュの値がnilならデフォルトでnilを返す」「ぼくちょうど今日#fetch調べてました❤️たしか第2引数にデフォルト値を設定できるんですよね」「お〜いいタイミング!😋」 「#fetchってstrong_parametersで使われたりしますよね?」「まあそれに限らずハッシュにアクセスするときには#fetchっていろいろ便利ですね」「😃」 Rubyスタイルガイド「7-14【統一】ハッシュのキーの存在を前提にする場合はHash#fetchを使うこと」から一応。 heroes = { batman: ‘Bruce Wayne’, superman: ‘Clark Kent’ } # 不可 – キーが無効でもエラーにならない heroes[:batman] # => ‘Bruce Wayne’ heroes[:supermann] # => nil # 良好 – KeyErrorでキーがないことを検出できる … Continue reading 週刊Railsウォッチ(20180702)Ruby 2.2メンテ正式終了、Ransackがつらくなるとき、書籍『Domain-Driven Rails』、GitHubの高可用MySQLほか