週刊Railsウォッチ(20190304-1/2:前編)Rails 6.0.0 beta2リリース、Ruby 2.7の新しい記法、各種自動レビューツール、ULIDとはほか

こんにちは、hachi8833です。Railsウォッチ制作がそろそろ本気で身が持たないので、今回からウォッチを分割公開することにしました。今回は前編となります。引き続きよろしくお願いします🙇。 しかしそう決めた途端、何とつっつきの録画に失敗してしまいました…😇。可能な限り記憶を元に再現します🙏。 各記事冒頭には⚓でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを社内有志でつっついたときの会話の再構成です👄 毎月第一木曜日に「公開つっつき会」を開催しています: お気軽にご応募ください ⚓週刊Railsウォッチ「公開つっつき会#8」開催のお知らせ 応募先: 週刊Railsウォッチ 公開つっつき会 第8回|IT勉強会ならTECH PLAY[テックプレイ] 次回は今週の3/7(木)開催です。参加枠は余裕あります。鍋でもつっつくようなお気軽なご参加をお待ちしております🙇。 ⚓臨時ニュース: Railsガイドが5.2に対応 #Railsチュートリアル 完走者やRailsエンジニアに活用して頂いている #Railsガイド が5.2対応になりました! 😆🎉✨ #YassLab 5️⃣0️⃣ 以上のファイルを更新し、約 6️⃣0️⃣0️⃣0️⃣ 行を変更しました! 記事 https://t.co/peRoidfcOU電書 https://t.co/2a1fBdjUoz 皆さんの開発の一助になれば嬉しいです 💖 pic.twitter.com/01JEWR46l9 — YassLab 株式会社 (@YassLab) March 4, 2019 半年以上前から更新翻訳をすすめていましたが、このたびリリースいただきました🙇。次の目標はRails 6ですね。 ⚓Rails: 先週の改修(Rails公式ニュースより) ⚓Rails 6.0.0 beta2リリース 元記事: Releases | Riding Rails rubyonrails.orgより つっつきボイス:「出ましたね🎉」「来たか(すっく)」「予定では「February 1: Beta 2.」「March 1: Release Candidate 1」なのでまずまずですね☺️」 ⚓beta2のZeitwerk情報 Rails 6 Beta2時点のZeitwerk情報(要訳) つっつきボイス:「先行して上の要訳記事を出しました↑」「社内でもオートローダーの話からモジュール/クラスを入れ子にしたときの名前空間の話になったりしましたね」 このときrequire_dependencyについてもSlackで話題になったのですが、私がまだまとめきれないのでウォッチ20181022をどうぞ。 参考: 7 require_dependency — 定数の自動読み込みと再読み込み - Rails ガイド その後autovivifiedの話題になりました。 参考: fxn/zeitwerk: Efficient and thread-safe code loader for Ruby — implicit namespaces 参考: Autovivification - Wikipedia Perlにおけるautovivificationとは、未定義の値が参照解決(dereference)されるたびに新しいarrayやhashを自動生成すること。 Wikipediaより大意 参考: autovivificationとうまく付き合う - Qiita 以下のように、素のRubyのirbでMyNameを定義してない状態からいきなりMyName::MyModelクラスを定義すると1行目でいきなりエラーになることもわかりました。 class MyName::MyModel #=> `<main>’: uninitialized constant MyName (NameError) def hello ‘hello world’ end end puts MyName::MyModel.new.hello なお、Railsでもコンソールで定数Fooが未定義のままFoo::Barをclassで定義するのはさすがに無理でした。 アウターボイス:「忘れがちだけど、クラスの継承関係と名前空間はまったく別物なのよね😎」「あー言われてみれば🤭」 参考: Railsでモデルクラスの名前をネームスペースとして流用してはいけません(warning: toplevel constantが発生します) - Qiita Rails 6ではautoloadingの仕組みが変わるのね。微妙な仕様の違いで、変にハマったり、特殊なgemが動かなくなったりしそうな予感・・・。(あくまでただの予感です)Zeitwerk integration in Rails 6 (Beta 2) | Riding Rails https://t.co/E0GeAhAEPS — Junichi Ito (伊藤淳一) (@jnchito) February 26, 2019 ⚓generated_relation_methodsをリファクタリング commit: Refactor generated_relation_methods to remove duplicated code on ClassSpecificRelation # activerecord/lib/active_record/relation/delegation.rb#L3 +require “mutex_m” + module ActiveRecord module Delegation # :nodoc: module DelegateCache # :nodoc: … def inherited(child_class) child_class.initialize_relation_delegate_cache super end + def generate_relation_method(method) + generated_relation_methods.generate_method(method) + end … Continue reading 週刊Railsウォッチ(20190304-1/2:前編)Rails 6.0.0 beta2リリース、Ruby 2.7の新しい記法、各種自動レビューツール、ULIDとはほか