読者です 読者をやめる 読者になる 読者になる

Rails Webook

自社のECを開発している会社で働いています。Rails情報やサービスを成長させる方法を書いていきます

Rails中級

RailsでRoarを使ってAPIサーバーとAPIクライアントを作る

RoarはRepresenterを使ってRESTなAPIをパース、レンダーすることができるgemです。 つまり、Roarを使うことで、RailsでJSONを返すAPIサーバーを作成したり、逆に、APIサーバーにアクセスするAPIクライアントをRubyで作れます。

Postgresqlのデータ型一覧とRailsのマイグレーションの指定方法

Postgresqlの各データ型とRailsのマイグレーションでの指定方法をまとめました。数値データ型、通貨型、文字型、日付/時刻データ型、論理値データ型についてまとめました。

RailsでActiveRecord/Arelを使って複雑なSELECT文を実行する方法

Rails(ActiveRecord/Arel)で複雑なSELECT文を実行する方法をまとめました。 メリット、デメリットや使いどころなどまとめ途中なのであしからずお願いします。

RailsでDraperを使ってプレゼンテーション層(デコレーター)を実装する

DraperはRailsのプレゼンテーション層の役割を担うgemです。プレゼンテーション層の必要性、実装方法について説明します。Draperはデコレーター(他にはプレゼンター、ビューモデルなどと呼ばれます)であり、ビューとモデルの中間に位置し、モデルやビュー…

RailsでAcitiveJobとDelayedJobを使ってバックグランド処理を行う

DelayedJobでのバックグラウンド処理の実施方法から、ActiveJobとDelayedJobを組み合わせたバックグラウンド処理の実施方法までを説明します。 メール送信、大量データのインポート/エクスポートなど長い時間がかかる処理はバックグラウンドで処理するのが推…

Railsでacts-as-taggable-onを使ってタグ管理を行う

acts-as-taggable-onはRailsでタグの追加、削除、関連するオブジェクトの取得、タグクラウドなどのタグを管理するためのgemです。 Railsでacts-as-taggable-onでタグ管理を行う方法について説明します。

RailsでSonspotを使って全文検索を行う

Sunspotは、オープンソースの全文検索システムのSolr(ソーラー)を使って、幅広い記述でパワフルな全文検索ができるRubyライブラリです。 商用ではSolrを立てる必要があります。開発環境では開発用のSolrサーバーを使います。

Railsでfriendly_idを使って検索エンジンにわかりやすいURLを作成する

friendly_idはURLにActiveRecordのIDを表示していた代わりに、人間や検索エンジンにわかりやすい文字列(slug)を表示するようにできるようにするGemです。 また、slugの変更履歴や他言語対応などの機能もあります。

Railsでawesome_nested_setとjsTreeでインタラクティブにツリー構造を操作する

Railsでawesome_nested_setとjQueryプラグインのjsTreeを使い、ツリー構造の操作(追加、リネーム、削除、変更)のUI/UXを向上させます。

Railsでawesome_nested_setを使って階層構造を作成する

awesome_nested_setとは、モデルを階層構造に管理できるようにするgemです。 フォルダ階層、カテゴリ階層、コメントへのリプライでの階層などツリー構造を表したい箇所で使うと便利です。

RailsでPaperTrailを使って取り消し機能を作成する

PaperTrailとは、モデルの変更(作成/更新/削除)をトラックするgemです。 PaperTrailを使って、モデルの作成/更新/削除の取り消し機能を実装します。

rails new時にアプリケーションテンプレートを使って簡単に初期設定をする

Railsの機能の「アプリケーションテンプレート」を使って、簡単にRailsの初期設定をできるようにしました。

rails newしたときの開発を効率化するためにまず行いたい6つの設定まとめ

よくRailsプロジェクトを作るので、Railsプロジェクトを作った後に最初にやっておきたい設定をまとめました。 主に、開発を効率化させるためにやることをまとめてますので、ざざっと眺めて取り入れそうな知識があったら開発効率を上げれるかもしれません。

RailsでAngularJSを使ってTodoアプリを作成 - 9. AngularJS + Railsでソート可能(Sortable)なリストを作成する

「RailsでAngularJSを使ってTodoアプリを作成」の連載9回目です。 RailsとAngularJSを使ってソート可能(Sortable)なリストを作成します。

RailsでAngularJSを使ってTodoアプリを作成 - 8. AngularJSで編集可能(Editable)なフィールドを作成する

「RailsでAngularJSを使ってTodoアプリを作成」の連載8回目です。 AngularJSで編集可能(Editable)なフィールドを作成し、Todoリスト名とTodoの内容を更新できるようにします。

RailsでAngularJSを使ってTodoアプリを作成 - 7. AngularJS + Kaminariでページネーション機能を実装

「RailsでAngularJSを使ってTodoアプリを作成」の連載7回目です。 AngularJSとkaminariを使いページネーションを実装します。

RailsでAngularJSを使ってTodoアプリを作成 - 6. AngularJS + Ransackで検索機能を実装

「RailsでAngularJSを使ってTodoアプリを作成」の連載6回目です。 検索機能を追加するRansackを使って、AngularJSを使ったTodoの動的な検索機能を追加します。

RailsでAngularJSを使ってTodoアプリを作成 - 5. ngRouteでシングルページにする

「RailsでAngularJSを使ってTodoアプリを作成」の連載5回目です。 AngularJSのルーティングモジュールのng-routeで、複数のビューファイルをシングルページとして遷移できるようにします。

RailsでAngularJSを使ってTodoアプリを作成 - 4. ngResource + Rails API化

「RailsでAngularJSを使ってTodoアプリを作成」の連載4回目です。 AngularJSのRESTfulサービスとの通信機能を簡単に実装できるモジュールのngResourceを使い、Railsで作ったAPIにアクセスし、Todoリストを作成/更新/削除を永続化できるようにします。

RailsでAngularJSを使ってTodoアプリを作成 - 3. AngularJSのコントローラーの作成

「RailsでAngularJSを使ってTodoアプリを作成」の連載3回目です。 AngularJSのコントローラーを作成することで、Todoの追加、削除、完了機能を作成します。

RailsでAngularJSを使ってTodoアプリを作成 - 2. UI Bootstrapのインストール方法

「RailsでAngularJSを使ってTodoアプリを作成」の連載2回目です。 AngularJS用のBootstrap(UI Bootstrap)を導入します。

RailsでAngularJSを使ってTodoアプリを作成 - 1. AngularJSのインストール方法

「RailsでAngularJSを使ってTodoアプリを作成」の連載1回目です。 RailsプロジェクトにAngularJSを導入する方法を説明します。

RailsでAPI作成とAPIのテストのまとめ

RailsでJSONを返すAPIを作成し、また、APIのテスト方法も説明します。 JSONを返すAPIは、RailsのActiveSupportより拡張されたto_jsonメソッドとDMMが開発したjbuilderというGemを使います。 APIのテストにはおなじみのRSpec3を使います。

RailsのRSpecテストを速くする方法まとめ

Railsの規模が大きくなると自動テストの実行時間もだんだんと長くなっていきます。素早く開発していくにはテストの実行時間を短くすることが大切です。 RSpecのテストを速くする方法をまとめましたので参考にしてください。

RailsでJasmineを使ってJavascriptの単体テストをする

RailsでJasmineを使ってJavascriptの単体テストを実行する方法を説明します。 JasmineはJavascriptの単体テストを行うためのテスティングフレームワークです。

RSpec3 / Capybara / Capybara-Webkit チートシート

Railsの有名なテストフレームワークのRSpec、エンドツーエンドテスト用のフレームワークのCapybara、エンドツーエンドテストのJavascript(Ajaxなど)部分のテスト用のCapybara-webkitのチートシートです。 基本的な使い方を知っていることを前提に、Railsでの…

Factory Girl Railsのチートシート

Railsのテストで複数のオブジェクトの作成を簡易に行えるFactoryGirl。 FactoryGirlについて基本的なことを知っていることを前提に、RailsでFactoryGirlを使うよく使う機能やTipsをまとめました。

RSpec/Capybara/Capybara-Webkitの導入方法

RSpecの基本について理解している人を対象に、「RSpecのテストに必要なGem、モデル、コントローラー、Feature(Capybare)、JavaScriptなどの基本的なテストの書き方」についてまとめました。

Ruby 2.1 / Rails4.1 の意外に忘れられている便利なメソッド

Ruby 2.1 / Rails4.1 での意外に忘れらている便利なメソッドを集めました。 RubyやRailsでは有用なメソッドがたくさん実装されており、車輪の再発明にならないように、それらを覚えて適切な箇所で使うだけで生産性はあがります。

RailsでVirtual Attributes(仮想的な属性)をする

Virtual Attributesとは、モデルのDBに存在しない仮想的な属性のことです。 モデルにVirtual Attributesを追加することで、DBを変更しないでフォームを変更することができるようになります。

Rails4でDeviseを使ってゲスト(Guest)ユーザーを作成する

Railsのdeviseを使って、ユーザー情報を登録しなくてもゲストユーザー(Guest)機能を実装し、個人情報を入力しなくてもゲストユーザーとしてアプリを使えるようにする機能を実装します。

Rails4で悲観的ロックを実装する

ActiveRecordでは、lockとやlock!メソッドを使うことで悲観的ロックを実現することができます。 ロック自体は、基本的にはSELECT … FOR UPDATEが発行されてロックがされますが、DBに依存するので実際に発行されるSQLコードを確認することが大切です

Rails4で楽観的ロックを実装する

ActiveRecordでは、lock_versionというカラムを追加するだけで楽観的ロックを利用できます。 レコード単位でlock_versionを保持しているため、レコード単位での更新が競合した場合、ActiveRecord::StaleObjectError例外が発生します。

Railsでaccepts_nested_attributes_forとfields_forを使ってhas_many関連の子レコードを作成/更新するフォームを作成

Railsでは、accepts_nested_attributes_forを使うことで簡単に1対多のモデルを一度に更新するフォームを作成することできます。

Rails4でポリモフィックのリレーションを実装する

Railsでテーブルのポリモフィックを実装する方法を説明します。Railsでは、ActiveRecordのhas_manyのasオプションとbelogns_toのpolymorphicオプションを使うことで、ポリモフィックのリレーションを簡単に実装することができます。

Rails4でSTI(単一継承テーブル)を行う

RailsのActiveRecordを使ってSTI(Single Table Inheritance: 単一継承テーブル)を簡単に行うことができます。 「テーブルにtype(string型)カラムを持たせる」と「そのテーブルのモデルクラスを継承したクラスを作る」ことでSTIが実現できます。