rails

pluck.uniqをdistinct.pluckに置換する

先日リリースした RuboCop Rails 2.6.0 でバグフィックスされた Rails/UniqBeforePluck についての話。 この Cop は RuboCop Rails に細かな部署があるなら、スタイルではなくパフォーマンスに属するもの。RDBMS から結果を取得したあとに Ruby の uniq で一…

Rails 6.0で不要なArel.sqlを減らす

Rails 5.2 で以下のように Arel.sql を使ってセキュアな文字列であることを明示するという警告が出るようになっていたのは、多くの Rails アプリケーション開発者が通ってきているように思える。 DEPRECATION WARNING: Dangerous query method (method whose…

Ruby 2.7 と Rails 6.0 / Rails 5.2 への展望と懸念

Ruby 3.0 に向けた Ruby 2.7 と Rails の状況がめまぐるしく変わっているようなので、現在持っている知識のスナップショットを書き残しておきます。 Rails 6.0 系と Ruby 2.7 系 昨日、Matz によって今後リリースされる Ruby 2.7.2 でキーワード引数の分離へ…

Railsでcontent_tagメソッドの代わりにtagメソッドに使う

Rails で content_tag メソッドの代わりに tag メソッドに使うように促す cop を次の RuboCop Rails 2.6.0 で導入する予定です。 github.com 以下、bad ケースと good ケースをサンプルから抜粋します。 # bad content_tag(:p, 'Hello world!') content_tag(…

Active Recordでのヒント句の書き方

Active Recordでのヒント句の書き方について。 クエリの実行計画の最適化を RDBMS のオプティマイザ (プランナ) に任せずに、アプリケーション側で指定するのにヒント句というのがあります。通常 RDBMS のオプティマイザに任せたりしていますが、DBA からチ…

Rails 6.1でサードパーティーのArel visitorが外される

Active Record でサポートしているコアアダプターの MySQL, PostgreSQL, SQLite 以外のサードパーティーの RDBMS に対する Arel visitor がコアから外されることになった。 github.com SQL Server は以前から独自で梱包していたようで、Oracle は今回対応し…

RailsアプリケーションのRuby 3.0への展望

パッチ会や地域 Ruby コミュニティなどで集めた知見を元に、勤務先の永和システムマネジメントなんかで度々話している表題についてテキスト化しておく。 TL;DR Ruby 2.8.0 の開発が始まっているが、それは 2020 年のどこかで Ruby 3.0 になるらしい Ruby 3.0…

Rails/OSSパッチ会 2019年11月

Rails/OSSパッチ会 2019年11月を開催した。 いくつか行なっていたことがあり、まずは RuboCop Rails にマイグレーションで decimal 型を指定する際に precision と scale を必須にしないと警告を出す提案が来ていて、Active Record メンテナーの kamipo さん…

RuboCop Rails 2.4.0 リリース解説

RuboCop 2.4 系の最初のリリースとなる 2.4.0 をリリースしたので、概要をざっくり記しておきます。 github.com Rails 部署に新たに追加された cop は以下の4つ。 Rails/ApplicationController cop Rails/ApplicationRecord の Controller 版。 # bad class …

RuboCop Rails 2.3.0 をリリースした

RuboCop Rails 2.3.0 をリリースした。 github.com New features #78: Add new Rails/EnumHash cop. (@fedeagripa, @brunvez, @santib) pocke さんによる提案を Rootstrap 社のオープンソースハッカソンで実装された cop となる。 Happy to have participate…

RuboCop Rails 2.2.1 をリリースした

Rails/TimeZone cop で DateTime まで警告の対象に含んでいたことで困っている声が多かったので、七夕にリリースしていた RuboCop Rails 2.2 系でその auto-correct も改善したバージョン。 github.com いまのところ RuboCop Rails 2.2 系は 7月の Rails/OSS…

Active Record Oracle enhanced adapter 5.2.6 がリリースされた

Active Record Oracle enhanced adapter 5.2.6 がリリースされた。 変更点としては、RailsConf 2019 の帰りの飛行機で書き始めていた TCP keepalive について database.yml から設定可能にする機能追加となる。 github.com database.yml に以下のように tcp_…

RailsリポジトリのRuboCopを0.63にするPRを開いた

Code Climate が RuboCop 0.63 対応したので PR を開いてかみぽさんにフォローコメントをもらって即日マージしてもらっていた。ありがとうございました。 github.com

Ginza.rb 第67回

『Ginza.rb 第67回 そろそろAction TextとAction Mailboxをみておこう』に行った。会場は東銀座のメドピアさん。 ginzarb.doorkeeper.jp イントロダクション芸人の y-yagi さんが Rails 6.0 で追加される Action Text と Action Mailbox というふたつのフレ…

Rails/HelperInstanceVariable copをマージした

RuboCop Rails に Rails/HelperInstanceVariable cop という、Rails のヘルパー内でインスタンス変数の参照、代入がある際に offense を出す cop の PR が開かれていた。 github.com 関数的呼び出しのメソッドを持つヘルパーについて、(インスタンス変数の) …