タグ

railsに関するteitei_tkのブックマーク (362)

  • Rails 7.1にバージョンアップしました - inSmartBank

    こんにちは、サーバーサイドエンジニアのmitaniです。先月、B/43を構成するシステムのうち、3つのRailsリポジトリの7.1バージョンアップが完了しました! 大きな躓きポイントはなかったのですが、参考までに手順やRails 7.1の内容を紹介しようと思います。 B/43のアーキテクチャ https://smartbank.co.jp/recruit/engineer-summary B/43は、上の図のように複数のサービスから構成されています。そのうちRailsで作られているサービスが3つあります(core-api / auth-api / aml-api)。バージョンアップする際には3つまとめて行う運用をとっているため、今回も3つバージョンアップしました。 各リポジトリは全てDocker化されています。各リポジトリのDockerfileは、共通してruby等をインストールしているベ

    Rails 7.1にバージョンアップしました - inSmartBank
  • activerecord-originator をリリースしました - pockestrap

    こんにちは。 id:Pocke です。 今日は activerecord-originator という gem を作ったので紹介します。 github.com なにこれ Active Record が発行するSQLの各部分に、それがどこで作られたものかをコメントとして入れ込む gem です。 理解するには実例を見るのが早いでしょう。次のログはArticlesController#indexで実行されるクエリの例です。 Article Load (0.1ms) SELECT "articles".* FROM "articles" WHERE "articles"."status" = ? /* app/models/article.rb:3:in `published' */ AND "articles"."category_id" = ? /* app/controllers/artic

    activerecord-originator をリリースしました - pockestrap
  • 社内版 Rails アップグレードガイドを公開します - Timee Product Team Blog

    こちらはTimee Advent Calendar 2023 シリーズ1の25日目の記事になります。 昨日は @tomoyuki_HAYAKAWA による Swift Concurrency AsyncStreamを使ってみる #Swift - Qiita でした。 タイミーでバックエンドエンジニアをしている id:euglena1215 です。 メリークリスマス🎄 みなさんの手元にはプレゼントは届いているでしょうか。 Ruby の世界では Ruby コミッターサンタさんがクリスマスプレゼントとして新しい Ruby バージョンをリリースしてくれます。 今年は Ruby 3.3 ですね。個人的には 3.3 の YJIT がどれだけ速くなるのか楽しみです。 また、新しいバージョンのリリースにはアップグレードがつきものです。アップグレードせずには新しいバージョンの恩恵を受けることはできません。

    社内版 Rails アップグレードガイドを公開します - Timee Product Team Blog
  • 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サービス開発日記
  • Kaigi on Rails の conference-app に型をつけてみた (中編) | Webシステム開発/教育ソリューションのタイムインターメディア

    この記事では Kaigi on Rails の conference-app に型をつけてみた話を紹介します。 以前公開した前編では、以下の状態まで作業を進めました。 元々あった型定義に加えて、 rbs prototype rb コマンドをつかってプロトタイプの型を抽出した 依存している gem の型や一部のコードに対する型を手書きして補足した Rails アプリケーション全体を型検査できるようにした Steep のデフォルトモードで型検査を行い、指摘は 0件を維持している 今回は型をさらに書き足しながら、conference-app の改善にチャレンジしようと思います。 共通で使われているコンポーネントに型をつける さて、アプリケーションに型を付けていく際はどこから手を付けていくと良いでしょうか。 私がよく見聞きする方針のひとつに「よく使われるコンポーネントに型をつける」というものがあり

    Kaigi on Rails の conference-app に型をつけてみた (中編) | Webシステム開発/教育ソリューションのタイムインターメディア
  • 【Rails 7.1】ActiveRecord#Enumでメソッドの自動生成を制御する

    この記事は GMOアドマーケティング Advent Calendar 2022 3日目の記事です。はじめにこんにちは。GMOアドマーケティングの石丸(@thomi40)です。前回の記事では Rails 7 から実装された query_log_tags について紹介しました。今回の記事では同じく Rails 7 から追加された ComparisonValidator について紹介します。※記事内の画像は筆者が作成したアプリケーションをキャプチャーしたものです。ComparisonValidatorとはComparisonValidator は任意のオブジェクトの比較を行うバリデーターです。数値の比較には NumericalityV... 2023年10月に Rails 7.1 がリリースされたため、今回の記事では Rails 7.1 から新たに追加された ActiveRecord#Enum

    【Rails 7.1】ActiveRecord#Enumでメソッドの自動生成を制御する
  • RailsエンジンとPackwerkによるコード分割を進行中|noteエンジニアチームの技術記事

    Railsでサービスを開発 / 運用をしていると、コードの肥大化に伴うモノリシック化に悩まされることも多いはず。2014年のサービス開始からRailsで進めてきたnoteも今まさにその壁に立ち向かっている最中です。 Railsアプリケーションを分割しようと考えたときに、マイクロサービス化や別言語でのフルリプレイスなどを検討することもあるはずです。 様々な選択肢がある中で、弊社ではPackwerkの導入とRailsエンジン化による分割を進めることにしました。(※ packwerk:Shopifyが作成したgem。依存関係をパッケージによって整理することができる) Railsエンジンを採用した大きな理由としては以下が挙げられます。 すばやく小さく問題を切り分けることを優先 マイクロサービス化はアーキテクチャから考慮する必要があり時間がかかる 将来的なマイクロサービス化の下準備として進めることが

    RailsエンジンとPackwerkによるコード分割を進行中|noteエンジニアチームの技術記事
  • Kaigi on Rails の conference-app に型をつけてみた (前編) | Webシステム開発/教育ソリューションのタイムインターメディア

    はじまりは口約束 Kaigi on Rails 2023 の懇親会でふらふら歩いていたところ、たまたまスタッフのうなすけさんやふーがさんの会話に混ざることになりました。おふたりとは初対面だったのですが、何の流れか conference-app に型をつけてみよう、という話になりました。 ということで、今回は Kaigi on Rails の conference-app に型をつけてみた話を紹介します。 型をつける前に 型をつけ始める際に conference-app チームと会話をして、現状と目標を確認しました。 現状 すでにモデルに対しての型を作っている rbs_rails による自動抽出された型と手書きの型のハイブリッド CI で型検査 (steep check) を実行している 型検査のレベル (severity-level) は Steep のデフォルト設定を利用している 目標

    Kaigi on Rails の conference-app に型をつけてみた (前編) | Webシステム開発/教育ソリューションのタイムインターメディア
  • Railsで秒間1000コミットを捌くにはどうすればいいのか (Kaigi on Railsのフリースペースより) - joker1007’s diary

    先日のKaigi on Rails中の雑談として @ima1zumi さんから、RDBに対して秒間1000コミットぐらいで処理が詰まってる場合ってどうするのが良いのか、という質問を受けまして、雑談の中で色々答えてたんですが、せっかくだから記事にまとめておこうと思います。 ちょっとしたKaigi Effectって感じですね。 今回のKaigi on Railsのトークの中では、 数十億のレコードを持つ5年目サービスの設計と障害解決 by KNR - Kaigi on Rails 2023 の話なんかは割と関連がありますね。ユーザーの行動履歴というのは、ユーザー数 * N * タイムスパンで増えていくレコードなので、書き込みとデータ量が爆発しがちです。トランザクションで堅牢に処理しなければいけないケースもそこまで多くないので、RDBだと書き込みに対する処理が過剰なケースが多い。実際のところこの

    Railsで秒間1000コミットを捌くにはどうすればいいのか (Kaigi on Railsのフリースペースより) - joker1007’s diary
  • RailsアプリのCI高速化

    参加しているプロジェクトで、RailsアプリのCIの高速化を行った。 まだ進行中の部分も幾つかあるが、結果から言うと、元々8分前後だったテストが3分半程度に短縮された。行った作業を幾つかの観点に分け、どのように高速化を行ったか、どの程度高速化されたか等を記述する。 プロセス数とマシン性能の調整 元々は2コア1プロセス4マシンで8分程度掛かっていたが、8コア8プロセス1マシンに変更することで5分程度に短縮された。 このプロジェクトではCIにGitHub Actionsを利用している。GitHub Actionsではデフォルトで2コアのマシンが利用されるが、Large runnerを利用して8コアに変更した。コア数を2倍にした代わりにマシン数も半分に減らしたので、結果的に費用は変わっていない。 また同時に、8プロセスで並列実行するためにparallel_testsを導入した。このプロジェクト

  • Kaigi on Rails 2023 とアンドパッドのまとめ - ANDPAD Tech Blog

    こんにちは、hsbt です。ソロ活女子という番組にハマってしまい、シーズン1から順番に見返しています。私もソロ活することが多いので「これはいけるー」「一人焼肉、などは余裕」などを話しながら見ていますが、一人フレンチフルコースはちょっと難易度が高いな〜と感じています。 今回は Kaigi on Rails 2023 の関連イベントや編とアンドパッドの取り組みについてご紹介します。 プロポーザルネタ出し会 Kaigi on Rails 2023 に向けてアンドパッドでは、みんなでプロポーザル出そうぜ!と普段やっていることから出せそうなネタを出す会を開催しました。進め方は以下の通りです。 参加者それぞれがネタについて esa.io にタイトルと話したい内容を書く 話したい内容に対して参加者が「こうするともっとよさそう」というコメントを書く ネタ出し会の最後までに公式サイトへ投稿する 単純な内容

    Kaigi on Rails 2023 とアンドパッドのまとめ - ANDPAD Tech Blog
  • Kaigi on Rails 2023『管理機能アーキテクチャパターンの考察と実践』の余談や質問への回答 - inSmartBank

    先日開催されたKaigi on Rails 2023に「管理機能アーキテクチャパターンの考察と実践」というタイトルで登壇させてもらいました。発表資料はすでに公開しており*1、記事で発表内容をそのままなぞっても新規性がないな〜と考え、発表前に行った"余興"や懇親会やXでいただいたフィードバックや質問について回答する記事としてみます。 余興について 記事で初めて上記の発表を見知った方や、発表をオンラインで見られた方にとっては「余興って何?」という疑問が浮かぶかと思うので説明すると、今回は登壇前の転換時間に"前説"をセルフでやってみました。*2 お笑いの世界には前説というものがあります。 舞台でもテレビの収録でもお客さんがいる場合は、番に向けて場を温めるために若手芸人やフロアディレクターなどが注意事項を伝えながら簡単なネタを披露することです。 ネタを交えながら注意事項等を説明し客席をいい空

    Kaigi on Rails 2023『管理機能アーキテクチャパターンの考察と実践』の余談や質問への回答 - inSmartBank
  • モノリスなRailsにモジュラーモノリスを導入した話 - hacomono TECH BLOG

    こんにちは、プラットフォームチーム所属のまこたすです。 昨今、様々な場で「モジュラーモノリスを導入した」という話を目にするようになってきました。弊社でも昨年からモジュラーモノリスの試験導入を進めており、社内でノウハウが徐々に溜まってきたため、今回 技術ブログ で なぜ導入したのかと知見の共有 をさせていただけたらと思います。 想定読者 モノリスなアプリケーションの分割を検討している Railsへのモジュラーモノリスの導入を検討している 話さないこと チーム体制がどうあるべきかという観点の話 以下アーキテクチャについての詳細 モノリスアーキテクチャ モジュラーアーキテクチャ 背景 今回「モジュラーモノリスを導入した」というタイトルですが、最初に検討・導入に至るまでの背景について触れたいと思います。 hacomonoという組織・サービスの成長 hacomonoというサービスはリリースから現在に

    モノリスなRailsにモジュラーモノリスを導入した話 - hacomono TECH BLOG
  • Rails 6 Multi-DB 実戦投入

    This document provides an overview and summary of MySQL and Sphinx search capabilities. It discusses some limitations of MySQL for certain queries and how Sphinx can help address those limitations by offloading search queries and enabling features like full-text search and geospatial search. The document also covers how to install, configure, and query Sphinx including indexing data from MySQL, ru

    Rails 6 Multi-DB 実戦投入
  • Kaigi_on_Rails_2022_Talk-hogelog.pdf

    RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster

    Kaigi_on_Rails_2022_Talk-hogelog.pdf
  • rails new 時にDockerfileが追加されるようになる - rochefort's blog

    rails commit log流し読み(2022/12/20) - なるようになるブログ を見ていたら、 なんとrails new 時にDockerfileが追加されるようになっていました。 rails newで新規アプリケーション作成時にDocker関連のファイル (Dockerfile、.dockerignore、bin/docker-entrypoint)を生成するよう修正しています。 なお、このDockerfileはproduction向けで、development向けの設定にはなっていません。 Dockerfile.ttを眺めてみる Dockerfile.tt nodejs nodejsはnodesourceを利用してinstallしているようです。 <% if using_node? -%> # Install JavaScript dependencies and libv

    rails new 時にDockerfileが追加されるようになる - rochefort's blog
  • Railsのモデル名をすべて変更した話 - SmartHR Tech Blog

    SmartHRでは開発にRuby on Railsを広く採用しています。 今日は負債解消のために、開発しているサービスでRailsのモデル名をすべて変更した話を紹介します。 既存のモデル構造のつらみ 私達が開発しているサービスでは、モデルの親子構造が分かりやすいということで、モデルをネストした構造にしていました。 例えば、 User に紐づくプロフィール画像 User::ProfileImage は、 app/models/user/profile_image.rb に配置する具合です。 パッと見の構造が分かりやすいのですが、時が経つにつれて次のようなつらさが顕在化してきました。 Railsの規約(推奨ルールのようなもの)に則っていないので、関連定義が冗長になる テーブル名が長くなる。 外部キーや関連名が長くなる。 関連名と外部キー名が一致せず、カラムを呼び出したいときにDB定義を見ないと

    Railsのモデル名をすべて変更した話 - SmartHR Tech Blog
  • LS/LM がRuby 2.7 -> 3.2 にアップグレードするまでの軌跡 - Linkers Tech Blog

    こんにちは、情報システム部の大河原です。 徐々に暑さが増してきて、夏番が近づいているのを肌で感じます。先日、お気に入りの夏限定ドリンク1をコンビニで初めて見かけて、テンションが上がりました。 さて、遡って春先の話になりますが、Linkers Sourcing / Marketing(LS/LM)では3月にRubyバージョンのアップグレードを行いました。 これまで2.7.2だったのを3.2.1に上げたため、多数の非互換の変更を含む大幅なジャンプアップとなりました。 Ruby 2.7は3月末にサポート終了済み LS/LMは3月中にアップグレードを完了させたためなんとか間に合いましたが、Ruby 2.7系は今年の3月末にてEOLとなっているため、まだ運用しているシステムでは早急なアップグレードが必要です。 しかし、JetBrains社の調査によると、2022年5-7月時点では2.7を使っている

    LS/LM がRuby 2.7 -> 3.2 にアップグレードするまでの軌跡 - Linkers Tech Blog
  • Aurora MySQL 5.7とRailsで実現する全文検索機能 - dely Tech Blog

    こんにちは。 クラシル開発部、バックエンドエンジニアの松嶋です。 delyに入社してから約3年間、私はSREチームに所属していましたが、昨年10月にバックエンドに転向しました。バックエンドに転向してからは、主にクラシルアプリの公式レシピおよびCGMコンテンツの検索機能に関する開発・改善に取り組んでいます。 クラシルは、2016年2月にサービスを開始してから、管理栄養士監修の「誰でも安全に・おいしい料理を作ることができるレシピ動画」を5万件以上提供してきました。 昨年12月には、クラシルのブランドリニューアルを行い、今後はシェフや料理研究家を中心としたクリエイターとともに多様化したユーザーのの好みや課題解決に応えられるよう、幅広いのコンテンツを提供するプラットフォームを目指しています。 ブランドリニューアルの詳細に関しては、こちらを御覧ください。 www.kurashiru.com この

    Aurora MySQL 5.7とRailsで実現する全文検索機能 - dely Tech Blog
  • Railsプロジェクトへの「頑張らない型導入」のすすめ - メドピア開発者ブログ

    こんにちは。サーバーサイドエンジニアの三村(@t_mimura)です。 主に保険薬局と患者さまを繋ぐ「かかりつけ薬局」化支援アプリ kakariのサーバーサイド開発(Ruby on Rails)を担当しています。 突然ですが! この度kakariプロジェクトは「型導入」をしました! kakariのRailsリポジトリに型導入PRがマージされた様子 皆さんのプロジェクトは「型導入」していますか? 「型導入」しているRailsプロジェクトはまだ少ないのではないでしょうか なぜ型導入しないのか 型を導入すると何かしらが便利になることは分かっているのに何故やらないのでしょうか(煽り気味) 「型の恩恵」と「型を自分たちで書くコスト」の2点を比較していませんか? RubyKaigi 2023開催前の私がまさしくそう考えていました。 当にその2点を比較するべきなのかをここで再考してみましょう。 「型導

    Railsプロジェクトへの「頑張らない型導入」のすすめ - メドピア開発者ブログ