おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

2025-01-01から1年間の記事一覧

GitHub Sponsorsを始めました

始めてみました。 github.com ここ最近はseed-fuをforkしたり、gonのメンテナになったり、Sorceryのメンテナになったりと、メンテが滞っているライブラリの手助けをすることが増えてきました。あとCIが整っていないライブラリを見つけたら直すというのをちょ…

seed-do v3.2.0をリリースしました

先程 seed-do v3.2.0をリリースしました。変更内容は内部改善のみです。詳細は以下のリンクからどうぞ。 Release v3.2.0 · willnet/seed-do seed-doの改善モチベがあがってきた 以前のエントリではseed-doのメンテナンス方針に関して次のように書いていまし…

RailsでCSRFトークンを使うことで防ぐことのできる攻撃について

Rails8.2ではCSRFトークンを使わずにCSRFを防げるようになりそう - おもしろwebサービス開発日記の続きです。前回のエントリではRails8.2からトークンを使わずにCSRFを防ぐ仕組みが入るぞ、という話をしました。偽陽性がかなり減ることが予想されるため、個…

Rails8.2ではCSRFトークンを使わずにCSRFを防げるようになりそう

RailsではCSRF攻撃を防ぐために、フォームからのリクエスト送信時に自動でトークン(Authenticity Token)を付与して検証する仕組みを持っています。この仕組みがデフォルトで有効になっているため深く考えなくてもセキュアな実装になる点は便利です。一方で、…

ginza.rb 第94回を開催してRails8.1について学んだ

Ginza.rb 第94回 - Rails8.1について学ぶぞ - connpass 第94回は10月22日にリリースされたRails8.1について学んでいきました。 メジャーフィーチャーについてy-yagiさんのまとめた資料を参考にしつつ学び、マイナーフィーチャーと関連した話題について僕のつ…

Sorceryのメンテナになってv0.18.0をリリースした

SorceryはRails向けの認証用ライブラリです。2025年現在ではRailsで認証と言えばdeviseを思い浮かべる人が多いと思いますが、10年ほど前はもっと多様な選択肢があり、その選択肢の中にはSorceryも入っていました。 Sorceryを使う利点の一つは比較的素朴に作…

rakeタスクはconfig.rake_eager_loadを設定しないと本番環境でもeager loadしない

これはRuby/Rails Advent Calendar 2025 の 5日目の記事です。 Ruby/Rails - Qiita Advent Calendar 2025 - Qiita 次のPRで、Rails8.2でrails newしたときに生成されるconfig/environments/test.rbにconfig.rake_eager_load = ENV["CI"].present?が追加され…

gonのv6.6.0をリリースしました

gemたちをRails8.1に対応させた - おもしろwebサービス開発日記の続き。CIを頑張って整備してRails8.1でも動くことを確認したので新しいバージョンv6.6.0をリリースしておきました。テストやCI以外の修正はないのでシュッとアップグレードできるはずです。ど…

RubyWorld Conference 2025でメタプログラミングRuby問題集について登壇してきました

先日開催されたRubyWorld Conference 2025にて、「メタプログラミングRuby問題集の活用」というタイトルで kinoppydさんと一緒に登壇してきました。スライドはこちら。 SmartHR Tech Blogにてkinoppydさんも同様に登壇してきましたエントリを書いています。…

ginza.rb 第93回を開催してKaigi on Rails 2025の振り返りをした

Ginza.rb 第93回 - Kaigi on Rails 2025の振り返りをするぞ - connpass 第93回はKaigi on Rails 2025の振り返りをしました。 何を振り返ったか 僕含めて2人の登壇者が参加していたので、まず登壇者からの発表に関する話(どういう観点で登壇内容を決めたのか…

gemたちをRails8.1に対応させた

自分のリポジトリ配下にあるRails関連gemのCIにRails8.1を足す作業をしてバージョンアップしました。どのgemも特別な対応は不要でスッと対応できました。 Release v0.4.0 · willnet/a-nti_manner_kick_course Release v3.1.0 · willnet/seed-do Release v1.0…

Rails8.1のマイナーフィーチャーをまとめました

今日Rails8.1.0がリリースされましたね。めでたい。前回Rails8.0がリリースされたときはginza.rb駆動でマイナーフィーチャをまとめましたが、早くまとめたほうがお手伝い先含めてみんなでワイワイできて便利、ということで取り急ぎgistにまとめておきました…

Kaigi on Rails 2025で認証の話をしました #kaigionrails

2025年9月26~27日に開催されたKaigi on Rails 2025にて「rails g authenticationから学ぶRails8.0時代の認証」というタイトルで登壇してきました。スライドはこちら。 動画もたぶん近日中に公開されるのではないでしょうか。 スライドにもあるのですが、9月2…

ながらRuby会議01に参加してスポンサーLTをしました #nagara01

2025年9月6日に開催されたながらRuby会議01において、お手伝い先のSmartHRさんのスポンサーLTとして登壇させていただきました。岐阜は初めて訪れましたが自然が豊富でありつつも街もそれなりに大きくて良い場所だなと感じました。 天命反転してきました #nag…

Sidekiqを利用しているときにテストで気をつけること

Testing · sidekiq/sidekiq Wiki にあるように、sidekiqをテストで利用する際には3つのモードがあります。 fake(デフォルト) inline disable これらを切り替えるメソッドとしてSidekiq::Testing.fake!などがあります。これらのメソッドはブロックを受け付け…

株式会社ウィルネットはプログラミングRuby 第5版の翻訳を支援します

日本語で読めるRubyの本をもっと増やしたいので、プログラミングRuby 第5版 翻訳支援の募集に応募して企業スポンサーをすることにしました。 いまどきはAIにプログラミングに関する質問ができますが、正確性や網羅性という点でまだまだ書籍の価値は高いと思…

ginza.rb 第92回を開催してアプリケーションサーバについて学んだ

Ginza.rb 第92回 - アプリケーションサーバについて学ぶぞ - connpass 第92回はRubyから使うアプリケーションサーバについて学びました。 アプリケーションサーバ2025 実は第75回や第76回でもその当時新しかったアプリケーションサーバについて学ぶというの…

続・wkhtmltopdfの次どうするか問題

wkhtmltopdfの次どうするか問題 - おもしろwebサービス開発日記の続き。 上の記事でも書いていますが、令和の今RailsアプリケーションでPDFを生成する基本的な方針としては次の2択だと思っています。 chromeを使ってHTMLからPDFに変換する Thinreports など…

gon v6.5.0をリリースした

gonのメンテナになった - おもしろwebサービス開発日記 の続き。 新しいRubyで出るwarningやエラーなど一通り対応できたかな、という状況になったので作者からrubygems.orgにpushする権限をもらってv6.5.0をリリースしました。使ってみてなにかおかしいとこ…

gonのメンテナになった

gazay/gon: Your Rails variables in your JS お手伝い先で使っているので見てみたら最終コミットが4年前でIssueやPRが積み重なっており、CIはTravisCIという状況。メンテされないgemとどう向き合うか。“普通のOSS開発者” willnetさんの取り組み で書いたよ…

ginza.rb 第91回を開催してGumroadについて学んだ

Ginza.rb 第91回 - Gumroadのソースコードを読むぞ - connpass 第91回はOSSになったGumroadのコードを読みました。 Gumroad 実際にお金を稼いでいるアプリケーションのコードをOSSにして、外部コントリビュータのPRをうけつつその上で開発を進めるというのは…

Action MailboxをAWS SESで利用する

「メール受信をトリガーにしてなにかする機能」であるAction MailboxはRails6.0からRailsに追加された機能です。なかなか実際に使うことがなかったのですが、最近機会に恵まれてAction Mailboxを導入したので簡単に概要を書き残しておきます。ingress*1にはA…

seed-fuをforkした

昨日Findyさんに寄稿した記事が公開されました。もしまだ読んでない方いたら読んで記事下部にある「応援」ボタンをポチッと押してください。Ruby Associationへ応援の数 * 100円寄付されます。 メンテされないgemとどう向き合うか。“普通のOSS開発者” willne…

ginza.rb 第90回を開催してWasmについて学んだ

Ginza.rb 第90回 - Wasmについて学ぶぞ - connpass 第90回はWasmについて学びました。 Wasm y-yagiさんの作ってくれた資料を見ながらワイワイしました。 Wasmはいろんな環境で動くけど、個人的にはやっぱりRubyがブラウザで動くぞというところに魅力を感じま…

OmniAuthを利用しているプロジェクトのSystemテストでログインを可能な限り省略する

大抵のwebサービスのSystemテストは、ログインしてから何かをすることになると思います。ログイン機能のテストはちゃんとある前提で、ログインのために「トップページ→ログインページ→ログイン処理→ログイン画面」までの遷移を毎回やるのは時間がかかる。 de…

rails g authenticationで生成されるコードを眺めて気になったこと

Rails8からrails g authenticationで簡単な認証用のコードが生成できるようになりました。これまで認証といえばdevise gemが定番でしたが、rails g authentication(以下認証ジェネレータと呼びます)もこれから一定使われるようになるのではないかと想像して…

RackアプリケーションをLambdaでホスティングしてみた

最近、Lamby というRackアプリケーションをAWS Lambda上で動かすためのGemを使って、RackアプリケーションをAWS Lambda上で動かしてみました。簡単に使えて良い感じだったのでメモしておきます。 前提 もともとm3 tech blogの記事 を見てLambdaでもRailsを動…

prependとaliasは混ぜるな危険

これはRubyKaigi 2025のLT用に出したプロポーザルの内容をブログエントリにしたものです。プロポーザルは落選したのでここに書くことで供養しておこうと思います。 導入 既存のメソッドの定義を再利用しつつ新しい振る舞いを追加する方法としてはModule#prep…

ginza.rb 第89を開催してHanamiについて学んだ

Ginza.rb 第89回 - Hanamiについて学ぶぞ - connpass 第89回は、8年ぶり2回目*1のHanamiについて学ぶ回でした。 Hanami 2.2 y-yagiさんが用意してくれた資料を見ながらワイワイしました。 前回のHanami回は1.0のときに実施したのですが、今回は2.2。1.0のと…

Railsで使うビューテンプレートエンジンのベンチマーク2025

Railsでよく使われるテンプレートエンジンとしてerb(erubi)、haml、 slimがあります。パフォーマンスの観点だけをとりあげたとき、約5年前に パーフェクトRuby on Rails【増補改訂版】 を書いたときには、速い実装を選べば速度差は特にないという認識でした…