Rails Webook

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

Railsにgulpを統合させる

Railsでgulpを使ってアセットファイルの管理する環境を構築します。gulpでsass/scssのコンパイル、ES6のコンパイル(babel, webpack)、gulpの便利プラグイン(変更監視、画面リロード、通知)、ミニファイ、ダイジェスト付与をできるようにします。そして、gulp…

RailsでReact.jsをサーバーレンダリングする

react-railsを使いReact.jsをサーバーレンダリングする方法を説明します。サーバーレンダリングすることで、初期値をHTMLの初期レンダー時に渡せるようになるので、ロード中による画面のばたつきや、ロード中といった表示をなくせます。

RailsでReactを使ってメッセージボックスアプリを作成

Railsに簡単にReact.jsを統合できるreact-raisというgemを使い、RailsでReact.jsを使う方法を説明します。

RailsでElasticsearch: サジェスト (Suggest) 機能でオートコンプリート

RailsでElasticsearchのサジェスト機能を使用してオートコンプリート機能を実装します。

RailsでElasticsearch: ハイライト(Highlight)

RailsでElasticsearchを使ってハイライト(Highlight)機能を実装します。Elasticsearchのhighlightキーを指定することでハイライトを実施できます。

RailsでElasticsearch: アグリゲーション(ファセット)と Post Filter

RailsでElasticsearchを使って、アグリゲーション(ファセット)と Post Filter を使ってファセット機能を実装します。 「アグリゲーション」は、SQLでいうGROUP BYのようなもので、最小値、最大値、平均値などを求めたり、カテゴリ毎の数を数えたりなどドキ…

RailsでElasticsearch: ソート機能を実装

RailsでElasticsearchのソート機能を実装します。Elasticsearchではsortキーでソートをするキーを指定します。

RailsでElasticsearch: ページネーションと1ページの表示件数を実装

RailsでElasticsearchを使って「ページネーションを実装します。また、1ページの表示件数を変更できるようにします。Railsのページネーションで有名なgemのkaminariを使って実装します。

RailsでElasticsearch: 全文検索を実装

RailsでElasticsearchを使ってレストラン検索アプリを作成、店名、住所、カテゴリなどからレストランを全文検索できるようにします。また、フィルタ(filter)(filter)も使って検索条件を指定することで、閉店している店舗も含めて検索できるようにします。

Phoenix入門3 - WebSocketのチャット機能

Phoenixでチャット機能を実装します。Phoenixでソケット、チャネル、トークン、API作成、モデルのアソシエーションなどを行っていきます。

Phoenix入門2 - Phonixで認証機能

Phoenixでユーザ登録、ログイン、ログアウトといった認証機能を実装します。 Userモデル作成、マイグレーション、外部ライブラリの使用、ヘルパー関数の定義と利用などWebアプリケーションを作るための基本的な箇所を説明します。

Phoenix入門1 - Hello Phoenix

Phonixとは、elixerという言語で書かれたWebフレームワークです。APIやリアルタイムストリーミングに特化し、大規模かつスケーラブルで高可用性で早いという特徴があります。 この記事では、Phonix環境のセットアップから、静的ページを作成、表示させます。

リファクタリング: デメテルの法則(Law of Demeter, LoD)

デメテルの法則は、オブジェクト指向の設計におけるガイドラインで、簡潔にいうと「直接の友達とだけ話すこと」ができるようにするということです。 デメテルの法則に違反しているソースコードとそれの対処する方法を説明します。

Rubyテクニック: Rubyの通常の引数とキーワード引数の違い

Ruby2.0からキーワード引数が導入され、Ruby2.1からRequiredキーワード引数が導入されました。 Rubyの通常の引数とキーワード引数のメリット、デメリット、どういうときにキーワード引数を使ったほうが良さそうかということをまとめました。 Rubyの通常の引…

ChefでRails環境を構築(Ruby+Nginx+Unicorn+PostgreSQL+Redis+Fluentd)

ローカルの仮想マシンにChefでRails環境を構築する方法を説明します。環境は、CentOS 6.6、Ruby(rbenv)、Nginx、Unicorn、PostgreSQL、Redis、Fluentd(td-agent)を使っています。

Vagrant入門。簡単にローカル環境に仮想マシン(VM)を作る

Vagrantを使うことで本当に簡単に仮想マシン(VM)をローカル環境に作成できます。 主な利用用途としては、開発用マシンをVagrantで作成できるようにしておくことで、同じ構成(OS、ミドルウェア、バージョンなど)の開発マシンを開発メンバーに配布することが…

いまさらながらRails4.1から導入されたEnumが便利なのでまとめてみた

Rails4.1から導入されたEnumの挙動について忘れることがあるので簡単にまとめました。 enumの定義、enumを定義したことにより使える便利なメソッドなどをまとめました。

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

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

フォーム画面でページから離れるときにJavascript(JS)の警告を出す

上記のように、フォーム画面でページから離れるときにJavascript(JS)の警告を出す方法を説明します。実際の動作は次のリンクから確認できます。 ページを離れる時に警告を出す - jsfiddle

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

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

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

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

RubyでSeleniumを使ってサクッとスタンドアローンなブラウザテストを作成する

RubyでSeleniumを使ってスタンドアローンなブラウザテストをする方法を説明します。テスティングフレームワークにはRSpec、SeleniumにアクセスするためにCapybaraをつかうことで簡単にテストがかけます。

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

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

たった10分でGoogle AdSenseの広告収入を2倍にした方法

たった10分で簡単に広告収入を2倍にすることができました。 対象者として、ブログなどで少し広告収入が稼げたらいいな、まとめサイトなど広告収入がメインの収益などといった方を対象としています。

jQueryによるDOM操作をまとめてみた

jQueryを使うことでブラウザ間の違いを吸収しながらも、簡易にDOM操作のJavaScriptコードを記載することができます。よく使われるjQueryのDOM操作のメソッドをまとめました。

jQueryの疎結合なイベント処理

jQueryを使ってイベント処理の登録と削除方法、登録できるイベントの一覧を説明します。 また、JavaScriptはイベントを通してHTMLと結びついているので、イベントハンドラのコーディングと修正に多くの時間を使います。 そのため、イベントハンドラとアプリ…

jQueryによるAjax処理

jQueryの$.getメソッドと$.postメソッドの使い方を説明します。

JavaScriptで設定データをコードと分離する

良い設計のアプリケーションは、「生きた設定データ」をソースコードのメイン部分と分離し、設定データの変更を容易にし、意図しないバグを含まないようにします。「URL」、「UIに表示される文字列」、「繰り返される一意の値」、「設定(ページごとの項目な…

無料枠内でのHerokuの準備とデプロイ(Mac 10 + Rails 4.2 + MySQL 5.6)

Herokuで無料枠内で使うための準備とデプロイの流れについて簡単にまとめました。 Mac + Ruby 2.2.1 + Rails 4.2 + MySQL 5.6でやりました。

Javascriptのthisの参照先をまとめてみた

JavaScriptのthisは属しているオブジェクトによって参照先が変わります。 コンストラクタ内、オブジェクト内、イベントハンドラ内などのthisの参照先をまとめました。