【Rails入門】初心者が知っておくべき3つのgem

こんにちは! フリーエンジニアの長瀬です。

みなさんはどんなgemを使っていますか?

gemを適材適所で使いこなせるようになれば、開発効率を大幅に上げることができます。

この記事では初心者が知っておくべきgemについて

・Rspec
・Kaminari
・Hirb

という順序で、1つ1つ簡単な実装方法を紹介しながら解説していきます。

どれも初心者が知っておくべきgemなので基本的な使い方を把握しておきましょう。

Rspec

Rspecとは

RspecはRailsでテストをするためのgemで、RailsでテストといえばこのRspecです。

Minitestもありますが、Rspecのほうがユーザーが多く、ソースも豊富です。

Rspecを導入することで、簡単にテスト環境を構築することかできます。

テストは学校の試験とかそういうものではなくて、プログラミングでのテストはコードが期待した通りに動いているのかをチェックすることです。

テストを導入すれば、未然にバグを防げるのでより確実なプログラムを組んでいくことができます。

Rspecで簡単なテストをする方法

それでは、Rspecを使って簡単なテストをしてみましょう。

Rspecを使うために最低限のgemをインストールしておきます。

まずはgemfileに今回使用するgemを記述していきましょう。

Gemfileに以下のコードを入力してください。
[Gemfileに追加する内容]

開発、テスト環境のグループにrspec-railsを、そしてテスト環境のところにdatabase_cleanerを追加してください。

Gemfileに記述できたら、コマンドプロンプトにてbundle installをして、gemをインストールしてください。

次に、Rspecの初期設定をします。

コマンドプロンプトに以下のコードを入力してください。
[Rspecを初期化する]

[実行結果]

これで、Rspecで使用する基本的なファイルが自動的に作成されます。

次に、database_cleanerのgemもインストールしたので、初期設定を行います。

database_cleanerはテストのたびにデータベースを初期化してくれるgemです。

もしも、初期化されなかったらテストデータなのに、そのまま残ってしまいますよね?

それを防ぐためにdatabase_cleanerを使います。

app/spec/support/database_cleaner.rbを作成して以下のコードを入力してください。(supportフォルダとdatabase_cleaner.rbファイルは手動で作成してください。)

[app/spec/support/database_cleaner.rbに記述する内容]

これで、テストのたびにデータベースを初期化してくれます。

では、実際にモデルのテストを実装してみましょう。

今回使用するモデルを作成するためにコマンドプロンプトに以下のコードを入力してください。
[モデルを作成する]

[実行結果]

すでにrspecが有効になっているので、spec/models/post_spec.rbが自動的に作成されたことを確認できます。

それでは、実際にテストをしてみましょう。

spec/models/post_spec.rbの内容をすべて削除してから以下のコードを入力してください。

[spec/models/post_spec.rbに記載する内容]

このテストは、さきほど作成したPostモデルのtitle、contentカラムに値が入っているかチェックするものです。

このコードでは、Post.new以下でtitle,contentに値をいれているので、テストを通過します。

では、テストを実行してみましょう。
コマンドプロンプトに以下のコードを入力してください。

[post_spec.rbに記述したテストを実行する]

[実行結果]

1 example, 0 failuresは、テスト1個に対してテストに失敗したのは0個だったという意味です。

つまり、今回はテストをパスしています。

では、次にspec/models/post_spec.rbを修正してテストに失敗するようにしてみましょう。

あえて、失敗させるために、Post.new以下を削除しました。

そしてもう一度テストを実行してみましょう。
コマンドプロンプトに以下のコードを入力してください。

[post_spec.rbに記述したテストを実行する]

[実行結果]

1 example, 1 failure変わり、テスト1個に対してテストに失敗したのは1個という結果になります。

Postのtitleとcontentに値が入っているのかテストできていることを確認できました。

今回紹介したものはRspecの基本的な機能のほんの一部で、少しでもRspecでテストをする感覚を味わっていただくためのものです。

Rspecを使ったテストの種類は数多くありますので、これを機にRspecでどんなテストができるのか調べてみましょう。

Kaminari

Kaminariとは

KaminariはRailsでページネーションを実現するためのものです。

ページネーションとは、たくさんのデータをページごとに分割して表示することです。

自分で初めからページネーションを実装していくのは手間がかかりますが、Kaminariを使えば簡単にできます。

言葉で説明するよりも、見た方が理解が早いので、早速簡単でサンプルコードで実装してみましょう。

Kaminariでページネーションする方法

それではページネーションを設定していきましょう。

今回はscaffoldを使用して実装していきます。
scaffoldの使い方がよくわからない方はこちらの記事を参考にしてください。

今回使用するモデルを作成するためにコマンドプロンプトに以下のコードを入力してください。
[scafffoldでBookモデルを作成する]

モデルを作成したので、rake db:migrateとコマンドプロンプトに入力してデータベースに反映してください。

次に今回使用するデータを追加していきます。

db/seeds.rbに以下のコードを追加してください。

[db/seeds.rbに追加する内容]

それではrake db:seedを入力して、db/seeds.rbで記述した内容をデータベースに反映してください。

100件のデータの登録を確認できます。

続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。

scaffoldではresourcesでソースが割り当てられています。

以下のURLにアクセスして、index.html.erbを開いてください。

http://localhost:3000/books

(補足http://localhost:3000の箇所は各自の開発環境により読み替えてください。)

Screen Shot 2560-07-19 at 21.46.37

このように、1ページに100件のデータが表示されるのを確認できます。

1ページに100件表示するのは多いので、ページネーションを設定して分けてみましょう。

それでは、今回scaffoldで作成されたapp/views/books/index.html.erbのコードを以下のように修正してください。

[app/views/books/index.html.erbを修正する]

次に、コントローラーを設定していきます。

app/controllers/books_controller.rbを開いてindexアクションの内容を以下のようにコードを修正してください。

[app/controllers/books_controller.rbのindexを修正する]

これでページネーションの設定が一通り終わりました。

もう一度、rails serverでサーバーを開いて、確認してみましょう。

http://localhost:3000/books

Screen Shot 2560-07-19 at 21.47.05

このように100件すべて表示されていたのが分割されているのを確認できます。

また、1ページに表示されるのを標準設定の25から他の数値に変えたい場合などKaminariでは詳細設定を変更できます。

Kaminariの詳細設定については本家Githubを確認してください。

参照元:Github kaminari

General Configuration Optionsにオプション設定の項目に詳細設定をする方法が記載されています。

Hirb

Hirbとは

初期設定ではrails consoleでコンソールを使用したときにデータを取り出そうとすると、見慣れている表形式で出力されないので不便です。

そこで、Hirbのgemを使えば、表形式で出力するように簡単に設定できます。

少しデータを確認したいときなど、意外にコンソールにお世話になることは多いです。

なので、積極的にコンソールはカスタマイズしておきましょう。

Hirbで出力結果を変更する方法

では実際にHirbを使ってみましょう。

今回kaminariのところで作成したBookモデルからデータ出力します。

rails consoleでコンソールを起動した後、以下のコードを入力してください。
[コンソールでBookテーブルからデータを出力する]

[実行結果]

このように表形式ではないので、非常に読みづらいデータが出力されます。

ではHirbを設定して出力を表形式へと変更していきましょう。

まずはGemfileに以下に以下のコードを追加してください。

[Gemfileに追加する内容]

では、コマンドプロンプトでbundle installを入力してgemファイルをインストールしてください。

インストールが完了したら、再びrails consoleでコンソールを起動した後、以下のコードを入力してください。

[Hirbを使ってコンソールでBookテーブルからデータを出力する]

[実行結果]

このように、表形式で表示され、データが見やすくなりました。

pryを使ってHirb.enableを自動化する

これでHirbを使って表形式でデータを出力できるようになりましたが、毎回コンソールを開くたびにHirb.enableを入力するのは手間がかかります。

プログラマーとしては毎回同じ動作を手作業でするという無駄はできれば避けたいです。

なので、コンソールを標準のirbからpryに変更してHirb.enableが毎回コンソール起動時に読み込まれるように設定してみましょう。

まずは、コンソールを標準のirbからpryに変更するためGemfile内の開発・テスト環境に以下のコードを追加してください。

[Gemfileに追加する内容]

では、コマンドプロンプトでbundle installを入力してgemファイルをインストールしてください。

インストールが完了したら、Hirb.enableを自動化するために、ルートディレクトリ下に.pryrcという設定ファイルを作成しましょう。(GemfileやGemfile.lockがある場所と同じ場所です。)

そして作成された.pryrcに以下のコードを追加してください。

[Hirb.enableを自動化するために.pryrcに追加する内容]

これで設定が完了しました。

rails consoleでコンソールを起動した後、もう一度以下のコードを入力してください。

[Hirbを使ってコンソールでBookテーブルからデータを出力する]

[実行結果]

このように、Hirb.enableを毎回入力しなくても,表形式で出力できるように設定できました。

まとめ

いかがでしたでしょうか?

この記事では、初心者に知っておくべきgemを3つ解説しました。

今回紹介したものはどれもRailsでの開発の強力な武器になります。

この記事では,簡単な導入しか説明しませんでしたが、これを機にそれぞれのgemの使い方をマスターしてみてはいかがでしょうか?

Railsには今回紹介したもの以外にも数え切れないほどたくさんのgemがあります。

gemを使いこなせれば、開発効率があがるのでたくさんのgemを操れるように学習していきましょう。

未経験者でも安心の徹底サポート!まずは完全無料の体験レッスン!

「プログラミングに興味があるけど未経験だし、、、」とお悩みの方はご安心ください。

  • 24時間質問し放題
  • あなただけのオーダーメイドカリキュラムで学習の効率化
  • 仕事獲得方法からオリジナルアプリ開発方法

侍エンジニア塾では徹底したサポートによる「オーダーメイドカリキュラム」を作成しています。

まずは無料体験レッスンで、「挫折しない学習方法」や「あなただけの学習ロードマップ」を知り、学習の効率化をしましょう。独学の難点である「オリジナルアプリの作り方やエラーの対処法」についてもアドバイスさせていただきます。

詳しいサービス内容は、下記よりご参照ください。

cta_mtm1

LINEで送る
Pocket

書いた人

長瀬来

長瀬来

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説