- Ruby / Rails関連
週刊Railsウォッチ: Turbo Nativeアプリ、書籍『Everyday Rails Testing with RSpec』新版執筆開始ほか(20240227後編)
こんにちは、hachi8833です。今回の後編は翌週となりました🙇。
🔗Rails
🔗 Solid QueueをDocker開発とHerokuで利用する(Ruby Weeklyより)
つっつきボイス:「Rails 8で導入されるSolid Queueを早速使ってみた記事だそうです」「HerokuはDockerイメージでもデプロイできるので、DockerでSolid Queueが動くのであればHerokuでも動くでしょうね」「ところで昨今はHerokuでDockerを使わずにアプリをデプロイしている人っているのかな?」「自分はまだHerokuでDockerなしのbuildpackベースでRailsアプリを動かしてます😅」
# 同記事より
services:
# [...]
solid_queue:
build: .
stdin_open: true
tty: true
command: bundle exec rake solid_queue:start
depends_on:
- database
environment:
- DATABASE_URL=postgresql://postgres@database
volumes:
- .:/usr/src/app
- gem_cache:/gems
🔗 Turbo NativeでWebアプリをストアに乗せる(Ruby Weeklyより)
つっつきボイス:「Turbo NativeはTurboを使うWebアプリをiPhoneアプリやAndroidアプリのストアに乗せられるようにする機能でHotwire/Turboのラインナップの1つですけど、日本語の情報をあまりみかけないですね」
「記事はTurbo Nativeはいいよという紹介にとどまる感じだけど、ストアで公開されているTurbo Nativeアプリのディレクトリが引用されている↓」「思ったよりいろいろリリースされているんですね」
https://t.co/eYmh4tGWxc has a fresh new look thanks to first-time contributor @nleonid 👏🏻 🙌🏻 pic.twitter.com/ecAxOqMy5e
— Rob Zolkos (@robzolkos) January 17, 2024
「37signalsのBasecampアプリやHEYアプリは当然というかiPhone版とAndroid版が両方あるのね」「TurboというかHotwireはRails以外でも利用できるけど、Turbo Nativeとの関係とか使い方がまだよくわからない...」
参考: turbo-ios/Docs/Overview.md at main · hotwired/turbo-ios
参考: turbo-android/docs/OVERVIEW.md at main · hotwired/turbo-android
🔗 mission_control-jobs: Solid Queueと連携するActive Job用ダッシュボード(Ruby Weeklyより)
つっつきボイス:「37signals(旧Basecamp)がみずからActive Job+Solid Queue用のダッシュボードを公開したんですね🎉」「たしかにこういうSidekiqのWebコンソールみたいなジョブダッシュボードは欲しいし必要👍」
同リポジトリより
🔗 書籍『Everyday Rails Testing with RSpec』の更新版が2024年にリリース予定
つっつきボイス:「お、Everyday Rails本が更新される👍」「この書籍はRails 3ぐらいの頃からありますけど、本当に絶えずアップデートを繰り返していますよね」
つっつき後に以下のXポストを見つけました。
祝10周年!ということで、ブログを書きました。本書を持ってるよーというかたはRTしてもらえると嬉しいです!(コメントも添えてもらえるとさらに喜びます😄)
日本語版「Everyday Rails - RSpecによるRailsテスト入門」が発売10周年を迎えました 🎉 - give IT a try https://t.co/6jWynwH7gA
— Junichi Ito (伊藤淳一) (@jnchito) February 25, 2024
🔗 その他Rails
- 元記事: Ruby on Rails — Apply to speak at Rails World 2024 in Toronto - CFP open until March 21(Rails公式ニュースより)
つっつきボイス:「今年9月に開催予定の第2回Rails World 2024のCFP募集が公開されたそうです」「第1回はオランダのアムステルダムだったけど、今度はカナダのトロントで開催なのね」
「最近Railsの公式Xアカウントが#RailsTipというハッシュタグで便利技を随時公開していることに気づきました」「お〜、Rails 7.1でlog_file_size
でログサイズに上限を設定できるの便利」「development環境とtest環境では100MiBがデフォルトだけど、それ以外の環境では上限が設定されていないんですね」「ログは油断するとギガサイズになっていたりするので、必要なら設定しておきたい👍」
Rails 7.1 has a new `log_file_size` config to keep your logs from growing out of control. It defines the maximum size of your log file in bytes. The default log file size in the development and test environments is 100 MiB, but is unlimited in all other environments. #RailsTip pic.twitter.com/xDrfvO8VwG
— Ruby on Rails (@rails) January 31, 2024
参考: §3.2.40 config.log_file_size
-- Rails アプリケーションの設定項目 - Railsガイド
🔗Ruby
🔗 emirb: ブラウザで動くIRB(Ruby Weeklyより)
つっつきボイス:「RubyコミッターのmameさんがemirbというブラウザIRBを作りました」「emscriptenとxterm.jsを使ってるのか」「言われてみればオートコンプリートなども含めてIRBをフルで動かすにはターミナル環境が必要ですね」
長年の念願だった Emscripten と xterm.js でブラウザで irb を動かすやつがついに(一応)できたhttps://t.co/ubentOzj7p
— Yusuke Endoh (@mametter) January 27, 2024
🔗 ruby.wasmでRuby Next Playgroundを構築(Ruby Weeklyより)
- 元記事: First steps with ruby.wasm: or how we built Ruby Next Playground—Martian Chronicles, Evil Martians’ team blog
- サイト: Ruby Next Playground
つっつきボイス:「Evil MartiansもRubyとWebAssemblyの記事を出していました(翻訳は近日公開予定)」「こちらはRuby Nextのプレイグラウンドを作ったのか」「RubyとWasm盛り上がってますね」「RubyがWasmで動くのはありがたい」
「Wasmといえば、最近VSCodeのブラウザ版が、Wasm環境でx86環境をエミュレーションしてそこでDockerを動かすということを始めましたね↓」「お〜、そんなこともできるようになったとは」「そうそう、自分もこの記事見ました」「VSCodeそのものではなく、あくまでブラウザ版のVSCodeの話ですけどね」「ということはChromebookでも追加設定なしでブラウザ版VSCodeからDockerが使えるのか、凄い」
参考: Web版VSCodeがDockerコンテナをWASM環境で起動、Webブラウザ内ローカルマシンとして利用可能に。拡張機能「vscode-container-wasm」登場 - Publickey
🔗 Rubyの__FILE__
(Ruby Weeklyより)
つっつきボイス:「Rubyには__FILE__
とか__LINE__
のような面白い疑似変数がありますよね」
# 同記事より
class_eval <<-RUBY, __FILE__, __LINE__ + 1
def #{sym}(...)
custom(Mime[:#{sym}], ...)
end
RUBY
module_eval <<-CODE, __FILE__, __LINE__ + 1
def #{option_name}
options[:#{option_name}]
end
def #{option_name}=(value)
options[:#{option_name}] = value
end
CODE
参考: 擬似変数 -- 変数と定数 (Ruby 3.3 リファレンスマニュアル)
「個人的にはDATA
と__END__
でコード末尾に生データを直接書けるのが好きかな↓」「そういえばこんな機能がありましたね」「知らない人が見たらびっくりすると思うけど、昔からRubyにある機能で、作り捨てのスクリプトでは結構便利👍」
参考: Object::DATA
(Ruby 3.3 リファレンスマニュアル)
# docs.ruby-lang.orgより
print DATA.gets # => 故人西辞黄鶴楼
print DATA.gets # => 烟花三月下揚州
print DATA.gets # => 孤帆遠影碧空尽
print DATA.gets # => 唯見長江天際流
DATA.gets # => nil
__END__
故人西辞黄鶴楼
烟花三月下揚州
孤帆遠影碧空尽
唯見長江天際流
🔗 設計
🔗 GPSが1.5秒刻みで時刻をカウントする理由
つっつきボイス:「1秒刻みではなく1.5秒刻みとはこれいかに」「1週間は7日x24時間x60分x60秒=604,800秒なので、1秒刻みだと本来2進数では20bit(2^20=1,048,576)が必要だけど、1.5秒刻みにすれば19bitに収まるのね」「さらに航法メッセージでは17bitしか使えないという制約があるけど、時刻が1.5秒刻みで、かつ送信が6秒に1回になっていることで、倍数の関係で19bitの下位2bitが常に00になるので17bitで済むのか、へ〜!」「うまく考えたものですね」「たしかに送信が6秒に1回なら1秒刻みの解像度にする必要はないでしょうね」
🔗CSS/HTML/フロントエンド/テスト/デザイン
🔗 Turbo Laravel
- サイト: Turbo Laravel
Turbo Laravelのちゃんとしたサイトができててぶち上がってるhttps://t.co/y8mbutOW6l
— かりんとうマニア@ロンドン🇬🇧 (@karintozuki) July 5, 2023
つっつきボイス:「PHPのWebフレームワークとして有名なLaravelに、HotwireのTurboを乗せた人がいるそうです」「37signalsがやっているのかなと思ったけど独自に作ったっぽい」
「そういえばHotwireのヒントにもなったらしいと言われるLivewireというものは前からLaravelにもあるのを思い出しました↓(過去記事)」
参考: Livewire | Laravel Livewire
🔗言語/ツール/OS/CPU
🔗 書籍『Architecture and Design of the Linux Storage Stack』
使い方の本ではなく、カーネルレイヤを中心として内部を解説した本。ソースコードをたくさん出すわけではないが一部関数の仕様や構造体の説明があるなど、これからソースコードを読みたい人には役立ちそう。去年出た本なのでI/OスケジューラでいうとBFQやKyberなんかも載ってる
— sat (@satoru_takeuchi) February 14, 2024
つっつきボイス:「お、Linuxのストレージスタックに特化した本か: 特定のファイルシステムというより、VFS(virtual file system)から下を扱う感じのようで、SCSIまで取り上げているからハードウェアレイヤまでカバーしているっぽい」「Device MapperやI/Oスケジューラといったものも扱っているんですね」「このあたりを丁寧に解説した本は貴重そう👍」
- 仮想ファイルシステム (VFS) と、それが実際のファイルシステムの抽象化レイヤとしてどのように機能するかを解説
- ブロック層がファイルシステムと物理ストレージの間の仲介者としてどのように機能するかを理解する
- ストレージメディアにリンクされた物理レイアウトとプロトコルを確認する
Amazonより
参考: Small Computer System Interface - Wikipedia -- SCSI
後編は以上です。
バックナンバー(2024年度第1四半期)
週刊Railsウォッチ: form_withのmodelオプションへのnil渡しが非推奨化、Dockerfileでjemallocが有効にほか(20240221前編)
- 20240207後編 aws-sdk-rubyの全gemにRBSファイルが追加ほか
- 20240206前編 Pumaのデフォルトスレッド数変更、Rails 1.0をRuby 3.3で動かすほ
- 20240125後編 RailsコントローラのparamsはHashではない、ruby-enumほか
- 20240123前編 Railsの必須Rubyバージョンが3.1.0以上に変更ほか
- 20240119後編 Ruby 3.3でYJITを有効にすべき理由、Turbo 8の注意点8つほか
- 20240117前編 Rails 8マイルストーン、2023年のRails振り返り、Solid Queueほか
ソースの表記されていない項目は独自ルート(TwitterやはてブやRSSやruby-jp SlackやRedditなど)です。
週刊Railsウォッチについて
TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)