タグ

ブックマーク / blog.willnet.in (36)

  • Railsの設定をアップグレードしていく技術 - おもしろwebサービス開発日記

    このエントリは SmartHR Advent Calendar 2023の21日目の記事です。 Railsのバージョンを上げる作業は、単に新しいバージョンのgemをインストールするだけでは終わりません。Railsの新しいバージョンに沿った設定項目を確認し、適宜適用していく必要があります。もちろん必ずしもすべての設定を最新にしなければならないわけではありませんが、Railsの新しい設定というのは基的にそうすることにメリットがあるから作られているわけで、特別な理由がなければ最新の状態にしておきたいものです。 みなさんのRailsアプリケーションのconfig/application.rb には次のような設定があるはずです。 config.load_defaults 6.1 このコードサンプルは引数が6.1なので、Rails6.1デフォルトの設定を適用していることを示しています。これを7.0に

    Railsの設定をアップグレードしていく技術 - おもしろwebサービス開発日記
    Watson
    Watson 2023/12/21
  • Kaigi on Rails2023で例外について発表してきました - おもしろwebサービス開発日記

    Kaigi on Rails初のオフライン開催であるKaigi on Rails 2023で登壇する機会をいただけました。 例外は遅い 資料と動画は こちら から辿れます。 ちょっと間が空いてしまいましたが、以下登壇に関連してつらつら思いついたことを書いています。 なんでこの題材で話をしたんですか これまでのKaigi on Railsの発表内容から 明日の業務から使えるRailsの知見 Railsアプリケーション開発の実例 に関連したキャッチーなテーマが採択されやすんだろうな〜、とあたりをつけていました。僕は前者のネタはたくさんストックがある*1ので、その中で みんな興味がありそう 既存の書籍や記事ではあまり取り上げられていない題材 として、例外がよさそうだとなったのでした。発表でも言及した destroyじゃなくてdestroy!を使いましょう rescue_fromだけでエラーハンド

    Kaigi on Rails2023で例外について発表してきました - おもしろwebサービス開発日記
    Watson
    Watson 2023/11/22
  • Active Recordで関連先を保存するときに気をつけること - おもしろwebサービス開発日記

    先日、仕事Rails(Active Record)の難しい仕様に遭遇したので共有するためにエントリをしたためました。似たようなケースに遭遇した人の手助けになれば幸いです(\( ⁰⊖⁰)/) 対応Railsバージョンと設定 Rails6.1以上 config.active_record.has_many_inversing = true(Rails6.1のデフォルト設定)である 問題1 まず次のコードを読んでみてください。 class User < ApplicationRecord has_many :posts end class Post < ApplicationRecord belongs_to :user, inverse_of: :posts # (1) before_update { puts 'before_update' } end user = User.new po

    Active Recordで関連先を保存するときに気をつけること - おもしろwebサービス開発日記
    Watson
    Watson 2023/08/10
  • Rails 7.0.5以降におけるcreate_associationメソッドの挙動変更についてまとめ - おもしろwebサービス開発日記

    この件、関連するPRやIssueが複数あってコメントも分散しており、人に説明するのがややこしいのでブログとしてまとめたものになります。間違いや意見などあったらコメントください! 追記(2023/08/02) 7-0-stableブランチに今回の変更をrevertするコミットが入りました。挙動が変わって困った人が出たので一度元に戻して仕切り直しにする方針のようです。 [7-0-stable] Revert singular association breaking changes by zzak · Pull Request #48809 · rails/rails 7.0.7がいつリリースされるかはわかりませんが、今の状態でリリースされたら7.0.4の振る舞いに戻ることになります。7.0.5以降の変更で困っている人は一旦7-0-stableを指すようにすると良いかもしれません。 概要 Ra

    Rails 7.0.5以降におけるcreate_associationメソッドの挙動変更についてまとめ - おもしろwebサービス開発日記
    Watson
    Watson 2023/07/04
  • 失敗したテストのログだけを出力するぞ - おもしろwebサービス開発日記

    表題の通りのことができるgem、CiLoggerが便利ですよという話です。 私達は大量のテストをCI上で実行しています。テスト結果を見れば失敗理由が自明なものもありますが、E2Eテストなどでよく起きる「たまに失敗するテスト」の調査はログやスクリーンショットなど、可能な限りの情報を集めないと根原因がつかめないことが多いです。 そんなときに、特に考えずRailsデフォルトの設定(config.log_level #=> :debug)のままにしておくと、膨大なログの中から該当するテストに関連する行を探し当てる作業が必要になります。これは事前の準備なしではほぼ不可能です。 事前の準備として簡単に思いつく方法は、テスト前後で「どのテストが開始/終了したか」をログに出力することです。 config.around do |example| Rails.logger.debug("start exam

    失敗したテストのログだけを出力するぞ - おもしろwebサービス開発日記
    Watson
    Watson 2022/08/25
  • パーフェクト Ruby on Railsの改訂2版を書きました - おもしろwebサービス開発日記

    ここ数年、色んな人に「パーフェクト Ruby on Railsの改訂版まだですか」と言われて申し訳ない気持ちでいっぱいでした。が、ついに改訂版が発売されることになりました!もちろん最新のRailsである6.0に対応しています。 発売日は7月25日ですが、先行して発売している書店もあるそうです。 パーフェクトRuby on Rails 【増補改訂版】:書籍案内|技術評論社 ブログで振り返ると、第1版を書いたのは6年前だったようです。6年前といえばRailsは4.1がリリースされた頃で、フロントエンドはCoffeeScriptを書いてSprocketsでコンパイル、デプロイはCapistranoを使うのが主流だったような気がします。6年でだいぶRailsによる開発の進め方が変わりましたね。このあたりはもちろん第2版で更新されて、WebpackerやDockerに置き換わっています。 改訂2版の

    パーフェクト Ruby on Railsの改訂2版を書きました - おもしろwebサービス開発日記
    Watson
    Watson 2020/07/17
  • 大阪Ruby会議02でConcernsについて発表してきました - おもしろwebサービス開発日記

    先日開催された大阪Ruby会議02で、なんとなく使われがちな機能であるConcernsの使い方について話してきました。資料はこちら。 発表内容について Concernsに関する説明は「関心事を分離するぞ!」のような抽象的なものが多く、 何を関心事として分離するとよいのか Concerns以外のロジックを分離する方法 を知らずに自分なりの解釈でConcernsを使うとかえってコードを読みづらくする形でmoduleが作られることになりがちです。この発表を通じて少しでも読みやすいRailsアプリケーションのコードが増えてほしいなと思います。 もし内容について感想や質問などを書きたい方がいたら、clean-rails.orgにこの発表用のスレが立っているので書き込みお願いします! このスライドだけだと分かりづらいところがありそうなので、どこかで再演するなり別途文章として公開したいところです*1。

    大阪Ruby会議02でConcernsについて発表してきました - おもしろwebサービス開発日記
    Watson
    Watson 2019/09/24
  • Rails Developers Meetup 2019で、再び綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記

    先日行われたRails Developers Meetup 2019で、Clean Test Code Revisedというタイトルで発表しました。スライドはこちら。 動画も上がっているようなので興味のある方はどうぞ*1。 所感 ご存知のかたもいると思いますが、この発表は2017年5月に行われたRails Developers Meetup第一回目で発表した内容を更に一歩進めたものとなっています。 Rails Developers Meetup で綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記 当時僕の頭の中にあった「こういうケースのときはこう書く。なぜならこうだから」というものを点で出したのが前回の発表で、それらを「脳に負荷をかけない」という線でつなげてまとめたのが今回の発表になります。 テストコードをレビューしたときに「これなんか読みづらいな…」と思って

    Rails Developers Meetup 2019で、再び綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記
    Watson
    Watson 2019/03/28
  • Railsの可読性の高いコードについて議論するコミュニティを作りました - おもしろwebサービス開発日記

    Railsで可読性の高いコードを書くにはどうしたらいいのか。コミュニティやブログなどで個別の事例について言及されることはありますが、横断的なまとまった情報はほとんどないのではないかと思います。みんな、散らばった情報を集めて自分なりのやり方を模索しているのではないでしょうか。 そこで、自分なりのやり方を研ぎ澄ませるような、可読性の高いコードについて議論できる場所を作ってみました。clean-rails.orgというドメイン*1です。コミュニティ体はサブドメインのdiscourse.clean-rails.orgで、オンライン上できれいなコードについて議論できるようにしています。 可読性の高いコードを書くのが好きな方、参加してコメントいただけるとうれしいです(\( ⁰⊖⁰)/) これまでの経緯 Railsのきれいなコードについて議論する勉強会 - おもしろwebサービス開発日記チラシの裏 続

    Railsの可読性の高いコードについて議論するコミュニティを作りました - おもしろwebサービス開発日記
  • RailsガイドでOSS貢献するのはどうだろうか - おもしろwebサービス開発日記

    語版のRuby on Rails ガイド、日Railsエンジニアなら一度はお世話になったことがあると思うのだけど。読んでいるとtypoだったり、てにをはがちょっとおかしいところだったり、古いバージョンの記述のままだったりするところがあります。 ぼくは技術顧問業の一環でよくRailsガイドを読む機会があるので、そういうのを見つけたらなるべくPull Requestを送るようにしていたらコミット権をいただきました。 yasslab/railsguides.jp: Ruby on Rails Guides in Japanese (Railsガイド) ↑に普通に日語でPull Requestを出せば大抵すぐにマージされるので、読んでいてここちょっとおかしいのでは?と思ったら気軽にPull Requestを投げるようにするとみんな幸せになるはず。日語でPull Requet投げられるの

    RailsガイドでOSS貢献するのはどうだろうか - おもしろwebサービス開発日記
  • Rails Developers Meetup で綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記

    昨日のRails Developers Meetupで綺麗なテストコードの書き方について発表してきました。 Rails Developers Meetup #1(東京会場) - connpass 資料はこちら 余談 もともと数年前くらいから、テストコードの書き方についてまとめたいなーと思っていたのですがなかなかキッカケがなくて手を付けられていませんでした。今回のミートアップ駆動で一通り形にするところまでいけて今とてもスッキリした気持ちです 😇 もっと多くの人にテストコードの書き方を意識してもらいたいので、また機会があればどこかで喋りたいですね。 昨日発表した内容はGitHubリポジトリにまとめたものの一部です。綺麗なテストコードの書き方について詳しく知りたい方は下記のリンクからどうぞ。 willnet/rspec-style-guide お願い 今回まとめた内容はあくまで僕が考えるテスト

    Rails Developers Meetup で綺麗なテストコードの書き方について発表した - おもしろwebサービス開発日記
  • 株式会社ウィルネットを設立した - おもしろwebサービス開発日記

    いわゆる法人成りです。 かっこいい会社の名前が全然思いつかず*1、結局ハンドルネームを採用しました。このブログのタイトル(おもしろwebサービス開発日記)もだいぶアレな感じで、自分の命名センスの無さに震えますね>< 単に名義が変わっただけで、特に何があるわけではないのですがこれからも引き続き頑張っていこうと思います。よろしくお願いします。 一応例のリスト置いておきますね (( ⁰⊖⁰)/) *1:あまりに思いつかなかったので株式会社ベホマズンなどが候補に入っていた

    株式会社ウィルネットを設立した - おもしろwebサービス開発日記
    Watson
    Watson 2017/03/02
    “株式会社ベホマズンなどが候補に”
  • Rails 5.x について発表した - おもしろwebサービス開発日記

    昨日開催された、Increments ++ Tech TalkにてRails 5.xというタイトルの話をしました。 内容はWEB+DB PRESSの連載ではページ数の関係で載せられなかったRails 5.0のトピックと、Rails 5.1で入る(入りそう)な機能の話です。分量が多くなってしまい、いろいろ端折りながら喋りました。 スライド中でも触れていますが、発売中のWEB+DB PRESS Vol.93でRails 5のメジャーな変更について取り上げ済みですので、気になる方はぜひ一読ください。 WEB+DB PRESS Vol.93posted with amazlet at 16.08.19原田 騎郎 吉羽 龍太郎 松浦 隼人 須藤 涼介 生沼 一公 森下 雅章 前島 真一 鍛治 匠一 伊藤 直也 のざき ひろふみ うらがみ 高山 温 佐々木 健一 わかめ まさひろ ひげぽん 遠藤 雅伸

    Rails 5.x について発表した - おもしろwebサービス開発日記
    Watson
    Watson 2016/08/20
  • WEB+DB PRESS でRubyの連載を始めます - おもしろwebサービス開発日記

    今月の24日発売のVol 93から、WEB+DB PRESS で Ruby の連載をすることになりました。よろしくおねがいします。 初回の題材は、みんな大好き Ruby on Rails の最新バージョンである Rails 5 です。もうじき正式リリースとなる Rails 5 にどんな機能が追加されたか、気になる方はぜひ一読ください! WEB+DB PRESS Vol.93posted with amazlet at 16.06.19原田 騎郎 吉羽 龍太郎 松浦 隼人 須藤 涼介 生沼 一公 森下 雅章 前島 真一 鍛治 匠一 伊藤 直也 のざき ひろふみ うらがみ 高山 温 佐々木 健一 わかめ まさひろ ひげぽん 遠藤 雅伸 海野 弘成 はまちや2 竹原 藤田 正訓 技術評論社 売り上げランキング: 807 Amazon.co.jpで詳細を見る

    WEB+DB PRESS でRubyの連載を始めます - おもしろwebサービス開発日記
    Watson
    Watson 2016/06/20
  • ゆるデブ合宿で島根に行ってきた - おもしろwebサービス開発日記

    ひょんなことから島根の自治体の方と知り合いになり、島根県が企業やコミュニティの合宿を誘致しているという話を聞きました。 合宿またやりたいなあ。島根まだ行ったことないし行ってみたいなあ。という気持ちからゆるデブのメンバーに相談したところ、反応がよかったので色々詳細詰めて、ゴールデンウィークを利用して島根に行くことにしました (\( ⁰⊖⁰)/) 内容については、すでに iR3 さんがブログに書いてくれています。 島根県松江市美保関町北浦海岸でyurufuwa開発合宿 - iR3’s diary 感想 全体を通じて、とても楽しい合宿でした!また行きたい! 島根の田中さんや井上さん、民宿の中村屋さんにいろいろご配慮&差し入れいただいて快適な合宿になりました。 4泊5日の合宿でしたが、2日は移動日(ゴールデンウィークなので調度良い時間のチケットが取れなかった><)に当て、2日もくもく、1日はアクテ

    ゆるデブ合宿で島根に行ってきた - おもしろwebサービス開発日記
    Watson
    Watson 2015/05/22
  • 最近の Rack サーバ事情について - おもしろwebサービス開発日記

    先月、heroku推しサーバが unicorn から puma に変わったという発表がありました。unicorn だとスロークライアントの影響を受けやすいというのが理由なようです。 もう少し詳しく調べてみましょう。 そもそもスロークライアントってなに その名の通り遅い回線のクライアントです。3G環境のモバイル端末などが該当します。 「unicorn だとスロークライアントの影響を受けやすい」とは unicorn はプロセスモデルのサーバであり、blocking I/O モデルを採用しています。つまり、クライアントとの通信中プロセスが専有されるということです。 例えば unicorn がワーカプロセスを3つ立ち上げていて、そこへ通信完了に10分かかるようなスロークライアントが3つ接続されたら…、続くクライアントはスロークライアントの通信が完了するまで実行を待たなければならなくなります。プ

    最近の Rack サーバ事情について - おもしろwebサービス開発日記
  • 第19回 ginza.rb ミートアップ - おもしろwebサービス開発日記

    第19回目の ginza.rb ミートアップを開催しました。 Ginza.rb 第19回 だれが一番?Railsアプリサーバ徒競走!&Ruby2.2について話そう - Ginza.rb | Doorkeeper raptor と rhebok のパフォーマンスをみる 第17回ミートアップ で、Rack サーバの比較をしましたが、その時はまだ raptor の実装が公開されていませんでした。 今回は raptor(Passenger5) のベンチマークがとれるようになったので、ベンチを取ってみました。さらに、unicorn の2倍早いという rhebok というサーバも登場したので、それも一緒に。 @y_yagi さんが、第17回に利用したengine yardさんのアプリを使ってベンチをとってくれました。多謝! 使用したコード ベンチマークの結果 結果としては、比較対象としてベンチをとった

    第19回 ginza.rb ミートアップ - おもしろwebサービス開発日記
    Watson
    Watson 2015/01/25
  • pry-remote について - おもしろwebサービス開発日記

    Pow などを利用して開発を行う際に、pry-remote は欠かせないツールです。 binding.pry_remote でブレークポイントを設定し、コンソールで pry-remote コマンドを使うと pry のようにデバッグができます。 しかし、pry-byebug の 2.0.0 になってから、pry-remote が利用できなくなってしまいました。pry-byebug の仕様変更が原因のようです。Issue を見る限り、対応には時間がかかりそうなので次のようにして対応しました。 gem 'pry-byebug', '1.3.3'

    pry-remote について - おもしろwebサービス開発日記
    Watson
    Watson 2015/01/23
  • ゆるふわ Development Club というサークルができた - おもしろwebサービス開発日記

    僕は個人でコツコツとwebサービスを作っているのですが、実際はチームで開発するほうが好きです。GitHub 上でミサワや寿司ゆきを貼ったり、チャットで機能の相談をしたり、雑談したりしながら開発を進める。やったことがある人なら、きっとその楽しさを理解してもらえるのではないでしょうか。 当たり前ですが、個人で開発するとなるとそうはいきません。チームで開発する楽しさを覚えてしまうと個人の開発は味気なくて物足りないです。 モチベーションの維持も課題です。納期や他者の目がないと、際限なく脇道にそれることができてしまいます。一人だとなかなか開発が進まない…><。 個人だけどチームっぽく楽しく開発を進めたい。 そこでポエムに、「僕みたいに個人で開発をしている人たちを集めたら、チームっぽい開発ができるのでは?」という内容を書いたところ、色々あってサークルが出来ました。 ゆるふわ Development C

    ゆるふわ Development Club というサークルができた - おもしろwebサービス開発日記
    Watson
    Watson 2014/08/07
  • guard の結果を emacs に通知する - おもしろwebサービス開発日記

    「ファイルの変更を検知してなにかするツール」のデファクトスタンダード、guard。みなさんもきっと使ってますよね? guard はよくテストを自動で実行させるのに使われます。修正を検知して自動でテストを実行してくれるだけでも便利ですが、テストの結果を確認するためにいちいちターミナルを見なくてもよいように、いろんな方法の通知をサポートしているのがよいですね。「裏側でテストを実行させっぱなしにして、テストがコケたときだけターミナルで確認する」というのが一般的な guard の使い方だと思います。 そんな guard の README を眺めていたら、通知のオプションに emacs があるのに気づいたので試してみました。設定は、Guardfile に次の一行を足すだけです。 notification :emacs テストが通ればミニバッファが緑になり コケれば赤くなります。 growl や os