きゃまなかのブログ

新卒6年目の WEB エンジニアです。 Ruby on Rails の TIPS を中心にブログ書いてます。 去年まで運用・保守のエンジニアだったので、サーバサイドの記事もたまに書きます。 よろしくお願いします。

【Ruby on Rails】POST リクエストにリトライ処理を入れる

概要 はじめに 対応方針 サンプルコード まとめ 概要 HTTP リクエストは必ずしも成功するものではありません。 リクエストを受け取るサーバ側の問題だったり、ネットワークの問題だったりで稀に失敗する事があります。 そう言った場合にリトライ処理(再送処…

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

概要 rubocop とは 使い方 注意点 pre-commit とは 使い方 設定を解除したい場合 まとめ 概要 Rails アプリケーションに rubocop と pre-commit という gem をインストールして、git commit 時にコーディングチェックを行うようにします。 もし、コーディン…

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

概要 gem の紹介 対応手順 1. Gemfile の修正 2. application.js の修正 3. Controller の修正 full オプション 4. ルーティングの設定 5. View の修正 6. form の実装 7. 検索機能の実装 まとめ 概要 Ruby on Rails でオートコンプリート機能付きの検索フォ…

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

概要 エラー文言 原因 解決策 何のデータ型にすれば良いのか? 日本語文字って何バイトか? 例外処理を入れる まとめ 概要 自分が担当しているシステムでユーザーからデータの保存ができないとお問い合わせを受けたことがあります。 システムが高負荷になっ…

【Apache】502 Bad Gateway proxy: error reading status line from remote server

概要 エラー文言 原因 解決策 パフォーマンス確認 概要 内部ネットワークからインターネットへのアクセスをプロキシしているサーバで稀に 502 Bad Gateway のエラーを返していることがありました。 リクエスト元のサーバではリトライ処理を入れていたので問…

【Apache】http 通信を https 通信に変換してプロキシする

概要 必要なパッケージ 対応方法 余談 概要 内部ネットワークのサーバがインターネット上のサーバにアクセスする場合、セキュリティ上の理由でプロキシサーバを経由してアクセスする場合が多いと思います。 参考:プロキシサーバーを使うと、なぜセキュリテ…

【備忘録】HBase とは?HBase の構成とデータ構造について!

概要 HBase とは? 構成 Master サーバ Region サーバ データ構造 まとめ 概要 新しく HBase を扱うサーバの担当になりました。 IT 業界ではデータ利活用の分野が活発になっており、ビッグデータを安全かつ高速に扱える HBase のようなプラットフォームは今…

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

概要 導入方法 gem インストール 設定ファイル生成 定期的に実行したい処理を記載 設定の反映・削除など 設定の確認 設定の反映 設定の削除 まとめ 概要 Ruby on Rails で定期的にバッチ処理を実行する方法をまとめます。 定期的に処理を実行したい場合、ク…

【Linux】xargs コマンドの使い方がよく分からない

概要 xargs とは よく見る利用法 高速に並列処理できる exec オプションを使った場合 xargs コマンドを使った場合 Argument list too long の制限を受けない ドライランオプション 引数の場所を指定する 便利なワンライナー 最後に 概要 結構複雑な処理をサ…

【Linux】コマンドの標準出力を色付けして運用を楽しくする

概要 導入方法 拡張パッケージ exa colordiff grc ccze source-highlight 標準コマンドのエイリアスを設定 最後に 概要 単色の標準出力だと見づらいですし、運用していて楽しくないので、コマンドの標準出力を色付けしてくれる拡張パッケージをまとめました…

【Apache】graceful 再起動でホットデプロイを行う

概要 はじめに LAMP 環境とは? ホットデプロイとは? ホットデプロイ導入 graceful で再起動 コマンド 注意点 まとめ 概要 自分のお仕事は運用メインなので、リリース作業を行う機会が多いです。 正直、数年間同じ仕事をしているので、リリース作業は慣れま…

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

概要 ログの設定 ログレベルの変更 ログファイルの変更 ログフォーマットの変更 ログ出力 ログローテート 日付でログローテート ファイルサイズでログローテート その他 まとめ 概要 Rails では ActiveSupport::Logger クラスを利用してログ出力ができます。…

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

概要 紹介する前に コピペして使っているメソッド 使い方 動作確認 おまけ ページが存在しません 最後に 概要 Ruby on Rails 5 からは API モードが導入され、API 専用のアプリケーションを簡単に作成できるようになりました。 railsguides.jp Ruby on Rails…

【備忘録】RAID とは? RAID の種類と仕組みまとめ

概要 RAID とは RAID の種類 RAID 0(ストライピング)とは RAID 1(ミラーリング)とは RAID 5(分散パリティ)とは RAID 0+1 とは RAID 1+0 とは おまけ RAID 0+1 と RAID 1+0 の比較 最後に 概要 最近、仮想サーバばかり扱っていて、実機サーバを自分で購…

【AWS】OpsWorks を使って Chef サーバの構築とノード追加

概要 Chef サーバを構築 1.『Go to OpsWorks for Chef Automate』を使ってみる 2.『Create Chef Automate server』で Chef サーバを作成 3. 設定の入力 4. Chef サーバの起動 5. Chef サーバにログイン デベロッパーキットのインストール ノード追加 最後に …

【画像解析 API を使ってみる】食べ物の画像は解析できるのか?

概要 画像解析 API Google Cloud Vision API IBM Visual Recognition API Microsoft Computer Vision API API の実行結果 Google Cloud Vision API IBM Visual Recognition API Microsoft Computer Vision API まとめ 最後に 概要 最近、食べ物の写真を撮っ…

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

概要 はじめに 重複しているレコードを取得 MySQL の場合 Ruby on Rails の場合 重複しているレコードを全て取得 MySQL の場合 Ruby on Rails の場合 おまけ 条件を満たさない重複レコードを削除する MySQL の場合 Ruby on Rails の場合 まとめ 概要 Ruby on…

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

概要 画像を読み込む際のパスが違う アセットパイプラインについて CSS で使えるプロパティが違う まとめ 概要 Rails ではアプリケーション内で使用される画像の設置場所に、現在 2つの場所が存在します 。 public ディレクトリ app/assets/images ディレク…

【AWS】サーバ間でファイルのリアルタイム同期を行う【rsync + xinetd + lsyncd】

概要 はじめに rsync とは? xinetd とは? lsyncd とは? パッケージのインストール 対応方法 rsync の設定 ポート解放 rsync の起動 xinetd の設定 xinetd の起動 rsync の動作確認 lsyncd の設定 lsyncd の起動 lsyncd の動作確認 ファイルの作成 ファイ…

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

概要 はじめに 導入方法 gem の紹介 ApplicationRecord に設定追加 カラムの追加 動作確認 まとめ 概要 Rails には DB のカラム名に『created_at』『updated_at』と言う、設定しておくだけで、作成日時と更新日時を自動記録してくれる、お決まりの便利な機能…

SSL 証明書をどうやって管理する?

概要 SSL 証明書の購入 管理方法 暗号化 復号化 プライベートレポジトリの利用 まとめ 概要 SSL 証明書を購入した時の話です。 購入した SSL 証明書をどうやって管理しようか悩んだことがあります。 開発に関するものは全て GitHub で一元管理しているので、…

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

概要 はじめに params の中身を確認 params.require の中身を確認 params.require.permit の中身を確認 おまけ 配列のパラメータを受け取りたい場合 まとめ 概要 Rails 4 からストロングパラメータと言う新機能が導入されました。 具体的には require と per…

【AWS】.ssh/config を利用して、ログイン時のコマンドを省略する

概要 .ssh/config とは インスタンスに SSH する前に... ユーザ名の確認 鍵 PATH の確認 ログイン方法 SSHコマンドでログイン .ssh/config を利用してログイン まとめ 概要 インスタンスに毎回ログインする際、ユーザ名と鍵 PATH を記載するのが面倒くさいの…

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

概要 member の使い方 collection の使い方 まとめ 概要 Rails には index, show, new, edit, create, update, destroy の 7 つのデフォルトアクションが用意されています。 もし、これ以外のアクションを新しく追加したい場合、ルーティングに設定を追記す…

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

概要 namespace の使い方 scope の使い方 まとめ 概要 Rails で API を作成するときに、URL 設計を気にすると思います。 例えは、ユーザ情報を操作する users API のエンドポイントを下記のようなパスで作成したいとします。 http://$(DNS)/api/v1/users こ…

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

概要 はじめに 環境構築 タイムゾーンの設定 ロケールの設定 標準ライブラリ インストール Git インストール MySQL インストール Nginx インストール Ruby インストール Bundler インストール Rails インストール Rails アプリ作成 Gemfile を修正 Nginx の…

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

概要 計算式 プログラムを作成 算出結果の確認 まとめ 最後に 概要 最近では企業が多くの API を公開しており、それらを利用して簡単にアプリケーションを作成できるようになりました。 その中には、店舗情報を扱う API も数多く存在します。 店舗情報を扱う…

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

概要 はじめに yaml を利用した定数管理用法 config/constants.yml config/initializers/00_load_config.rb 動作確認 まとめ 概要 Ruby on Rails には定数管理用の gem がたくさん存在しています。 有名な gem だと以下の名前が上がるかと思います。 github.…