並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 71件

新着順 人気順

activerecordの検索結果1 - 40 件 / 71件

  • やさしいActiveRecordのDB接続のしくみ

    https://kaigionrails.org/2023/talks/kubo/

      やさしいActiveRecordのDB接続のしくみ
    • AWS LambdaでSeleniumとActiveRecordを扱う · フロッピーディスクの残骸

      気付いたらもう9月ですね。 最近、AWS Lambdaでいろいろと遊ぶ機会があったのでメモとして残します。 はじめに とあるセキュリティゲームの運営用に、SeleniumでWebスクレイピングをやっているRubyのスクリプトをEC2で運用していたのですが、Headless Chromeを扱うため大量に起動するとメモリ食っちゃうし、スケールしようにもEC2インスタンスのAutoScaling組むのもちょっとなあ。とか、インスタンスの起動まで待ってられないからある程度多めにインスタンスを実行したりするのも余分にコストが。。。 1実行に15分もかからないスクリプトだし、ということでLambdaに移行することにしました。 Lambda Layerについて Headless Chromeを扱う場合、単純にFunctionのデプロイパッケージにバイナリを含めると50MBを超えてしまうため、Lambda

      • Railsアプリケーションを遅くする、ActiveRecordの3つの間違い:Count,Where,Present | Scout APM Blog

        ネイト・ベルコペック (@nateberkopec)  SpeedShop(詳細),Railsパフォーマンス・コンサルタンシー 要約:Rails開発者の多くが、ActiveRecordがSQLクエリを実際に実行する条件を理解していません。よくある3つのケースを見てみましょう:countメソッドの誤使用と、サブセットをセレクトするためのwhereの使用、そしてpresent?です。 断言しましょう。あなたはこの3つのメソッドを使い過ぎていて、無駄なQueryとN+1を発生させているでしょう。 (字幕:なんて奇妙な謎だ、バットマン!) "いつActiveRecordがクエリを実行するかって?知るか!" ActiveRecordは素晴らしいです。本当に。しかし抽象化されているので、データ・ベース上で実行されている実際のSQLクエリに無頓着になりがちです。ActiveRecordがどのように動作す

          Railsアプリケーションを遅くする、ActiveRecordの3つの間違い:Count,Where,Present | Scout APM Blog
        • ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog

          注意喚起の記事になります。タイトルが結論です。 既にこの問題に言及している記事はいくつかあるのですが*1、私は気付かずに踏んでしまったので、タイトルで「おっと、うちは大丈夫かな」と思ってもらえるようにこの記事を書いています。 joinableとは何か 問題として挙げているjoinableオプションですが、これはネストしたトランザクションの挙動に影響を与えます。少しややこしいので、サンプルコードを見せながら説明します。 # frozen_string_literal: true require "bundler/inline" gemfile(true) do source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem "activerecord", "7.

            ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog
          • 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
            • ActiveRecord::LockWaitTimeout, ActiveRecord::Deadlocked, ActiveRecord::ConnectionTimeoutError が起きた時に原因調査に役立つ情報を表示する gem を作った

              それなりの規模のサービスを運用していると、不可解なエラーに遭遇することはよくあるものです。その中でもデータベース関連のエラーは一見難解な問題に見えるかもしれませんが、原因調査に役立つ情報をさえ出力すればたいていの場合は容易に原因を特定できるものです。というわけで、Rails でよく遭遇するエラーの調査に役立つ情報を出力する gem を作成しました。 activerecord-debug_errors 現在次のエラーをサポートしています。 ActiveRecord::LockWaitTimeout (MySQL のみ) ActiveRecord::Deadlocked (MySQL のみ) ActiveRecord::ConnectionTimeoutError 以下、具体的な例を用いてどのような情報が表示されるか説明します。 ActiveRecord::LockWaitTimeout Ac

                ActiveRecord::LockWaitTimeout, ActiveRecord::Deadlocked, ActiveRecord::ConnectionTimeoutError が起きた時に原因調査に役立つ情報を表示する gem を作った
              • ツイッターで見つけて直したActiveRecordの問題3つ - かみぽわーる

                Rails Advent Calendar 2020の3日目です。 時間がないのでとりいそぎ3つだけ。 enum state: {active: 0, inactive: 1}とかした時に、typecast前の0とか1を取りたい ActiveRecord::Enumってstate: {active: 0, inactive: 1}とかした時に、typecast前の0とか1を取る場合、read_attribute_before_type_castを使うしかないのか?— アルフォートおじさん (@joker1007) October 21, 2020 github.com belongs_to :author, class_name: 'User'したときにleft_joins(:author).where("author.id": nil)とか書きたい これすると、joins(:author

                  ツイッターで見つけて直したActiveRecordの問題3つ - かみぽわーる
                • switch_point では ActiveRecord v6.1 以降をサポートしないことにした - eagletmt's blog

                  switch_point を4年ぶりにリリースした。このリリースは主に ActiveRecord v6.1 以降をサポートしない意志を表明するためのものである。 github.com switch_point は6年前に仕事で困ったことを解決するために書いた gem である。経緯は https://eagletmt.hateblo.jp/entry/2014/09/22/203819 を参照。この記事にある「Rails の激しい変更についていきやすい設計・実装」は成功したと思っていて、バージョンや respond_to? による分岐を一切せずに ActiveRecord v3.2 から v6.0 までサポートすることに成功している。 しかしまもなくリリースされるであろう ActiveRecord v6.1 では ActiveRecord::ConnectionAdapters::Conne

                    switch_point では ActiveRecord v6.1 以降をサポートしないことにした - eagletmt's blog
                  • ActiveRecord の接続管理の仕組み

                    ActiveRecord がデータベースとの接続をどう管理しているのかを調べたメモ。主に active_record/connection_adapters 以下の話。現時点での main ブランチの HEAD を参照した。 詰まったときに調べる箇所のあたりを付けられるよう全体観を持ちたいという目的だったので、細かい部分まで把握しきれていはおらず、ご了承ください。 ActiveRecord の使い方のおさらい まず最初にユーザーとして、ActiveRecord でデータベースにクエリを発行する際の流れを簡単におさらいする。 まずデータベースの接続情報を database.yml に記載する。ここではメインとなる primay DB と animals DB の 2 つがあり、またそれぞれに primary (master) と replica があるとする (この例は Active Rec

                      ActiveRecord の接続管理の仕組み
                    • ActiveRecordのincludesは使わずにpreloadとeager_loadを使い分ける理由 - Qiita

                      はじめに ActiveRecordでN+1問題やスロークエリを解消するためにeager loadingを行う場合、普段Railsを使って開発されている方であれば、パッと思いつくのはincludesではないでしょうか?もしくは、preloadやeager_loadを使用しますよね。 この記事では、Webサイト表示パフォーマンスを保つため、ActiveRecordのメソッドの違いや、どいういう場合に使ったら良いのか、どいういう場合には使わない方が良いのかについて書きました。 実際に Railsアプリケーションを作成して解説していきます。 用語の説明と分類「ORM の Eager loading と Lazy loading」 Webサイト表示パフォーマンスを保つため、ORM(RailsではActiveRecord)では、Eager loading と Lazy laodingというものをサポー

                        ActiveRecordのincludesは使わずにpreloadとeager_loadを使い分ける理由 - Qiita
                      • ActiveRecordのincludesに複数の関連テーブルを指定したらスロークエリになった件 - LiBz Tech Blog

                        バックエンドエンジニアの宮澤です。 Railsアプリを開発していると関連テーブルを取得するactiverecordのincludes, eager_load, preloadメソッドはよく使いますよね。 アプリケーションのある箇所でスロークエリが出ているのを見つかって対応した際に、テーブル関連付けの種類によるこれらのメソッドの挙動について調べてみました。 テーブル設計 ER図 サンプルとしてシンプルに地域 => 国 => 都市と1:Nの関係でテーブルを作成します マイグレーション class CreateRegions < ActiveRecord::Migration[6.0] def change create_table :regions do |t| t.string :name t.timestamps end end end class CreateCountries < Ac

                          ActiveRecordのincludesに複数の関連テーブルを指定したらスロークエリになった件 - LiBz Tech Blog
                        • Rails 5.1 で DatabaseRewinder + Activerecord-Import + PostgreSQL が上手くいかない問題が期せずして(?)解決した - ドワンゴ教育サービス開発者ブログ

                          この記事は 第二のドワンゴ Advent Calendar 2019 の19日目の記事です。 qiita.com 誰 naari3です。 ドワンゴで N予備校 のバックエンド開発をやっています。 概要 Rails 5.0 から Rails 5.1 にアップデートする対応の最中に遭遇した現象を紹介します。 依存しているgem同士の相性が悪かった問題がRailsのアップデートによって解決されました。 内容的にはただのコードリーディングになってしまいますが、面白かったので書き起こすことにしました。 Activerecord-Import とは github.com ActiveRecord でバルクインサートをするためのgemです。 ActiveRecord::Base.import (以下 AR.import と記述します) が生えます。このメソッドにセーブしていないレコードの配列を渡す等する

                            Rails 5.1 で DatabaseRewinder + Activerecord-Import + PostgreSQL が上手くいかない問題が期せずして(?)解決した - ドワンゴ教育サービス開発者ブログ
                          • ActiveRecordの「table alias問題」に悩まされた結果gemを作って解消した話

                            3行で できるだけ「文字列指定」ではなく「キー指定」を使いましょう where句にてテーブル名を指定するのは極力避けましょう activerecord-pretty-comparator gem を使うことで、文字列指定を使わざるを得なかった > もキー指定で書けます はじめに この記事では where('ends_at > ?', Time.current) のような書き方を「文字列指定」、 where(starts_at: ...Time.current) のような書き方を「キー指定」と呼びます 株式会社グロービスのslackにかみぽさんにJOINいただいており、不定期にRailsの困りごとを 壁打ち/相談 させていただいています この記事に出てくるコードは、実際のプロダクトコードをベースにしつつ問題を再現する最小のケースとして書いてみました Kaigi on RailsにCFP出した

                              ActiveRecordの「table alias問題」に悩まされた結果gemを作って解消した話
                            • 【Rails 7.1】ActiveRecord#Enumでメソッドの自動生成を制御する

                              この記事は GMOアドマーケティング Advent Calendar 2023 4日目の記事です。 はじめに こんにちは。 GMOアドマーケティングの石丸です。 昨年のアドベントカレンダーでは Rails 7 で追加された ComparisonValidator について紹介しました。 GMOアドパートナーズ TECH BLOG byGMORails 7 で追加されたComparisonValidatorで日付のバリデーションを実装するこの記事は GMOアドマーケティング Advent Calendar 2022 3日目の記事です。はじめにこんにちは。GMOアドマーケティングの石丸(@thomi40)です。前回の記事では Rails 7 から実装された query_log_tags について紹介しました。今回の記事では同じく Rails 7 から追加された ComparisonValida

                                【Rails 7.1】ActiveRecord#Enumでメソッドの自動生成を制御する
                              • ActiveRecord の with_lock に先人の知恵を学ぶ - Qiita

                                はじめに 先日、ActiveRecord の with_lock (lock!) を調べていた時に良くできているなあ、勉強になるなあと思ったので、その辺のことを書いてみたいと思います。 なお、以下の内容は、Rails 5.2.2 及び、PostgreSQL 10.7を前提にしていることをお断りしておきます。 with_lock とは Rails Guide の Pessimistic Locking に with_lock を使ったサンプルコードが登場します。要は、データ更新時に悲観的ロックをかけてくれるというものです。 SQLレベルでざっくりいうと、 SELECT ... FOR UPDATE をしてから UPDATE できるようになるということですね。 ただ、with_lock の前にモデルが変更されていた場合、どうなるのかちょっと気になりましたので、APIを調べてみました。 コードレ

                                  ActiveRecord の with_lock に先人の知恵を学ぶ - Qiita
                                • ツイッターで見つけて直したActiveRecordの問題さらに3つ - かみぽわーる

                                  ツイッターで見つけて直したActiveRecordの問題3つ - かみぽわーるの続き。 where(id: ..1) ("id" <= 1)をnotしたら"id" > 1になってほしい 今のmasterで試してみたのですが、SELECT "users".* FROM "users" WHERE NOT ("users"."id" <= 1) になるようです。 https://t.co/pQh4h9g0MP— 神速 (@sinsoku_listy) August 3, 2019 github.com association先のカラムをpluckしたときもちゃんとtype castされてほしい 対応ありがとうございます! 制限があるとはいえ、定義ではなく呼び出し側で解決を図れるのは嬉しいです。 ちなみに association の情報を与えてあげるようなアプローチは既に検討済みですか?例えばこ

                                    ツイッターで見つけて直したActiveRecordの問題さらに3つ - かみぽわーる
                                  • ActiveRecord(Rails)で効率的にツリー構造を扱うときに意識したいこと+開発例 | Wantedly Engineer Blog

                                    こんにちは、Wantedly で Webエンジニアをしている渡邉(@eityans) です。モチベーション・マネジメントサービスの Wantedly Pulse を開発しています。 Pulse(パルス)/ チームの状態 Slackを通じてチームの価値観を浸透させ、メンバーの抱える課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出す、新しいモチベーション・マネージメントツールです。 Slackを通じてメンバーの抱えるモチベーションの課題や隠れた貢献を可視化。行動のベクトルを束ね、自律して同じ価値に向かうチームを生み出します。 ... Pulseはチームの状態を可視化するツールです。会社全体をチームとして扱うこともできますが、従業員数の多い企業の場合、より小さなチームの状態を可視化したくなります。Pulseでは、上司部下の関係を設定することで、チームの設定が

                                      ActiveRecord(Rails)で効率的にツリー構造を扱うときに意識したいこと+開発例 | Wantedly Engineer Blog
                                    • Why and how GitHub encrypts sensitive database columns using ActiveRecord::Encryption

                                      EngineeringSecurityWhy and how GitHub encrypts sensitive database columns using ActiveRecord::EncryptionYou may know that GitHub encrypts your source code at rest, but you may not have known that we encrypt sensitive database columns as well. Read about our column encryption strategy and our decision to adopt the Rails column encryption standard. You may know that GitHub encrypts your source code

                                        Why and how GitHub encrypts sensitive database columns using ActiveRecord::Encryption
                                      • ActiveRecordモデルのカラムを消すときにignored_columnsが必要な理由 - Progate Tech Blog

                                        自己紹介 株式会社Progateサーバーサイドエンジニアのもりたんざにあです。 好きなものは卓球と筋トレです。 業務でignored_columnsの必要性や、内部で何をしているかについて調べたので、その過程でわかったことを紹介しようと思います。 前提条件 この記事の内容は https://github.com/rails/rails/tree/5-2-stable のソースコードを前提としています。 ignored_columnsとは 公式ドキュメンテーション : https://api.rubyonrails.org/classes/ActiveRecord/ModelSchema/ClassMethods.html#method-i-ignored_columns 「このカラムがデータベースのテーブルにあっても、無視してね!」とRailsのモデルに伝えるために、ActiveRecor

                                          ActiveRecordモデルのカラムを消すときにignored_columnsが必要な理由 - Progate Tech Blog
                                        • 週刊Railsウォッチ(20210607前編)ActiveRecord::Relationのone?とmany?が高速化、RubyKaigi Takeout 2021登壇者募集開始ほか|TechRacho by BPS株式会社

                                          こんにちは、hachi8833です。RubyKaigi Takeout 2021の登壇者募集が始まりましたね。 CFP for RubyKaigi Takeout 2021 (the online version of RubyKaigi) is now OPEN! https://t.co/VeJ1Tv5iyr #rubykaigi — RubyKaigi (@rubykaigi) June 2, 2021 週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙇 TechRachoではRubyやRailsな

                                            週刊Railsウォッチ(20210607前編)ActiveRecord::Relationのone?とmany?が高速化、RubyKaigi Takeout 2021登壇者募集開始ほか|TechRacho by BPS株式会社
                                          • Rails(ActiveRecord)で自在にSQLを書く手段いろいろ

                                            こんにちはー。 Railsである程度の規模の開発をしていると、ちょっと込み入った形のSQLでデータを取得したい状況が発生してきます。 今回は、そんなときに役立つActiveRecordクエリのテクニックをご紹介します。 ちなみにexecute()、arelは使いません。 (環境: Ruby 2.5.3, Rails 6.1.3) selectをゴリゴリ書く ActiveRecordのselectというメソッドがあります。 基本的な使い方としては、こんな感じで、必要なカラムだけ取得するためのものです。 users = User.all.select(:id, :name) users.first.attributes # => {"id"=>1, "name"=>"Alice"} なんですが、SELECT句を文字列で好きに書くこともできます。別名を付けておくことで、その名前で値を取得できます

                                              Rails(ActiveRecord)で自在にSQLを書く手段いろいろ
                                            • Rails: ActiveRecord::DelegatedType APIドキュメント(翻訳)|TechRacho by BPS株式会社

                                              概要 MITライセンスに基づいて翻訳・公開いたします。 APIドキュメント: ActiveRecord::DelegatedType リポジトリ: rails/delegated_type.rb at main · rails/rails 原文更新日: 2021/11/03(57fe7df) ライセンス: MIT ActiveRecord::DelegatedTypeはRails 6.1以降で利用できます。delegated typeは英ママとしました。 週刊Railsウォッチ20200601 新機能: Active Recordにdelegated_typeが追加もどうぞ。 また、Rails 7ではaccepts_nested_attributes_forもサポートされています。 週刊Railsウォッチ20211115前編 delegated_typeでaccepts_nested_at

                                                Rails: ActiveRecord::DelegatedType APIドキュメント(翻訳)|TechRacho by BPS株式会社
                                              • 週刊Railsウォッチ(20210222)ActiveRecord::Relationの新メソッドload_asyncとexcluding、Active Jobのperform_laterの改善ほか|TechRacho by BPS株式会社

                                                週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙇 TechRachoではRubyやRailsのなど最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ) 🔗Rails: 先週の改修(Rails公式ニュースより) 今回は以下のコミットリストのChangelogを中心に見繕いました。 コミットリスト: Compa

                                                  週刊Railsウォッチ(20210222)ActiveRecord::Relationの新メソッドload_asyncとexcluding、Active Jobのperform_laterの改善ほか|TechRacho by BPS株式会社
                                                • ActiveRecord::Relation ってなに? | ドクセル

                                                  スライド概要 皆さんは User.where(active: true).order(:age) の結果がなにを返すかご存知ですか。 User の配列が出力されるから配列が返ってくる?いいえ、違います。 普段なにげなく使っている ActiveRecord ですがこのセッションでは実際に内部でどのように動作しているのかを少し覗いてみましょう。 User.where(active: true).order(:age) がなにを返すのか、またどのようにして ActiveRecord が SQL 文を生成しているのかをライブコーディングを交えながら解説します。 普段 Rails を使っている人がもう1歩進んだ Rails の知識を一緒に学んで行きましょう。 https://kaigionrails.org/2022/talks/osyo/

                                                    ActiveRecord::Relation ってなに? | ドクセル
                                                  • 新卒から始める パフォーマンスを意識したActiveRecordの使い方 - ANDPAD Tech Blog

                                                    こんにちは!SWEの高橋(@thehighhigh)です。 この記事は ANDPAD Advent Calendar 2023の 17日目の記事です。 今年新卒として入社し、研修を終えたのちに、現在は「ANDPAD図面」というプロダクトのサーバーサイドを主に担当しています。 配属から早くも半年が経過し、プロダクトと自身の成長を実感しながら、日々楽しく開発に取り組んでいます! そんなANDPAD図面ですが、サーバーサイドは主にRuby on Railsで構築されています。 図面上に書き込みを入れることができたり、様々なオブジェクトを置くことができるというプロダクトの性質上、使われ方によっては非常に多くのデータを扱う可能性があり、また、ユーザーの業務に直結する機能を多く備えるプロダクトなので、可能な限りパフォーマンスを意識したコーディングが求められています。 Active Recordのパフォ

                                                      新卒から始める パフォーマンスを意識したActiveRecordの使い方 - ANDPAD Tech Blog
                                                    • ActiveRecord::Type::Boolean#cast の返り値が nil となるケースについて - Qiita

                                                      API などでクライアント側から渡ってきた "true"、"false"、1、0 などの値を、 Ruby の true や false として扱いたいときがある。 Ruby では false と nil 以外の値はすべて true として扱われるため、!! を先頭につけたとしても実現できない。

                                                        ActiveRecord::Type::Boolean#cast の返り値が nil となるケースについて - Qiita
                                                      • Rails 7: ActiveRecord::Base.loggerがclass_attributeで7倍高速化(翻訳)|TechRacho by BPS株式会社

                                                        私たちの見解では、このプルリクはRails 7におけるきわめてシンプルかつ大きなパフォーマンス改善です。最近のRubyで、クラス変数の読み取りにインラインキャッシュが導入されました(#17763)1。これにより、クラス変数の値解決で複雑な継承ツリーをたどるかわりにキャッシュから値を読み取れるようになりました。Rubyでクラス変数が読み込まれると、継承ツリーにある各クラスをチェックして、そのクラス変数がツリー内の他のクラスに設定されていないことを確認する必要があります。 もうお気づきかと思いますが、これはO(n)問題になります。ツリー内のノード数が増えるにつれて、読み取りのパフォーマンスは線形に低下します。 それでは、1個のモジュールを継承するクラス、30個のモジュールを継承するクラス、最後に100個のモジュールを継承するクラスを使ったデモを見てみましょう。 require "benchma

                                                          Rails 7: ActiveRecord::Base.loggerがclass_attributeで7倍高速化(翻訳)|TechRacho by BPS株式会社
                                                        • Taming Large Rails Applications with Private ActiveRecord Models

                                                          A complex system that works is invariably found to have evolved from a simple system that worked. A complex system designed from scratch never works and cannot be patched up to make it work. You have to start over with a working simple system. — Gall’s Law A new ActiveRecord instance has 373 public methods. Scaling a Rails application is difficult, but not for the reasons you might expect. The fra

                                                          • シン・ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法|TechRacho by BPS株式会社

                                                            こんにちはgengenです。 初めに言ってしまうと、Ruby2.7の始端無しRange(beginless range)がActiveRecordのwhereに渡せるので日付検索が全部Rangeできて便利というだけの記事です。 ActiveRecordのwhereにはRangeが渡せる 「ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法」で詳しく紹介されてますが、そもそもwhereのハッシュ引数の値にRangeオブジェクトが渡せて、BETWEENと不等号を使い分けて上手いことクエリを作ってくれます。 User.where(activated_on: Date.new(2022,1,1)..Date.new(2022,12,31)).to_sql => "SELECT \"users\".* FROM \"users\" WHERE \"users\".\"activate

                                                              シン・ActiveRecordで日付・時刻の範囲検索をシンプルに書く方法|TechRacho by BPS株式会社
                                                            • ActiveRecord::EnumのI18n

                                                              ActiveRecordのenumにI18n用の機能を提供するgemをつくった。 https://github.com/r7kamura/activerecord-enum_translation どういうものか Userがenumを利用したstatusというカラムを持っているとすると、I18n用の辞書としてこういう風なデータを用意しておけば… ja: activerecord: attributes: user: name: 名前 status: active: 利用中 inactive: 停止中 次のようにメソッドを呼び出すことで、翻訳された辞書が利用できるようになる、というやつ。 user.human_enum_name_for(:status) #=> "利用中" 技術的な難題の解決とかは全く狙っていなくて、どちらかと言うと、この手の仕組みにルールが無くてアプリ内のいろんなところに

                                                                ActiveRecord::EnumのI18n
                                                              • Rails adds support for Fiber-safe ActiveRecord ConnectionPools

                                                                Rails adds support for Fiber-safe ActiveRecord ConnectionPools Feb 23, 2022 One of the major focuses for Ruby 3 was parallelism and concurrency. A trailblazer in this space is the use of Ruby Fibers. Fibers are a concurrency mechanism that allows us to pause, loop, and resume execution while consuming far fewer context switches. It consumes less memory than threads while giving the developer contr

                                                                  Rails adds support for Fiber-safe ActiveRecord ConnectionPools
                                                                • Rails 7: クエリ結果を任意の順序にできるActiveRecord::QueryMethods#in_order_of|TechRacho by BPS株式会社

                                                                  概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Rails 7 adds ActiveRecord::QueryMethods#in_order_of to return query results in a particular sequence | Saeloun Blog 原文公開日: 2021/10/05 原著者: Alkesh Ghorpade サイト: Saeloun Blog | Ruby on Rails Consulting Company based in San Francisco and Boston 週刊Railsウォッチ20210823 ActiveRecord::QueryMethods#in_order_ofを追加もどうぞ。 Rails 7: クエリ結果を任意の順序にできるActiveRecord::QueryMethods#in_order_o

                                                                    Rails 7: クエリ結果を任意の順序にできるActiveRecord::QueryMethods#in_order_of|TechRacho by BPS株式会社
                                                                  • Rails API: ActiveRecord::AutosaveAssociation(翻訳)|TechRacho by BPS株式会社

                                                                    概要 MITライセンスに基づいて翻訳・公開いたします。 英語記事: Rails API ActiveRecord::AutosaveAssociation 原文更新日: 2021/07/30(7d9b5d4) ライセンス: MIT 訳文には適宜強調を加えています。 AutosaveAssociationは、親がsaveされるときに、関連付けられているレコードも自動的にsaveされるようにするモジュールです。saveに加えて、mark_for_destruction済みの関連付けレコードのdestroyも行います(mark_for_destructionおよびmarked_for_destruction?を参照)。 親とその関連付けのsave、およびmark_for_destruction済みの関連付けレコードのdestroyは、すべて1個のトランザクション内で行われます。これにより、データ

                                                                      Rails API: ActiveRecord::AutosaveAssociation(翻訳)|TechRacho by BPS株式会社
                                                                    • 週刊Railsウォッチ(20191223前編)Railsセキュリティ修正6.0.2.1と5.2.4.1リリース、Ruby 2.7.0-rc2リリース、ActiveRecordのコールバック回避ほか|TechRacho by BPS株式会社

                                                                      2019.12.23 週刊Railsウォッチ(20191223前編)Railsセキュリティ修正6.0.2.1と5.2.4.1リリース、Ruby 2.7.0-rc2リリース、ActiveRecordのコールバック回避ほか こんにちは、hachi8833です。今年最後のRailsウォッチ前編をお送りします。Ruby 2.7のカウントダウンが始まっていますので、クリスマスにはリリースされるでしょう。 リリース: Ruby 2.7.0-rc1 Released で、rc1を試したいけど、Homebrewのruby-buildにはなかなか最新版が上がってこないから、まだインストールできない〜!というときに読むQiita記事を書きました。 Homebrewのruby-buildの更新を待たずにrbenvで最新版のRubyをインストールする方法 - Qiita https://t.co/UpYp2fkL

                                                                        週刊Railsウォッチ(20191223前編)Railsセキュリティ修正6.0.2.1と5.2.4.1リリース、Ruby 2.7.0-rc2リリース、ActiveRecordのコールバック回避ほか|TechRacho by BPS株式会社
                                                                      • ActiveRecordパターンの呪縛を学びほぐして挑むクリーンアーキテクチャへの入り口 | ドクセル

                                                                        スライド概要 ActiveRecordパターンに引きづられて設計が歪みがちになるのを学びほぐすことでクリーンアーキテクチャでの開発の良いスタートラインに立てるのではないでしょうか?

                                                                          ActiveRecordパターンの呪縛を学びほぐして挑むクリーンアーキテクチャへの入り口 | ドクセル
                                                                        • RailsのActiveRecord::AttributeMethods::Dirtyを使ってみた - stmn tech blog

                                                                          はじめに 背景 ActiveRecord::AttributeMethods::Dirtyとは メソッド一覧 メソッド名の変遷 活用に向けた検証 検証に使用したモデル Dirtyの活用例 実現したかったこと/実装例 Dirtyの活用したサンプルコード おわりに 参考 はじめに はじめまして、スタメンでエンジニアをしているショウゴです。普段は、バックエンドグループでRuby on Railsを用いてバックエンドの開発を主に担当しています。 今回の記事では、ActiveRecordのattributeの変更状況を確認できるRailsのActiveRecord::AttributeMethods::Dirtyモジュールの使い方の検証結果と活用例を紹介します。 背景 今回、特定のカラムの値を変化させて、ステータスの変更・管理を行っているモデルに対して新たなバリデーションを実装する作業の中で、特定の

                                                                            RailsのActiveRecord::AttributeMethods::Dirtyを使ってみた - stmn tech blog
                                                                          • ActiveRecord::Bitemporalとの歩み方 - SmartHR Tech Blog

                                                                            こんにちは!SmartHR基本機能でプロダクトエンジニアをしているdooorです。 SmartHRでは履歴を表すデータモデルにBitemporal Data Modelを採用していて、Active Recordで扱うために ActiveRecord::Bitemporal を開発しています。 BiTemporal Data Modelとは、データを「有効時間(データが現実世界で有効である期間)」と「システム時間(データがデータベースに格納された時間)」の2つの時間軸で管理する方法です。変遷するデータの履歴を残すことができ、ある時点のデータを一覧することや過去の情報を更新することが可能になります。BiTemporal Data Modelが気になる方は 操作履歴/時点指定アクセスの実現 - BiTemporal Data Model の実践 をご一読ください。 ActiveRecord::B

                                                                              ActiveRecord::Bitemporalとの歩み方 - SmartHR Tech Blog
                                                                            • 週刊Railsウォッチ: ActiveRecord::QueryLogs追加、spring gemがデフォルトから削除、fast_gettextほか(20210906前編)|TechRacho by BPS株式会社

                                                                              こんにちは、hachi8833です。今週はいよいよRubyKaigi Takeout 2021ですね。 コミュニティ有志のみなさんへ: Day 3 後 #rubykaigi の内容を踏まえ、パーティやミートアップを開催しませんか? 関連イベントをリストアップするスプレッドシートを用意しているので、賛同いただけるイベントなどご自由にご掲載ください。会期中都度周知を予定しています! https://t.co/gcquu2WMat — RubyKaigi (@rubykaigi) September 2, 2021 週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi88

                                                                                週刊Railsウォッチ: ActiveRecord::QueryLogs追加、spring gemがデフォルトから削除、fast_gettextほか(20210906前編)|TechRacho by BPS株式会社
                                                                              • activerecord-importを利用して無効なデータを無理やりINSERTする - かみぽわーる

                                                                                activerecord-importと:on_duplicate_key_ignoreオプションを組み合わせるとカラム定義の範囲外の値であっても無理やりINSERTすることができます。 # frozen_string_literal: true require "bundler/inline" gemfile(true) do source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem "activerecord", "6.1.0" gem "activerecord-import" gem "mysql2" end require "active_record" require "logger" ActiveRecord::Base.establish

                                                                                  activerecord-importを利用して無効なデータを無理やりINSERTする - かみぽわーる
                                                                                • ActiveRecord の or は merge とセットで使え - Qiita

                                                                                  Model.where(A) .merge(Model.where(B).or(Model.where(C)).or(Model.where(D))) .merge(Model.where(E).or(Model.where(F))) merge() を使うと、 or() の部分をグルーピングすることができます。 SQLの条件組み立ては and で条件を絞り込んでいくのが基本ですから、 or の部分はまとめて and でつないでいきましょう。 or() はどこでグルーピングがどこに入るのか予測不可能なことが多いですが、merge() と併用するとグルーピングを明示的に制御できるようになります。

                                                                                    ActiveRecord の or は merge とセットで使え - Qiita