2020-07-21 [長年日記]
_ パーフェクトRails 増補改訂版
2020年7月25日に パーフェクトRails 増補改訂版 が発売されます。私も執筆チームに加わってこの本に携われたことを嬉しく思います。
パーフェクトRails初版も素晴らしい本で、読み込んでかなりRails力を上げてもらった記憶があります。特にrack, rack middleware, railtie, engineといった話題は他の日本語の本では触れられてる本は少ないのではないでしょうか。(今回の増補改訂版ではほぼ0からの執筆で構成も大きく変わったため残念ながらこの一部はなくなってしまったのですが、rack, rack middlewareは引き続き解説してあります。)
そんな良い本であるパーフェクトRails初版は2014年発売で、Rails4.1をベースに書かれていました。良い本だが、いかんせん古いので「改訂しないかなー、してくださいよー、まだですかー?」としつこく筆者陣をつついていたところ、執筆チームへの加入を打診され、きれいにブーメランが決まったと言えます。
しつこく改訂を促していたのには理由があり、この本が必要だったからです。私は企業で新人研修をやっていたり、スクールのお仕事もお手伝いしていますが、このレベル感の本が必要なのに、存在しなくて困っていました。Railsの基礎を学んだ人たち(Rails Tutorialや現場Rails本、黒田さんのRails本などはできるようになった人たち)が、「何やら知らない世界がまだあるようだが、それらは何なのだ?」という世界を知るための本です。Railsの書籍には入門書を超えるレベルで網羅的なものがなく、昔はレシピブックもありましたがobsoleteになってしまい、ここ数年はWEB+DB PRESSの記事くらいでした。
パーフェクトRailsは必要な本であるし、初版でとてもお世話になったので、これはぜひ世の中に出したいと思って去年の年末にjoin、半年程の執筆期間で無事に世の中へ出すことができそうです。前からいた人たちはきっと2年以上書いていたのだと思います。本当におつかれさまでした。
「ゼロからわかるRuby超入門」とは書き方が全く違って、パーフェクトRailsはまた違った執筆のたのしさを味わうことができました。日々の仕事とのリンクが強く、また執筆チームとレビュアー陣が凄腕のみなさんだったので勉強になることもたくさんありました。成長できてありがたやです。超入門とパーフェクトRailsの執筆中の思考の違いは9月にある とちぎRuby会議09 でも少しお話しできたらいいなと思います。(まだ内容を考えてないのでうまくまとまれば・・・)
私の担当は5章、7章、9章で、印象に残っているのはminitestかrspecかを選ぶところで、みんなrspecしか書いたことないのでrspecを選ぶのが無難ではあったのですが、現状だとminitestの方がメリットが大きかろうということでminitestを選びました。Railsアプリのminitestの資料はまだ少ないので、参考にしてもらえたら嬉しいです。書いててたのしかったのは5章のActiveJobやActiveStorageなどのRailsが提供する機能ですね。Railsのコードを読んで、こんなに丁寧にドキュメントがコード内に書かれているのかと(api.rubyonrails.orgの元になっているものです)驚きながら読み進めるのが楽しかったです。
それと、9章で紹介しているGitHub Actions、書き終わったあとにシステムテスト失敗時のスクショを取れると便利と分かったのでここに書いておきます。あと1ヶ月早く気づいたら載せられたのに・・・申し訳ない・・・。
また、koicさんがRuboCopのアフターフォローを書いてくださっていますのでこちらもご活用くださいましたら。
- パーフェクトRuby on Rails【増補改訂版】をレビュアー献本いただいた: https://koic.hatenablog.com/entry/perfect-ruby-on-rails-using-rails-60
- パーフェクトRails 増補改訂版: https://gihyo.jp/book/2020/978-4-297-11462-6
GitHub Actions上で実行したファイルの取得
- たとえばsystem testが出力したスクショをダウンロードする方法
- 直接アクセスできないので、upload-artifactアクションを利用してアップロードして、ブラウザからDLします
- .github/workflow/ruby.yml に以下を追記
...
- name: Run test
run: |
...
- name: Upload
uses: actions/upload-artifact@v2 # 利用するアクションを指定
if: failure() # 失敗したときだけ実行
with:
name: my-uploads
path: tmp/screenshots/ # uploadするパス(Rails rootからの相対パス)
-
利用するアクション: https://github.com/actions/upload-artifact
-
CIジョブ終了後にActionsのArtifacts欄からDLできる
ほかの方のブログ
- 櫻井さん(丁寧に書いていただきありがとうございます): https://note.com/tatsuosakurai/n/n86b6158929bc
- koicさん(前述): https://koic.hatenablog.com/entry/perfect-ruby-on-rails-using-rails-60
- willnetさん: https://blog.willnet.in/entry/2020/07/17/100350
- jokerさん: http://joker1007.hatenablog.com/entry/2020/07/20/171816