週刊Railsウォッチ(20180511)ArelがRailsにマージ、RailsのGDPRエンジン、RubyでWebAssembly、VS IntelliCodeのAIレビュー機能ほか

こんにちは、hachi8833です。長い休みがあるとウォッチに載せたいものがモリモリ増大してしまうので削るのが逆につらいです。 夏日のウォッチ、いってみましょう。心なしかRust成分が多めになりました。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ ⚓Rails: 今週の改修 まずはRails 6.0向けのmasterブランチから。 ⚓ArelがRails本体にマージ PR: Merge Arel by matthewd · Pull Request #32097· rails/rails 変更量が莫大なのでdiffはなしです。 ここしばらく、Arelの歩調をActiveRecordに合わせる作業が続いていました。Railsのあらゆるリリースで新しいArelリリースが必要であり、ArelのリリースもRailsのリリースに合わせて行われます。 両者を調和させるためにはコストがかかりますが、Arelを別gemとしてメンテし続ける余裕がありません。 Reverse dependencies for arel | RubyGems.org | your community gem hostをチェックしたところ、(Arelに依存する他の)gemのほとんどがActiveRecordに依存しているため、今回の変更はエコシステムに大規模な依存を新たに強いるものではありません。ActiveRecordの新バージョンに依存する、新バージョンのArelを今後リリースしますので、(他の方々も)引き続きアップグレードはスムーズにできます。そのためにはActiveRecordがインストールされている必要があります(ただし読み込みもrequireもしません)。 トップレベルのArel定数名を変更する予定はありません。 同PRより大意 つっつきボイス: 「activerecord/lib/arel.rbに置かれたってことか」「Arelのgemは今後もあるんでしょうかね?」 旧rails/arelを見に行ってみると、aae413bでgemspecなどいくつかのファイルを残してソースがごっそり消えてますね。 rails/arelより ⚓has_one_attachedとhas_many_atacched共通で使えるバリデーション PR: has_(one/many)_attached presence validation by fatkodima · Pull Request #31956· rails/rails class User < ActiveRecord::Base has_one_attached :avatar has_many_attached :highlights validates :avatar, presence: true validates :highlights, presence: true end 今後こんなふうに書けるようです。 つっつきボイス: 「これはActiveStorageの改修ですね」「ほんとだ: 修正はこんだけ↓」「presence validationってあるのは添付ファイルが存在するかどうかのチェックってことみたい」 # activestorage/lib/active_storage/attached/one.rb#L16 + def blank? + attachment.blank? + end ⚓RailsのWelcomeスクリーンのキャラクターを多様化 PR: Update ‘rails_welcome.png’ to reflect a more diverse population by asianmack · Pull Request #32735 · rails/rails 同PRより この間からジェンダーフリーなど多様性を志向した改修が増えつつあるので、こちらも対応が進んでいるようです。動物とか恐竜とか宇宙人とかロボットだったらこういうときに楽ですね。 つっつきボイス: 「もうこの流れは必然ですね」「LGBTは外見と関係ないから絵には表さないはず」「イヌまだいるのかな?あネコだったか(ΦωΦ)」「次は車椅子のメンバーも…と思ったらしっかり入ってました」「『でもリーダーは白人男性ね』が暗黙だったらどうしよう😁😂」 追記: こういった多様化に初めて気づいたのは、「ゴーストバスターズ」がアニメ版になったときに映画版にはいなかった車椅子のレギュラーメンバーがいるのに気づいたときでした。随分昔ですが。 ⚓ImageProcessing gemを導入 PR: Use ImageProcessing gem for ActiveStorage variants by janko-m · Pull Request #32471 · rails/rails # Gemfile#L91 gem “google-cloud-storage”, “~> 1.8”, require: false gem “azure-storage”, require: false – gem “mini_magick” + gem “image_processing”, “~> 1.2” end # Gemfile.lock#L268 + image_processing (1.2.0) + mini_magick (~> 4.0) + ruby-vips (>= 2.0.10, < 3) つっつきボイス: 「MiniMagickとImageMagickってどういう関係でしたっけ」「ImageMagickはCか何かで書かれた画像処理ライブラリで、以前はRMagickというRubyバインディング経由で使っていたのが、MiniMagickの方が軽いとかメモリ食わないとかでよく使われるようになってきた感じですかね」「なるほど!」「libvipsっていうもっと軽くて速いライブラリを使う方向に進むみたいですね」「それでruby-vipsというバインディングが導入されたと」 リポジトリ: jcupitt/ruby-vips # 同PRより real time in seconds, fastest of five runs benchmark tiff jpeg ruby-vips.rb 0.85 0.78 image-magick … Continue reading 週刊Railsウォッチ(20180511)ArelがRailsにマージ、RailsのGDPRエンジン、RubyでWebAssembly、VS IntelliCodeのAIレビュー機能ほか