はじめに こんにちは。 GMOアドマーケティングの石丸(@thomi40)です。 前回はRails 7で追加されたComparisonValidatorについて紹介しました。 この記事は GMOアドマーケティング Advent Calendar 2022 3日目の記事です。はじめにこんにちは。GMOアドマーケティングの石丸(@thomi40)です。前回の記事では Rails 7 から実装された query_log_tags について紹介しました。今回の記事では同じく Rails 7 から追加された ComparisonValidator について紹介します。※記事内の画像は筆者が作成したアプリケーションをキャプチャーしたものです。ComparisonValidatorとはComparisonValidator は任意のオブジェクトの比較を行うバリデーターです。数値の比較には Numeric
nginx+puma+rails の worker,thread,connection pool 数の目安Railspuma ※間違ってたら指摘を... 前提 MRI(Matz's Ruby Implementation) の前提, JRubyの場合は考え方が変わる。 nginx の worker 数の目安 CPUコア数を基本とする。ただし... 一方で、例えば僕の用途では、現在画像の処理だったりとか、ngx_mrubyのようにリクエストの過程で一部ブロッキングされるような処理も増えてきているため、コア数以上の値に設定しておいた方が性能を発揮できるような状況も増えてきています。 nginxのworkerプロセス数をCPUコア数の倍数で自動的に設定できるモジュールを書いた - 人間とウェブの未来 上記のようにコア数以上に設定した方が良いケースも時としてあるようです。 nginx の work
はじめに みなさん、アプリサーバのチューニングはどのように行っていますか? 私の場合、使うサーバのスペックがだいたい同じくらいなので、過去の設定ファイルを使いまわしていました。 そんな中、先日本番環境で初めてPumaを使用しましたが時間の都合でチューニングが行えませんでしたので、今回Pumaのパフォーマンスチューニングについて調べてみました。 チューニングで注意する項目 アプリサーバのチューニングにおいて注意する項目は下記のとおりです。 子プロセスの数 スレッドの数 Copy-on-write サーバスペック(メモリ、CPU等) これらの項目はPumaに限らずUnicornやPassengerなどの他のアプリサーバにも当てはまります。 それでは個別の設定を見ていきましょう。 子プロセスの数 Puma(UnicornとPassengerも同様)はforkを使う設計になっており、アプリのプロセ
これは ドリコム Advent Calendar 2016 の15日目です。 14日目は ishida-k さんの 新人アートディレクター必見!業務を円滑に進めるための3つの心得 です。 多くの人が安心して遊べるゲーム環境を守るため、ニックネームなど、ゲームユーザの自由な文章入力を受け付ける機能には、NGワード検出が必要です。反社会的な不適切単語や、電話番号などの個人情報が無制限に出回るのを許すわけにはいきません。Mobage, GREEなどでブラウザゲームを提供している時は、主にプラットフォームのテキストAPIを通じてなされていたNGワード検出ですが、ネイティブシフトにあたって自前で機能を持つ必要が発生しました。本稿では、いろんな人々が必要に応じて拡張を入れてきた様子を記します。 あらかじめお伝えしておきますがリアルタイム監視などの高度な機能には触れません。またNGワードそのものは秘匿デ
こんにちは。花粉症で鼻水が止まらない日々が続いている hilotter です。 同一レコードに対し複数ユーザ(もしくはバッチ処理等)から同時に更新される可能性がある場合、排他制御を行う必要があります。 今回はシンプルなポイント付与機能を例に、悲観的ロックを用いた排他制御のテストを書いてみたいと思います。 シンプルなポイント付与機能仕様 ユーザは他のユーザにポイントを送ることができる 今回のサンプルは以下の環境で確認しました。 Rails 5.1.4 MySQL 5.7.20 MySQLのトランザクション分離レベル REPEATABLE-READ(デフォルト設定) add_pointメソッドの実装 Userモデルにポイントを付与できるadd_pointメソッドを追加します transaction内でlock!を用いて悲観的ロックをかけています。 # app/models/user.rb cl
ピクスタ開発部で毎日ヒィヒィ言いながらエンジニアをやっております @muramurasan です。 今回はPIXTAのとあるリポジトリにおいて、未使用のメソッドを削除しようとした際、gemを組み合わせることで、効率的かつ安全に削除することができたという話をしたいと思います。 よくやる方式 外部の勉強会などで、「未使用のメソッドを削除する際にどうしているか?」ということを聞いた際、よく聞くのが「未使用らしきコードを見つけ次第、ロギングを行うメソッド呼び出しを挟み込んでいく」というものでした。 この方式は、動的なメソッド呼び出しにも当然対応できますし、お手軽なので、一般的に好まれているようです。 問題点 ただし、この方式では以下の問題点があると私は考えています。 そもそも、未使用らしいメソッドを見つけるのが大変 プロダクションコードを汚してしまう これらの問題を解決するために、PIXTAでは
このエントリは Ruby on Rails Advent Calendar 15 日目です。(遅くなってすいません) 同時に 14 日目のじょーかーさんのエントリへのアンサーエントリでもあります。 (まあ、じょーかーさんがこの Advent Calendar に登録したときに、タイトルから内容を推察してこれを書くことを決めましたが、実際のところ、あまりアンサーにもカウンターにもなってないし、全然関係ない内容と言えないこともないので、まあサービスクラスについては僕も推奨したことがあるし、僕も反省してるんですよ程度に読んでもらえると幸いです。) まずはじめにごめんなさい 3 年くらい前に僕は Rails にサービスクラスというものを導入するといいことがあるよと書いたのだけど、それからいくつもの Rails アプリケーションを見たり、実際に自分で開発したりして、うーんって思うことも増えてきたので
はじめに react-railsという、ReactをAsset Pipelineに乗せて使えるようにしてくれるruby gemsがある。 この記事では、これを使用してReactの公式tutorialを進めていく。 公式のtutorialではサーバ側はすでに実装済みとして進んでいる。 今回はせっかくなのでtutorialを進める中でサーバ側も実装していくことにする。 ちなみに使ってみた個人的な感想としては、RailsのAsset Pipelineに乗せるならすごく順当かなー、という感じ。 browserifyを使いたい。bowerもオワコンと呼ばれてしまう。そんなこの時代。 Asset Pipelineは捨てたい感じがあるけど、既存のアプリケーションを徐々にReactコンポーネント化していく、みたいな時には良いと思う。 方針 きまぐれで、必要そうなところはReactの説明する。けど英訳とかは
dotsで開催されたReactの導入を検討されてる方向けの勉強会でお話しました https://eventdots.jp/event/597088
ども、@kimihom です。 今回はこのイベントで発表させていただいた。 第3回スタートアップRails勉強会 - connpass そのスライドは以下。 以下はいつも通りの補足的なことを書こうと思う。 1, form_for を使おう form_for。これこそが Rails においてのキーワードであり、Rails のレールに乗る一番の方法だと考えている。その理由はスライド上に書いてあるんだけど、より具体的なところを解説しようと思う。 Routing。これを突き詰めると、 new と edit でかく form_for を同一のものにできる。Rails Guide に載ってるんだけど、ここはほとんどの人は見逃していると思う。 ## 新しい記事の作成 # 長いバージョン form_for(@article, url: articles_path) # 短いバージョン(レコード識別を利用)
投稿開発部の外村(@hokaccha)です。今回はReactについてのお話です。 ReactとSPA 最近JavaScriptやそれを取り巻くフレームワークなどの話題では、サーバ側はAPIのみを提供し、View(HTML)は全てJavaScriptで描画するような、いわゆるシングルページアプリケーション(以下SPA)についてよく語られます。 一方で、SPAを構築するにはコストがかかることも事実で、特にフロントエンドエンジニアが多くない環境では、従来通りサーバーサイドでViewを書きつつ動的な部分だけJavaScriptで処理するというアーキテクチャのほうが現実的な場合も往々にしてあります。 今回はこのような、サーバー側でHTMLを生成し、一部の動的な部分だけをReactで書くためのTipsを紹介します。 なお、基本的にサーバーサイドはRails前提ですが、RailsにおけるReactの開発
3年間日本語のみで運用してきたサービスを、3ヶ月で新人が多言語化した話 はじめにはじめまして。FiNCで今年の4月からサーバーサイドエンジニアをやっている澤井です。 先日プレスリリースがありましたとおり、FiNCで提供している法人向けサービスFiNCプラスが日本語以外にも対応し、この度英語版がリリースされました。 入社直後に携わった最初のプロジェクトということで、個人的には非常に感慨深いのですが、今回はこのプロジェクトの舞台裏を見ていきたいと思います。 多言語化とはサービスの多言語対応と言っても、そのスコープは様々ですし、サービスが提供しているデータは多岐にわたります。 ざっくりカテゴライズするだけでも、 UIタイムラインなどユーザー投稿によるデータおすすめのタスクなどのマスターデータがあり、それぞれテキストのものと画像データがあります。 またこれらに紐付いて、 ユーザー使用言語の判定があ
この値が大きいと、Rails側ではなく、データベース側に PreparedStatement のキャッシュがメモリに保存されるためデータベースのメモリをぐんぐん消費するのだ。 アプリの内容と相談し、 PreparedStatement キャッシュが少なくてよいなら減らすべき。 というかデフォルト 1000 は多すぎるような気がする。 このキャッシュは接続毎に効いてくるので App Server を複数台で冗長化してる場合などは劇的に効いてくる。というか、逆に言うとデフォルト設定だとApp Serverを増やすとあっという間にデータベースのメモリを消費してしまうことになる。 railsguide にシレっと載っている情報だが、案外ネットで見つかりにくい情報なので載せることにした。
こんにちは、河野です。 RailsとPostgresqlの組み合わせでmigrationを通してテーブルを作成するとき、デフォルトでは、IDのデータ型はSERIAL(INT)になります。 特にデータ量が多くない場合には問題ないのですが、データ量多くなったときにINTの上限値(2147483647)を超えてしまうとデータがインサートできなくなり、大変な事態になります。 実は、先日あるプロジェクトで、テーブルのIDがINTの上限を超えてエラーになってしましました。IDをBIGINTに変更することで対応できたので良かったのですが、そもそもテーブル作成時にBIGINTにしておけば問題は発生しませんでした。 では、どうやったらテーブル作成時にBIGINT(PostgreSQLなのでBIGSERIAL)を使用することができるでしょうか。 create_tableのオプションでIDの型を指定する cre
thoughtbot/factory_girlを活用して日々テストを書いているRailsエンジニアの方々、こんにちは、正徳です。 Forkwellでもfactory_girlを使ってテストを書いています。 このfactory_girlには便利機能が多く、とても使いやすいのですが、女心並みに複雑*1なので、一通りの機能をブログにまとめてみました。 factory_girl初心者から、中級者の参考になれば幸いです。 参考にしたページ このブログの内容は全てfactory_girlのGETTING_STARTEDに記載されています。 読まれた事のない方は、是非一読する事をおすすめします。 目次 factory_girlのインストールと設定 factory_girlの使い方(Using factories) build create attributes_for build_stubbed 遅延評
CTC教育サービス・ホーム > コラム > Ruby & Rails > 第21回 RailsのDB周りを快適に! ~『Annotate』『MigrationComments』の紹介~ [IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes 第21回 RailsのDB周りを快適に! ~『Annotate』『MigrationComments』の紹介~ (藺藤卓実) 2015年11月 皆さん、こんにちは。 藺藤です。 今年、弊社には20名を越える新人が入社しました。 ゼネットの場合、新入社員は入社後約3ヶ月の間プログラム言語習得の研修(JavaやRuby, HTML, JavaScript等)や、各プロジェクトに参加してのOJTを行います。 そして研修期間を終えた後、彼ら・彼女らは各々業務に従事するよ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く