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

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

ci_loggerのv0.7.0をリリースしました

Release v0.7.0 · willnet/ci_logger これまではRails.loggerだけが対象だったのですが、v0.7.0からは次のように、任意のloggerをラップできるようになりました。 your_logger = CiLogger.new(your_logger) your_logger.debug('debug!') # これはテストが失…

大阪Ruby会議03でflaky testについて話してきました

前回の大阪RubyKaigi02に続き、大阪RubyKaigi03でも登壇機会をいただけました。 スライドはこちら。 感想 自分含めみんなflaky testで疲弊しているので、それを仕組みで解決したいぞ、みんなで仕組みを作っていこうぜという発表でした。10分の発表は思ってい…

ci_loggerのv0.6.0をリリースしました

失敗したテストのログだけを出力するぞ - おもしろwebサービス開発日記で 現時点(v0.3.0)ではRSpecのみに対応しています。minitestで使いたい人はPRお願いします :pray: と書きましたがv0.6.0ではminitest対応を入れました。minitest派の方もどうぞご利用く…

Active Recordで関連先を保存するときに気をつけること

先日、仕事でRails(Active Record)の難しい仕様に遭遇したので共有するためにエントリをしたためました。似たようなケースに遭遇した人の手助けになれば幸いです(\( ⁰⊖⁰)/) 対応Railsバージョンと設定 Rails6.1以上 config.active_record.has_many_inversing…

TokyuRuby会議14でmrskについてLTしました

TokyuRuby会議14に参加してLTしてきました。 スライドはこちら。 発表について mrskは個人的にかなり推しているプロダクトで、これの存在により仕事でも個人でも今より安いインフラを活用する選択肢を取りやすくなったと感じています。とりあえず僕が今運用…

Rails 7.0.5以降におけるcreate_associationメソッドの挙動変更についてまとめ

この件、関連するPRやIssueが複数あってコメントも分散しており、人に説明するのがややこしいのでブログとしてまとめたものになります。間違いや意見などあったらコメントください! 追記(2023/08/02) 7-0-stableブランチに今回の変更をrevertするコミットが…

gimei 1.2.0をリリースした

久しぶりに新しいPRがきたので、確認ついでにGitHub Actionsなどの設定も見直して1.2.0としてリリースしました。やっぱり長く運用しているリポジトリだと定期的に見直しが必要ですね…。

株式会社ウィルネットは設立6周年を迎えました

2月21日は弊社の設立記念日です。6周年あっという間ですね。 今日は弊社の設立記念日なのでケーキでも食べたいな、と思ってコンビニに来たがいい感じのものがなかった。来年はケーキ屋で予約でもしようかなあ— willnet (@netwillnet) February 21, 2023 おお…

miucheeをサービス終了します

10年ほど前にサービス開始したmiucheeですが、この度Twitter API有料化を受けてサービス終了することにしました。 10年前はぼくの両親の携帯電話はガラケーでしたが、今となっては二人ともスマホを使うようになり、みてね 経由で孫の写真を共有したり、facet…

wkhtmltopdfの次どうするか問題

wkhtmltopdfというライブラリは、HTMLからPDFを生成してくれるライブラリです。Rubyからだとwicked_pdfや pdfkit 経由で使われることが多いです。 さてそんなwkhtmltopdfですが、GitHubリポジトリ を見るとわかるようにアーカイブされてしまっています。公式…

失敗したテストのログだけを出力するぞ

表題の通りのことができるgem、CiLoggerが便利ですよという話です。 私達は大量のテストをCI上で実行しています。テスト結果を見れば失敗理由が自明なものもありますが、E2Eテストなどでよく起きる「たまに失敗するテスト」の調査はログやスクリーンショット…

iCARE Dev Meetup #34で登壇しました

【iCARE Dev Meetup #34】10年続くRailsアプリ開発のために大事なこと - connpass 所感 長期間アプリケーションを無理なく運用していくには内部品質を一定以上に保つ必要があり、それに注力するためには発表で話した「ふつうのこと」に対するエンジニアをは…

`Thread.current[:hoge]`はスレッドローカル変数を参照していると思いきや実際はファイバーローカル変数だった

このエントリはSmartHR Advent Calendar 2021の23日目の記事です。 SmartHRでは毎週「Rubyist@SmartHR(仮)」という名の定例ミーティング*1が行われています。このミーティングはバックエンドエンジニアが集まり、チームをまたいだ情報共有や相談をすること…

Rack::RuntimeがRailsのデフォルトRackミドルウェアから削除された

Rack::RuntimeというRackミドルウェアがあります。これはリクエストを処理するのにかかった時間を"X-Runtime"というレスポンスヘッダに含める、というものです。コードはこれ↓ rack/runtime.rb at master · rack/rack これはRailsのデフォルトのRackミドルウ…

Gimeiのバージョン1.0.0をリリースした

古いRubyのサポートを切り捨てたこと(Ruby2.2以上サポートになった) 最初にリリースしてから8年近くたっていること から、そろそろ1.0.0にしてもいいんじゃないかな、という気持ちになり1.0.0のリリースに踏み切りました。 ランダムで名前を返す、というコア…

iCARE Dev MeetupでHotwireについて話した

僕がお手伝いしているiCAREさん主催のミートアップ、iCARE Dev Meetupで、最近発表されたBasecamp社製jsフレームワークであるHotwireについて話しました。 【iCARE Dev Meetup #18】技術顧問が語る、Ruby on Rails実践開発 - connpass 動画も公開されている…

TurbolinksからTurboへの移行

弊社サービスである savanna.io はずっとTurbolinksとStimulusで開発してきたのですが、この度 Hotwireがリリースされた*1のでTurbolinks部分をTurboに置き換えてみました。その際のやったことやハマったことのメモを残しておきます。メモ書きなので雑なのは…

Railsアプリケーションのテストが失敗したときにどうしたらいいのか

本エントリはiCARE Advent Calendar 2020の25日目です。 僕はiCARE社内で技術顧問としていろんなことをやっていますが、そのうちの一つとしてRailsアプリケーションのテスト改善があります。具体的には「たまに失敗するテスト」で難しいものがあったときに調…

APIに利用制限をかけるとしたらどういうやりかたがあるのか

この記事はSmartHR Advent Calendar 2020 11日目の記事です。 僕のお手伝いしているSmartHRでは、毎週バックエンドエンジニアが集まり、技術的なトピックについて共有、相談しあうミーティングを開催しています。そのミーティングでは僕がTipsなどを共有する…

iCARE Dev Meetup #12 で登壇した

顧問先のiCAREさん主催のミートアップで登壇しました。技術顧問に対するインタビューを受けてから、Rails 6.1の新機能の話をするという構成。 技術顧問が語る最新Ruby on Rails/Vue.js iCARE Dev Meetup #12 - connpass スライドはこちら。 speakerdeckだとP…

パーフェクト Ruby on Rails改訂2版のサンプルコードについて

パーフェクト Ruby on Railsの改訂2版を書きました - おもしろwebサービス開発日記の続き。 いよいよ明日発売日ですね。前のエントリで書き忘れてたことがあったので追記です。 本書の6章からは、Railsのサンプルアプリケーションを作っていきます。技術評論…

パーフェクト Ruby on Railsの改訂2版を書きました

ここ数年、色んな人に「パーフェクト Ruby on Railsの改訂版まだですか」と言われて申し訳ない気持ちでいっぱいでした。が、ついに改訂版が発売されることになりました!もちろん最新のRailsである6.0に対応しています。 発売日は7月25日ですが、先行して発…

我々はConcernsとどう向き合うか

この文章は先日開催された大阪Ruby会議02での登壇内容Concerns about Concernsをブログエントリにしたものです。書いている内容は登壇内容とだいたい同じですが完全一致ではなく、構成を変更したり喋っていない情報を足したりしてます*1。 大阪Ruby会議02に…

Ruby on Rails 6 エンジニア 養成読本という本を書きました

@sugamasaoさんと共著でRails本を執筆しました。Railsを始めたばかりの人向けの特集から、Rails 6の新機能紹介まで幅広く書かれたムック本です。今日から9日後の10月26日に発売予定です(電子書籍も同じくらいに発売されるはず)。 Ruby on Rails 6 エンジニア…

大阪Ruby会議02でConcernsについて発表してきました

先日開催された大阪Ruby会議02で、なんとなく使われがちな機能であるConcernsの使い方について話してきました。資料はこちら。 発表内容について Concernsに関する説明は「関心事を分離するぞ!」のような抽象的なものが多く、 何を関心事として分離するとよ…

ajax_error_renderer 0.2.0をリリースした

個人的に便利に使っているajax_error_rendererなのだけど、フォームが長いときに「エラーメッセージがブラウザのスクリーン外に表示されてしまいユーザが気づけない」というケースがあったので、デフォルトでエラーメッセージのある場所までスクロールするよ…

Rails Developers Meetup 2019で、再び綺麗なテストコードの書き方について発表した

先日行われたRails Developers Meetup 2019で、Clean Test Code Revisedというタイトルで発表しました。スライドはこちら。 動画も上がっているようなので興味のある方はどうぞ*1。 所感 ご存知のかたもいると思いますが、この発表は2017年5月に行われたRail…

株式会社ウィルネットは設立2周年を迎えました

昨日、2月21日は弊社の設立記念日でした*1。 株式会社ウィルネット二周年記念 (\( ⁰⊖⁰)/) (\( ⁰⊖⁰)/) (\( ⁰⊖⁰)/) pic.twitter.com/Ll3nDwbl4X— willnet (@netwillnet) 2019年2月21日 というわけで法人成りして2年経ちました。最初はフリーランスの延長のつも…

銀座Railsで「個人でつくるwebサービス」という話をした

昨日行われた銀座Railsで登壇させていただきました。 資料はこちら。 所感 複数の主張したいことを一つの発表に盛り込んでしまったので、ちょっとぼんやりした発表になってしまったかもなーという反省があります。 個人でwebサービス作るのはいいぞ 個人開発…

turbolinksとform_withを便利に使うためのgemを作った

前提 rails標準のわりに使っている人の少ないturbolinksですが、僕は便利に使っています。turbolinksはご存知の通り、リンクを全部ajaxリクエストに置き換えてページ遷移を早くするライブラリです。 turbolinksが実現している「リクエストは全部ajaxにして、…