GitHubの新デザインを先取りして使う

GitHub がユーザー全体のデザインを変えるより前に、Feature preview を使うと先駆けで新デザインを使うことができる。 先行して新デザインが使えるときは、以下の Feature preview に通知がきているので、それを有効にする。 過去に自分が見たプレビュー機…

GitHub が落ちた時に復旧情報を受け取る

Twitter のタイムラインが賑わう GitHub のサービスダウンに関する tip です。 GItHub のサービスの状態については https://status.github.com/ で確認できます。 さらに右上の Subscribe から復旧状態をメールなどで通知を受け取ることができます。 たとえ…

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

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

SSDが擦り切れる前にルーターとHDDを導入した

2013 年モデルの MacBook Pro を開発機に使っていて、一説によると寿命の目安が5年くらいとも言われている SSD がアディショナルタイムに突入して数年経過している。多くの作業中ブランチを含む手元の OSS リポジトリやら環境が飛ぶと立ち直るのがつらい状況…

`Layout/LineLength` のデフォルトを 120 にした

RuboCop の LineLength のデフォルトが 80 ではつらいという声はずっと聞いていて、そもそも RuboCop にパッチを送り始めた頃は、いつかこの変更をするのが目標のひとつだった。 今回 3年半越しに実現することができた。現在の最新版の RuboCop 0.84.0 に適…

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

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

RuboCopドキュメントのAsciiDoc化

今日は代休をとっていた。RuboCop の方で公式サイトというかランディングページが刷新された。 rubocop.org サイトといえばドキュメントいうわけで、そちらは Markdown から AsciiDoc に置き換えようという動きがあって、ドキュメント生成タスクまわりを Asc…

Ruby Banitsa THURSDAY, 21ST OF MAY

昨晩というか今日の JST 1:30 くらいから Bozhidar が RuboCop 1.0 の話をするというのでインターネット講演を視聴していた。 rubybanitsa.com たぶんブルガリア方面のローカル Ruby コミュニティのようで、ツールは Zoom で 34 人くらい参加していたと思う…

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(…

Faker のコミット権をもらった

昨年くらいに Faker の org メンバーになっていたけれど、リポジトリの PR がたまっていている状態をどうにかしたかったので、そこのチームにコミット権を付与してもらった。 github.com アクティブなチームメンバーがマージできるようになったのではと思う。

GW にやったこと (2020年)

GW にやったことについて、GitHub から辿れることを中心に書き残しておく。 .rubocop.yml で ERB を書けるようになるパッチをレビューしてマージした。 こんな書き方ができるようになる。 AllCops: Exclude: <% `git status --ignored --porcelain`.lines.gr…

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

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

`bundle install --clean`を実行するときの注意点

bundle install --clean を実行するときの注意点として、バッドノウハウを書き残しておきます。 これは、以前 pocke さんが CircleCI の実行を速くするのに bundle install --clean を使う方法を記されていたことで思い出したことです。 pocke.hatenablog.co…

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

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

Ruby 2.8.0-devビルドのためclangを更新した

TL;DR としては手元の macOS の clang のバージョン更新を怠っていたので、Ruby の head (2.8.0-dev) でコンパイルエラーが起きていた。久しぶりの Ruby 2.8.0-dev でコンパイルエラーが出たら clang を更新してみましょう。 以下ログ込みで記しておく。 Rub…

GitHub Packages と Gem の配布先

TL;DR 公開 gem の配布先は従来どおり rubygems.org のみで良いかなといまのところ思っています。 GitHub では GitHub Packages がリリースされて、gem を含めていくつかのパッケージに対してサポートされている。 help.github.com gem に対する GitHub Pack…

RuboCop Faker 1.0 をリリースした

Faker::Base.unique メソッドが使われている際の false negative に対応した RuboCop Faker 1.0 をリリースした。 rubygems.org もともと Faker 1 系から Faker 2 系へのインタフェースマイグレーションをゴールとした Gem で API としては安定していたので…

ruby-build のパッケージ定義ファイルを生成する

Ruby の処理系がリリースされた際に rbenv/ruby-build に PR を開いている定義ファイルを生成するスクリプトを upstream に提案した。既に ruby-build には PR を開いていて統合済み。 github.com 過去の PR と見る人が見れば分かる定義ファイルだが、既に自…

RuboCop の Cop 名をマイグレーションする

RuboCop では Cop が所属する先の部署や Cop 名が変更されることがある。 変更された際に所属先の部署や Cop 名をマイグレーションする仕組みが用意されているものについて紹介する。 Migration/DepartmentName cop 現状の RuboCop では部署名が省略されいて…

RVM のコミット権をもらった

rvm

RVM は Travis CI や Active Record Oracle enhanced adapter で使っている Oracle 向け rails-dev-box で使われている流れからパッチを送っていたところコミット権をもらった。以前、パッチを送った時に PR へのアサインがされていたので「おや?」と思った…

『NO HARD WORK!: 無駄ゼロで結果を出すぼくらの働き方』を読んだ

『NO HARD WORK!: 無駄ゼロで結果を出すぼくらの働き方』を数日前に読了した。 NO HARD WORK!: 無駄ゼロで結果を出すぼくらの働き方作者:ジェイソン フリード,デイヴィッド ハイネマイヤー ハンソン,Jason Fried,David Heinemeier Hansson発売日: 2019/01/22…

RuboCop に JUnit フォーマッタを組み込んだ

JUnit の XML フォーマッタが CircleCI 利用時に有用だけれど gem の方がメンテナンスされていなくて、コアで巻き取ってもらえないかというイシューに対応した。 github.com 次にリリースされる予定の RuboCop 0.80 から --format junit オプション (あるい…

書籍「エクストリームプログラミング」の読みかた

勤務先で話題になっていた書籍『エクストリームプログラミング』について、メンバーに話したことを書き残しておきます。 TL;DR としては、書籍『エクストリームプログラミング』は初版の内容を踏まえた方が第二版を読み進めやすいかもしれないといったもので…

RubyKaigi 2020 へのプロポーザルが通過した

ということで RubyKaigi 2020 に pocke さんと登壇します。去年は LT での登壇だったので、本編登壇は 2018 年以来 2 年ぶり 2 回目です。よろしくお願いします。 rubykaigi.org

Code Climate Test ReporterとSimpleCov 0.18で起きるエラーを回避する

昨日あたりから RuboCop の master で CI が落ちていて、見てみたら Code Climate の cc-test-reporter でエラーが起きていることが原因だった。 $ #!/bin/bash -eo pipefail ./tmp/cc-test-reporter before-build COVERAGE=true bundle exec rake spec ./tm…

キーワード引数の分離への対応にRuby 2.8.0-devを使う

先日のパッチ会で kamipo さんにもらったアドバイスを書き残しておく。 TL;DR としては表題そのまま。キーワード引数の分離への対応にRuby 2.8.0-devを使うというもの。 2.8.0-devを使えばイージーモードだけど2.7.0縛りプレイだと常人にはクリア不能のむず…

Ginza.rb 第79回

Ginza.rb 第79回 Rails6の新しい定数自動読み込みZeitwerkのコードを読もう!に参加した。会場はメドピアさん。 ginzarb.doorkeeper.jp 表題のとおり今回は Zeitwerk がテーマ。余談だが自分は発音できないのでカタカナ読みでツァイトヴェルクと読んでいたが…

Gem 開発における gemspec と Gemfile への開発 Gem の指定について

昨日の Asakusa.rb 第547回で、hsbt さんに聞いて amatsuda さんたちを交えて話していた表題について書き残しておく。先に記しておくと決定的な結論はない。 Gem を開発する際に、開発時のみに使う Gem を指定する先として gemspec を使った spec.add_develo…

Asakusa.rb 第547回

Asakusa.rb 第547回だった。 ちょうど RubyKaigi 2020 のプロポーザルの提出期限日に Asakusa.rb というタイミングだったので、yahonda さんや joker1007 さんにフィードバックをもらいつつ、締め切り3時間ちょっと前くらいに提出していた。提出が終わったら…