きゃまなかのブログ

新卒6年目の WEB エンジニアです。 直近3年間は大規模システムの運用を担当していました。 今期から開発チームに移動になって、Java を勉強しています。 好きな言語が Ruby なので、Ruby 系の記事が多いです。

Ruby on Rails

【Ruby on Rails】rubocop と pre-commit を利用して git commit 時にコーディングチェックを行う

概要 Rails アプリケーションに rubocop と pre-commit という gem をインストールして、git commit 時にコーディングチェックを行うようにします。 もし、コーディング規約に準拠しないコードがあった場合はコミットが中断されます。 rubocop とは rubocop …

【Ruby on Rails】オートコンプリート機能付き検索フォームを実装する

概要 Ruby on Rails でオートコンプリート機能付きの検索フォームを実装してみます。 gem の紹介 今回はこちらの gem を利用します。 rails4-autocomplete という名前ですが、rails5 でも利用できます。 github.com 対応手順 1. Gemfile の修正 初めに Gemfi…

【Ruby on Rails】Mysql2::Error: Data too long for column 'xxxxx' at row 1:

概要 自分が担当しているシステムでユーザーからデータの保存ができないとお問い合わせを受けたことがあります。 システムが高負荷になっていた訳でもなく、そのユーザー以外は普通に利用できていたので、最初は原因が分からなかったのですが、ログを調べて…

【Ruby on Rails】whenever を使って定期的にバッチ処理を行う

概要 Ruby on Rails で定期的にバッチ処理を実行する方法をまとめます。 定期的に処理を実行したい場合、クーロンを利用するのが定石かと思います。 クーロンを実行するには、crontab に設定を記載する必要があります。 Ruby on Rails の場合、lib ディレク…

【Ruby on Rails】ログ出力とログローテートの設定まとめ【Logger】

概要 Rails では ActiveSupport::Logger クラスを利用してログ出力ができます。 railsguides.jp 今回、ログの設定変更やログローテート方法、古いログの削除、オススメのプラグインなどをまとめました。 ログの設定 基本的には app/config/environments/*.rb…

【Ruby on Rails】API のレスポンスを生成するメソッドを紹介

概要 Ruby on Rails 5 からは API モードが導入され、API 専用のアプリケーションを簡単に作成できるようになりました。 railsguides.jp Ruby on Rails では CRUD と呼ばれる HTTP メソッドを利用して、RESTful なアプリケーション(API)を作成できるように…

【Ruby on Rails】重複しているレコードを取得する【MySQL】

概要 Ruby on Rails で DB から重複しているレコードを取得したい時がありました。 MySQL で重複しているレコードを取得する方法は分かるのですが、Ruby on Rails で同じ処理を書く場合、どうしたら良いのか分からなかったので調べて見ました。 MySQL で書く…

【Ruby on Rails】画像は public と app/assets/images のどちらに設置すべき?

概要 Rails ではアプリケーション内で使用される画像の設置場所に、現在 2つの場所が存在します 。 public ディレクトリ app/assets/images ディレクトリ どちらに設置しても画像の読み込みに困りませんが、設置場所によってどんな違いがあるのか、今回調べ…

【Ruby on Rails】deleted_at を使って論理削除をしよう

概要 Rails には DB のカラム名に『created_at』『updated_at』と言う、設定しておくだけで、作成日時と更新日時を自動記録してくれる、お決まりの便利な機能が用意されています。 このカラムのデータはアプリケーション内で利用するデータと言うよりも、DB …

【Ruby on Rails】require と permit の使い方がよく分からない

概要 Rails 4 からストロングパラメータと言う新機能が導入されました。 具体的には require と permit と言うメソッドのことです。 Scaffold で Controller を作成する際にデフォルトで適用されるのですが、使い方がよく分からず、いつも削除していました。…

【Ruby on Rails】ルーティング member と collection の違い

概要 Rails には index, show, new, edit, create, update, destroy の 7 つのデフォルトアクションが用意されています。 もし、これ以外のアクションを新しく追加したい場合、ルーティングに設定を追記する必要があります。 この場合、routes.rb をどう書く…

【Ruby on Rails】ルーティング scope と namespace の違い

概要 Rails で API を作成するときに、URL 設計を気にすると思います。 例えは、ユーザ情報を操作する users API のエンドポイントを下記のようなパスで作成したいとします。 http://$(DNS)/api/v1/users この場合、routes.rb をどう書くのか調べたところル…

【AWS】Ruby on Rails + Nginx + Unicorn + MySQL 環境構築

概要 AWS に初めて Rails のアプリを作成した時の手順をまとめました。 はじめに こちらの環境でアプリケーションを作成しました。 サーバOS Amazon Linux Web サーバ Nginx Rack サーバ Unicorn データベース MySQL フレームワーク Rails 5.0.X プログラミ…

【Ruby on Rails】緯度経度から 2 点間の距離を算出する

概要 最近では企業が多くの API を公開しており、それらを利用して簡単にアプリケーションを作成できるようになりました。 その中には、店舗情報を扱う API も数多く存在します。 店舗情報を扱う API の多くは、店舗の位置情報を表すため緯度経度を利用して…

【Ruby on Rails】 gem を使わないで環境毎に定数管理をする

概要 Ruby on Rails には定数管理用の gem がたくさん存在しています。 有名な gem だと以下の名前が上がるかと思います。 github.com github.com config は環境毎に yaml ファイルを用意して定数を管理するので、大規模アプリケーション向けのイメージがあ…