学び放題バックエンドのRailsアプリケーションがRuby3.3にバージョンアップされ、パフォーマンスの向上が確認されました はじめにこんにちは!「DevEx」チームでお手伝いをしている岩崎です。今回の記事では、学び放題バックエンドで利用するRubyが3.3にアップデートされ、大きなパフォーマンス改善が確認されましたので紹介します。 学び放題のバックエンドはRailsで構築されています。すでにRuby 3.2の段階でYJITを有効にした時点でもレイテンシーの改善が見られましたが、今回 Ruby3.3にアップデートして更なる性能向上が確認できました。改善が確認された項目を一つずつ紹介していきます。 レイテンシー以下はレイテンシーのグラフです。緑色の縦線がRuby 3.3にアップグレードされた時点を示しており、青いグラフが直近のデータ、灰色のグラフが一ヶ月前のデータとなります(p95)。 Ru
本日はコンシューマチームのブログリレー2日目です。 エムスリーエンジニアリングG コンシューマチームの松原(@ma2ge)です。 今回は以前筆者が M3 Tech Talk で話した AWS Lambda での Web アプリ開発に Rails を使う内容について、 若干内容を変えつつ Tech Blog の方でも紹介をしたいと思います。 最近使っているキーボードの様子 現在のチームで担当している主要なアプリは Rails で書かれていて、ほとんどがコンテナ化され Amazon ECS(ECS) と Fargate を使って運用されています。 そんな中今年の初めに AWS Lambda(Lambda) に適したプロジェクトが話にあがりました。ただ Rails で Lambda しかも Web アプリとなるとあまり採用事例を耳にしません。 とはいえ使い慣れている Rails をそのまま生かし
はじめに 本記事はプロもくチャット Advent Calendar 2023の18日目です。 Railsには標準でエラーページのviewが用意されていますが、このように味気ないものになっています。 本番用のアプリにはこのようなデフォルトページではなく、オリジナルのエラーページを作成するケースがほとんどかと思います。 エラーページの実装方法には、静的なページにする方法と動的なページにする方法があります。 静的なエラーページ public/404.htmlなどを編集すれば良いだけです。 静的ページで事足りるのであれば、基本的には静的ページを使用した方が良いです。 動的なエラーページ ApplicationControllerでrescue_fromを設定して例外補足する方法が多く紹介されていますが、これはこれで問題があります(ここは今回の本筋ではないので詳細は割愛します)。 そこで本記事では、
2023/10/27, 28 に行われた Kaigi on Rails の資料まとめです。 資料が公開され次第、内容を更新します。公開済みのURLがあれば教えてください。 10/27 スケーラブルActive Jobs with Sidekiq Enterprise (スポンサーLT) Rails アプリの 5,000 件の N+1 問題と戦っている話 HTTPリクエストを手で書いて学ぶ ファイルアップロードの仕組み 生きた Rails アプリケーションへの delegated types の導入 Async Gem で始める ruby 非同期プログラミング Exceptional Rails やさしいActiveRecordのDB接続のしくみ Update Billion Records 初めてのパフォーマンス改善〜君たちはどう計測す(はか)るか〜 Simplicity on Rails
参加しているプロジェクトで、RailsアプリのCIの高速化を行った。 まだ進行中の部分も幾つかあるが、結果から言うと、元々8分前後だったテストが3分半程度に短縮された。行った作業を幾つかの観点に分け、どのように高速化を行ったか、どの程度高速化されたか等を記述する。 プロセス数とマシン性能の調整 元々は2コア1プロセス4マシンで8分程度掛かっていたが、8コア8プロセス1マシンに変更することで5分程度に短縮された。 このプロジェクトではCIにGitHub Actionsを利用している。GitHub Actionsではデフォルトで2コアのマシンが利用されるが、Large runnerを利用して8コアに変更した。費用は変わらない。 また同時に、8プロセスで並列実行するためにparallel_testsを導入した。このプロジェクトではMySQLとElasticsearchを利用しており、またファイル
Junichi Ito (伊藤淳一) @jnchito 先ほどの発表で使用した資料です。みなさんどうもありがとうございましたー! #osrb03 Enjoy Ruby programming, Enjoy Ruby community! #osrb03 - Speaker Deck speakerdeck.com/jnchito/enjoy-… 2023-09-09 10:54:56
既存アプリやライブラリへの影響が大きく、この変更に対してネガティブなフィードバックも多かったためリバートされました。 github.com 概要 表題の通り、Rails v7.1.0 で APOSTROPHE (U+0027) が SINGLE QUOTATION MARK (U+2019) に変わります。 github.com 既存のRailsアプリをアップグレードする際に影響が大きそうなので、記事を書きました。 影響範囲 テストでエラーメッセージを検証していた場合、Rails v7.1.0 のアップグレードによって検証に失敗するようになります。 Expected: "can't be blank" Actual: "can’t be blank" 今回の変更を知らない場合、このテストのエラーメッセージだけで ' と ’ の違いを見分けるのは厳しそう。 SINGLE QUOTATION
私たちは Ruby on Rails の主要なマルチテナントライブラリ apartment を使ってサービスを提供しています。 Ruby のバージョンを 3.1 系から 3.2 系に上げたときに CSV ファイルを処理する部分でこのテナントの切り替えが意図通りに動作しませんでした。 この事象が興味深かったので共有します。 現在はこの事象に対応済で、私たちの環境は Ruby3.2 系で動作しています。 apartment ではマルチテナント対応部分をほとんど吸収してくれるので、アプリケーションのコードのほうにはあまりマルチテナント特有の処理が出てこず、個別処理のコードに集中できるメリットがあります。 事象が発生したコードは以下のような形式でした。 CSV.parse(filename, headers: true, header_converters: ->(header) { curren
SmartHRでは開発にRuby on Railsを広く採用しています。 今日は負債解消のために、開発しているサービスでRailsのモデル名をすべて変更した話を紹介します。 既存のモデル構造のつらみ 私達が開発しているサービスでは、モデルの親子構造が分かりやすいということで、モデルをネストした構造にしていました。 例えば、 User に紐づくプロフィール画像 User::ProfileImage は、 app/models/user/profile_image.rb に配置する具合です。 パッと見の構造が分かりやすいのですが、時が経つにつれて次のようなつらさが顕在化してきました。 Railsの規約(推奨ルールのようなもの)に則っていないので、関連定義が冗長になる テーブル名が長くなる。 外部キーや関連名が長くなる。 関連名と外部キー名が一致せず、カラムを呼び出したいときにDB定義を見ないと
Rollback Rails transaction and rescue error to display it good: This is fine record = MyModel.last error_for_user = nil begin ActiveRecord::Base.transaction do # ... record.save! end rescue ActiveRecord::RecordInvalid => e # do something with exception here error_for_user = "Sorry your transaction failed. Reason: #{e}" end puts error_for_user || "Success" source, source2, source3 This is ok as wel
はじめに 今日も今日とて、フロントReact + バックRailsのSPA + APIのアプリ開発していたところ TypeScriptのReact側で、react-apolloの型宣言がめんどくさいと思っていました。 バックエンド側はGraphQLを使用しているので、いろんなところに型宣言をしているようにも感じて、微妙。。 そこでgraphql-code-generatorを使っていろいろ気持ち悪い部分を解消していこうという話をします。 今回の構成 フロントエンド GitHub React(SPAで) TypeScript create-react-app React Apollo バックエンド GitHub Ruby Rails(APIで) GraphQL ※上記2つのリポジトリはこちらのリポジトリから連動させる仕組みとしました。(開発環境として) とりあえずApolloの公式通りにやっ
Install Totally plug-in-play # Add the gem to your Gemfile $ bundle add rails-graphql # Then run the Rails generator $ rails g graphql:install Define Designed for simple and complex Schemas # app/graphql/app_schema.rb class GraphQL::AppSchema < GraphQL::Schema field(:welcome).resolve { 'Hello World!' } end Run Follows Rails core principles $ curl -d '{"query":"{ welcome }"}' \ -H "Content-Type: ap
RailsアプリをDockerで動かすときのDockerfile 2019-06-02 08:11 シンプルなRailsアプリを作って、それをDockerで動かすためのDockerfileを書いてみた。 https://github.com/okonomi/rails-docker-sandbox こんなかんじ: FROM ruby:2.6.3-alpine3.9 AS builder ENV RAILS_ENV production WORKDIR /app RUN apk add --update --no-cache \ build-base \ libxml2-dev \ libxslt-dev \ sqlite-dev \ nodejs \ yarn \ tzdata # install gems RUN gem install bundler COPY Gemfile . CO
自己紹介 はるなと言います🐰🍤 2021年4月から2022年5月までフィヨルドブートキャンプを受講していました。 現在は株式会社キャタルでエンジニアとして働いています。 前職は保育園の看護師をしていました。 好きなRubyのメソッドはobject_idです。 アプリについて www.vaccination-plan.com お子さんの予防接種の予定を自動で計算するサービスを作りました。 できること お子さんのお誕生日と接種履歴から予防接種の予定日を自動で割り出します。 予防接種の規定は国立感染症研究所や厚生労働省などで定義されていますが、 今回は小児科学会が推奨している規定日数を使っています。 https://www.jpeds.or.jp/uploads/files/vaccine_schedule.pdf 技術スタック Ruby 3.1.2 Ruby on Rails 6.1.5
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く