https://kaigionrails.org/2023/talks/kubo/
はじめに Railsのポリモーフィック(polymorphic、多態性)関連について、実装方法を説明している記事は見かけるのですが、実際これがどんなものでどんな時に便利なのかを説明している記事があまりなく、よくわからないで使っている人もいるようなので本記事を書きました。 実装方法そのものについては詳細には説明しませんので、Railsのポリモーフィック関連をどう書くのかを知らない方はまずは公式ドキュメントを読んでいただけると理解が早いかと思います。 ボリュームは少ないので、2分もかからないかと思います。 Rails Guides: 2.9 ポリモーフィック関連付け "どんなものか"について、先に結論 ポリモーフィックとはダックタイピングの一種であり、 別の言い方をするとGoFのデザインパターンで言うところの「プログラムは実装に対してではなく、インターフェースに対して行う(Program to
こんにちは、まちいろの工藤です。 まちいろでは開発フレームワークに Rails を採用していますが、最近の新規案件では Go 言語を採用してみています。この記事では、Go で開発を始めるにあたって行ったライブラリ選定の中身を紹介したいと思います。 選定にあたっては、awesome-go や Qiita などの記事を参考にしました。 ModulesGo 1.11 から Go modules が導入されたとのことで、素直に Go modules を利用することにしました。特にハマることもなく利用ができています。 Web Application FrameworkgRPC + grpc-gateway or grpc-web ・https://github.com/grpc/grpc-go ・🙆proto でスキーマ駆動開発が可能 ・🙅♂️REST API を提供する場合は grpc-ga
という箇所があるはずなので、ここの # gem 'unicorn' のコメント外してください。 この1行がなければ gem 'unicorn' をどこかに追加してください。 編集したら保存して Unicorn をインストールします。 $ bundle install これで Unicorn がインストールされます。 Unicorn の設定ファイルを作成 Rails アプリケーションがあるディレクトリの config ディレクトリに unicorn.rb というファイルを新規作成します。 そのファイルに以下を追加します。 worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3) timeout 15 preload_app true listen '/home/vagrant/myapp/tmp/unicorn.sock' pid '/hom
はじめに:Arelって何? みなさん、Arel(アレル)ってご存知ですか? ArelはActive Recordの内部で使用されるSQL生成ライブラリです。 Railsのクエリの書き方をググると、ときどきArelを使った実装例が見つかるので、見たことがある、もしくは何度か使ったことがある、という人もいると思います。 Arelをよく知らない人のために、Arelの利用例をちょっと見てみましょう。 たとえば「コメント文中に、"ruby"が含まれるユーザープロフィールを検索したい」という場合、Rails標準のクエリインターフェースを使うと条件部分のSQLを文字列で書く必要があります。(PostgreSQL環境を想定) Profile.where( "profiles.comment ILIKE ?", "%ruby%" ).to_sql #=> SELECT "profiles".* # FROM
tl;dr Railsではコネクションプール数を設定していても、1スレッド辺り1コネクションしか持ちません。 発端 アカツキではRails + Unicorn + Nginx + MySQLの構成をAWSで運用しており、c3.4xlargeのインスタンス上で1台辺り64のUnicornワーカープロセスが実行される設定になっています。 ソーシャルゲームでは時にたくさんのアプリケーションサーバを並列稼働される必要がでてきます。特に年末年始の時期は平時の2-3倍のトラフィックが予想され、アプリケーションサーバを最大100台で稼働させる必要がありました。 Railsのdatabase.ymlのpool設定は5だったので、単純に考えると最大 100台 * 64プロセス * 5接続 = 32,000個の接続が常時貼られるのでは?MySQLのmax_connectionsの設定は大丈夫か?という議論があ
2017.03.13 技術記事 「Sakasho」のRubyを2.4に、Railsを5にアップグレードしました by kunpei.sakai #ruby はじめに JPRゲーム事業本部開発基盤部の @namusyaka です。 業務ではDeNAのゲームプラットフォームである Sakasho のバックエンドやインフラ周りの開発・運用をしています。 そして最近アイコンを8~9年ぶりくらいに変えました。よろしくお願いいたします。 さて本題ですが、Sakashoでは今年の2月に管理アプリケーションのRuby・Railsのバージョンの大幅なアップグレードを実施しました。この記事ではそのアップグレード対応について、一つの事例として紹介させていただければと思います。 概略 冒頭でも触れましたが、アップグレードしたのはDeNAのモバイルゲームプラットフォームであるSakashoの機能を制御するための管理
オブジェクトがDBに保存される前に、そのデータが正しいかどうかを検証する仕組みをバリデーションといいますが、 RailsでActiveRecordを使ってそれを実現するにあたってよく使いそうなのをまとめます。 以下のメソッドにおいてはバリデーションがトリガされます。 create create! save save! update update! 以下のメソッドにおいてはバリデーションはスキップされます。 decrement! decrement_counter increment! increment_counter toggle! touch update_all update_attribute update_column update_columns update_counters Railsでのバリデーショントリガ Railsではvalid?メソッドを実行するとバリデーションが実
初投稿の@sunflatです。好きなプログラミング言語は MSX-BASIC です。 Rails 4.1でActiveRecordに追加された enum について、ちょっと調べてみました。 本当は、Misocaの開発でenumを使ってその実例を紹介する予定だったのですが、後述する理由により今回は適していなかったので使いませんでした。 そこで今回は、(株)Misocaの近くにある「ムガルパレス」というインドカレー屋さんの、ランチセットのメニューを例に、enumを使う時に気をつけたいポイントをいくつか紹介します。 enum の使い方 ActiveRecordの enum を使うと、プログラムからは文字列(名前)でアクセスでき、DBには整数値で保存される属性を作成できます。 さっそくランチセットのモデルを作成しましょう。カレーの種類として、チキン、ポーク、野菜、豆 を選択できるとします。enum
Railsでは、ActiveRecordのhas_manyとbelogns_toを使うことで、DBの「1対多」のテーブル間のリレーションをモデルに簡単に実装することができます。 動作確認 Rails 4.1 ActiveRecord 4.1 目次 1対多関連とは 参照先の外部キーを追加する モデルにhas_manyとbelongs_toを追加する 使えるようになるメソッド 1. 1対多関連とは説明のために次のER図を実装してみます。 顧客1人が複数回注文をするので、「顧客」から見ると「注文」は"多"です。 また、1注文は必ず一人の顧客から注文されないので、「注文」から見ると「顧客」は"1"です。 このような関係を「1対多関係」といいます。 2. 参照先の外部キーを追加するまず、多側のテーブル(今回はordersテーブル)にxxx_idという名で外部キーを追加します。 xxxの箇所は参照先の
こんにちは、バックエンドエンジニアのjoeです。主にAPIを担当しています。 VASILYのAPIでは、速度向上のためにModelオブジェクトをキャッシュしています。 最近、Modelキャッシュの仕組みを実装したので、その実装方法を紹介します。また、既存ライブラリとの比較についても書きたいと思います。 Modelキャッシュとは Modelキャッシュを簡単に言うと、下記の結果をキャッシュすることです。 > Item.find(1) => #<Item:0x007fdfe398a678> このように、1レコード単位のActiveRecordをキャッシュすることを本記事ではModelキャッシュと呼びます。ActiveRecordをキャッシュすることで、データベースへの読み込み回数を減らし、レスポンス速度を向上させることができます。 既存ライブラリの紹介と問題点 Modelキャッシュを実現できるG
Ruby で DB を扱うちょっとしたスクリプトを書くとき、ActiveRecord で生SQLを使うと色々捗ることが多い。 そのためのメソッドをまとめてみた。 事前準備: establish_connection 作成・更新系: execute 検索系: select_all, select_one, select_rows, select_values, select_value プレースホルダ: sanitize_sql_array 事前準備 establish_connection DBとのコネクションを確立する。'mysql2', 'postgresql', 'redshift' など様々なアダプタが使える。 以下は接続設定の一例。 [MySQL] (要 mysql2 gem) require 'active_record' config = { adapter: 'mysql2
Please also read my follow-up about abstractions and the role of a framework Last year I made a decision that I won’t be using Rails anymore, nor I will support Rails in gems that I maintain. Furthermore, I will do my best to never have to work with Rails again at work. Since I’m involved with many Ruby projects and people have been asking me many times why I don’t like Rails, what kind of problem
このエントリでは、Yegor Bugayenkoによる記事、ORM Is an Offensive Anti-Patternを紹介する。 (Yegorから和訳と転載の許可は得た。) 以下はその全文の和訳だが、意訳超訳が混じっているので、もとのニュアンスを知りたければ元記事を読んでもいいし、読まなくてもいい。 結論から言えば、ORMはオブジェクト指向プログラミングの原則の全てに違反するひどいアンチパターンだ。オブジェクトをバラバラに引き裂き、もの言わぬ受身なデータ入れに変えてしまう。 小さいWebアプリケーションから、数千のテーブルをCRUD操作するエンタープライズシステムまで、どんなアプリケーションにもORMが存在することはゆるせない。 代わりになるものは? SQLを話すオブジェクトだ。 ORMの仕組み オブジェクト関係マッピング (Object-relatinal mapping、ORM
ActiveRecord の attribute 更新方法ってどんなものがあって、それぞれどんな違いがあるかご存じですか? 案外色々とあったので表にまとめてみました。リファレンスやソースコードを参考にしつつ、Rails 4.2 でテストしています。 単一の attribute 更新 メソッド 保存 バリデーション(*1) コールバック(*2) readonly チェック(*3) updated_at の更新 補足 使用例
モデルについて 説明 モデルとはアプリケーションが扱うデータや処理を表現する仕組みのこと モデル名とテーブル名の規約 英大文字から始まる 英数字のみ 単語の区切りでは、先頭文字を大文字 単数形の名詞 Entry UserComment ファイルはapp/modelsディレクトリに格納 ファイル名は、モデル名の単語区切りを「_」にし、すべて小文字にしたもの app/models/entry.rb app/models/user_comment.rb 命名規則 種類 説明 例
Rubyとは 説明 手軽なオブジェクト指向プログラミングを実現するための種々の機能を持つオブジェクト指向スクリプト言語 Rubyの特徴 シンプルな文法 普通のオブジェクト指向機能(クラス、メソッドコールなど) 特殊なオブジェクト指向機能(Mixin、特異メソッドなど) 演算子オーバーロード 例外処理機能 イテレータとクロージャ ガーベージコレクタ ダイナミックローディング(アーキテクチャによる) 多くのUNIX上で動くだけでなく、DOSやWindows、Mac、BeOSなどの上でも動く 変数 特徴 JavaScriptと異なり、varは不要 セミコロン(;)も不要 予約語は、自動的にダブルクォートで囲まれる 例 数値と文字列 特徴 数値や文字列はすべてオブジェクトとして扱われる 変数の型は自動的に変換されるので意識する必要はない 数値 足し算やかけ算の結果、Fixnumの値を超えた場合は、
お久しぶりです。川野です。 ちょうど一ヶ月ぶりになってしまいましたが、元気に仕事やっております。 最近は仕事の他に、艦これとラブライブ スクフェスとWHITE ALBUM2をやっているのでとっても忙しいです。 技術力が上がったら自分でゲームとかも作ってみたいですね。 それでは、今回の講座に入っていきましょう。 前回 「FactoryGirlってどんな女の子? ☆(ゝω・)vキャピ」」は → こちら ———————————————————— (´・ω・`) 「前回はFactoryGirlについて書いたね」 ( ´∀`) 「そだね。modelに合わせたテストデータを自動で作ってくれる便利なツールだよ」 (´・ω・`) 「今度はどんなことをやるの?」 ( ´∀`) 「じゃあせっかくテストデータができたことだし、model側のテストもやっちゃおう」 (´・ω・`) 「はーい」 ( ´∀`) 「
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く