Ruby on Rails
ども、@kimihom です。 久々に無限スクロールを実装する機会が 詠みラボで発生しました。そこで、振り返りがてら、こんな感じで実装するのが個人的に一番シンプルだったコードをご紹介します。 サーバー側実装 俳句(Haiku) をそれぞれ20句ごとに毎回取得し、…
ども、@kimihom です。 Rails の form_with を使っているだろうか?だいぶ前から form 系はフロントエンド側の実装に任せるというのが一般的になりつつあるが、やはり form_with でささっと作れる便利さは大きい。 form_with サンプルコード ja: activerecor…
ども、@kimihom です。 Rails アプリを作っていて「遅くなったな」と感じる場合、真っ先に原因となりうるのが N+1 なコードを書いてしまっていることだろう。その時の理想の対応は何か、考える機会があったのでブログとしてまとめておく。 モデル例 まずわか…
ども、@kimihom です。 前回のインデックス貼り に続き、インデックス対応についての追記を記す。 外部キー のインデックスの効果 よく、関連する外部キーにインデックスをデフォルトで貼る書き方がある。 class CreateTweets < ActiveRecord::Migration[5.0…
ども、@kimihom です。 Rails 7 がリリースされてから暫く経つが、基本的な部分がまだシェアされてないことが多い。本記事では Rails 7 注目のフロントエンドのセットアップについて記す。 追記 jQuery 自体はこれでインポートできたが、jQueryプラグインな…
ども、@kimihom です。 本記事は、普段アプリケーションエンジニアとして 0->1 でのサービス開発をやってきて、クエリ処理が重くなってどうしたものかという状況へ達した際に考えたいことをまとめてみる。 インフラエンジニアか自分でやるか まず、サービス…
ども、@kimihom です。 今回 SQL の負荷を分析して改善することをしたので、その実施を残しておこう。 パフォーマンス解析 基礎 何かしらサービスをローンチする時点で、パフォーマンス解析するようなサービスを導入することかと思う。 New Relic | パフォー…
ども、@kimihom です。 ActionText の実装をしていて、実際の利用でハマった点をまとめておく。今まで ActionText の記事として2つ書いてあるので、興味があれば読んでみていただけたらと思う。 www.bokukoko.info www.bokukoko.info Webpacker の利用が前提…
ども、@kimihom です。 今回はシンプルに S3 にファイルを上げる方法を案内しよう。 Rails 側でファイルアップロードを受ける課題 おそらく多くの Rails デベロッパーは、 画像のサイズ縮小や変換をするプログラムを実行したいがために、一度 Rails 側でファ…
ども、@kimihom です。 前回に引き続き Action Text に関して調査を続けている。今回は Amazon S3 へアップロードしたものをテキストエリアの中に表示させてみよう。 Active Storage の設定 Action Text のファイルアップロードは、Active Storage の設定に…
ども、@kimihom です。 前回の Rails 6 の記事では、フロントエンド Webpacker 周りの調査結果を報告した。さて今回はいよいよ私の Rails 6 にしたいメイン目的である Action Text についての調査を報告しようと思う。 Action Text の特徴 Action Text を使…
ども、@kimihom です。 Rails 6 が公開されてしばらく経つ。私としては Rails 6 の中でもとりわけ Action Text でクールなテキストエリアを実現したいと思っていので、Rails 6 をゼロから学び始めている。 でも今回は Action Text とは全然関係なく、Rails 6…
ども、@kimihom です。 明日、2020/02/04 に Chrome 80 のリリースが予定されている。そこで巷で話題になっている SameSite の部分で対応が必要になるケースがでてくる。 ウェブ上で調べても全然その対応方法が出てなかったので、記録として残しておこう。 …
ども、@kimihom です。 今回、大量のレコードを一つずつ処理する実装をしたので、その実装方法をまとめておく。 コードの大枠 以下は全ユーザー(User)に紐づいているレコード(Record) に対して処理をするコードとなっている。 User.all.order("id").each do …
ども、@kimihom です。 今回は ActiveRecord でもおそらくマイナーなメソッドであろう rewhere を使う機会があったのでメモとして残しておく。 今回の利用ケース とあるデータの取得条件でフィルタリングをして統計として表示するページを想像してみて欲しい…
ども、@kimihom です。 最近はいろいろな企業が API を提供してくれるようになってきた。外部サービスの API で、例えば顧客情報などを一括で取り込みたいというケースはよくあることだろう。私はこうして実装したということで記事として起こしてみる。 バッ…
ども、@kimihom です。 Rails でコードを書いていたら、きっと一度は書いたことがあるだろう before_destroy で起こりうるリスクと対策について記す。 S3 のドメインが変わるお知らせ 先日、S3 の URL が変更されるとのお知らせが届いた。 dev.classmethod.j…
ども、@kimihom です。 Rails で開発をしていると、何かしらのメッセージをユーザーに掲示したい時がよく出てくる。 コンタクトを作成しました。 メンバーの招待に失敗しました。 アイテムを更新しました。 こういったときに flash っていう便利なメッセージ…
ども、@kimihom です。 今回は Ruby と Ruby on Rails をそれぞれバージョンアップさせたので、そのログを記そうと思う。 アップデート概要 Ruby と Ruby on Rails をそれぞれアップデート。そろそろ Rails 6.0 も出そうなタイミングってこともあって、定期…
ども、@kimihom です。 私は Web フレームワークは Ruby on Rails を利用している。かれこれバージョン2.2 の頃から使い続けているので 7年以上になる。そこまでして私が Ruby on Rails を使い続ける魅力について個人的な想いを記していく。 Rails の作者 DH…
ども、@kimihom です。 先日、ようやく Rails 5.1 にアップデートしたので、それについて簡単にまとめを書いていこうと思う。 アップデートの経緯 前までは Rails 4.2.x の最新をアップデートし続けている形で運用していた。 Rails 5 以降の新機能はチェック…
ども、@kimihom です。2018年もどうぞよろしくお願いします。 さて、今回は Rails アプリを世界へ向けて展開したい人向けの記事を書いていこう。 基本的な参考資料 まずは Rails の I18Nドキュメント を読むことから始めよう。ここに基本的なことは全て書か…
ども、@kimihom です。 Rails 5.0 までは jquery-rails を使ってフォームやリンクの Ajax 通信を可能にしていたけど、Rails 5.1 からは rails-ujs として切り出され、晴れて jQuery からの脱却を可能にした。 そこで、本記事ではこの rails-ujs と関連深い f…
ども、@kimihom です。 SaaS において悩ましいのが、企業毎のデータをどうやって管理していくかという話がある。企業毎にデータは完全に独立しているので、URL やデータそのものも独立している方が望ましいとされる。では SaaS においてデータベースの設計を…
ども、@kimihom です。 この記事は Heroku Advent Calendar 8日目の記事です。まだ3枠空きがありますので、Heroku ユーザーの方はぜひご登録を! Rails 5.1 から Yarn のサポートが入り、フロントエンドの JavaScript ライブラリの管理が容易になった。そこ…
ども、@kimihom です。 この連休はひたすらプログラミングやってた。そんな中で手をつけ始めた Rails 5.1 について感想を書いてみるとする。こういうちょっとしたことでも記事にできるのがブログのいいところよね。 Yarn マジ便利 JavaScript の パッケージ…
ども、@kimihom です。 Heroku Addon の1つである Scout はRuby on Rails 専用のメトリクスサービスだ。一般的にこの類の Addon だと NewRelic が一般的だけども、重いしメモリも食うので Scout を使っている。今回はそんな Scout について簡単にご紹介しよ…
ども、@kimihom です。 常に話題に上がってくる Rails のフロントエンド事情だけども、今回 Rails5.1 を色々みた中で自分が感じたことについて書いていく。予め断っておくと、自分もまだそこまでフロントエンドをマスターしている身ではないので間違った考え…
ども、@kimihom です。 全文検索の仕組みとして Elasticsearch を使ってサービスを運用している。Elasticsearch と Rails を使っている上で考慮しなきゃいけないデータ同期の方法について、それぞれのメリット/デメリットを紹介した上で最終的な提案まで記す…
ども、@kimihom です。 今回はステージング環境と本番環境で Heroku アプリを分けていたものを、 Heroku Pipeline でまとめたのでその手順についてご紹介する。 今まで Heroku Pipeline を勘違いしていたんだけど、ステージング環境の Heroku アプリは Herok…