LoginSignup
22
22

More than 5 years have passed since last update.

チートリスト&便利なGem一覧(随時追加)

Last updated at Posted at 2017-04-05

パーフェクトrailsを読んだり実際にWEBアプリを作ってみた時に便利だと思ったgemを備忘録として残しています。

環境

ruby:ruby 2.3.1
rails:Rails 4.2.6

gem一覧

pry-rails :
rails cでコンソールを起動した時irbではなくpryで実行されるため、表示が整形されて綺麗。
ソースコード中にbinding.pryを記入することでブレークポイントを設定でき、オブジェクトの参照などを行える。

pry-byebug :
pryのコンソール画面でステップ実行を行えるようになる(nextstepなど)。

better_errors :
例外が発生した場合の画面が変更され、より詳細な情報が得られるようになる。
gemのbinding_of_callerも合わせると例外が発生した際の変数の内容が出力される。

kaminari :
ページネーション機能を簡単に実装できるgem、有名
kaminari-bootstrapを使うとbootstrapを適用できて綺麗な見た目になります。

ransack :
検索機能を簡単に実装できるgem、有名

carrierwave :
画像アップロード機能を比較的簡単に実装できるgem、有名

rspec~ :
RSpecはRailsアプリケーションの開発におけるテストフレームワークのデファクトスタンダードです。
rspec-rails,rspec-core,rspec-expectations,rspec-mocks,rspec-supportをinstallします。
install後はbundle rails g rspec:installすると設定ファイルとかヘルパーが作成されます。
※参考:http://rspec.info/documentation/ ←各Gemの概要については左記URLの記載をGoogle翻訳先生に貼れば比較的わかりやすい内容を返してくれます。Google翻訳、優秀。

チートリスト

rails newでプロジェクトを作成する時 :
rails new プロジェクト名 する時以下の引数を使うことが多いです。
※参考 : http://railsdoc.com/rails
-T, --skip-test-unit : test:unitを組み込まない、テストにRspecを使用する時に引数に追加。
-d, --database=DATABASE : データベースにデフォルトのsqllite3以外を使用する場合に引数に追加。
※使用例 : rails new todo -d mysql

タイムゾーンの設定 :
デフォルトのままだとタイムゾーンの設定がUTCとして扱われるので、日本時間を扱いたい時には以下のように設定を変更する。

config/application.rb
  class Application < Rails::Application
    (省略)
    config.time_zone = 'Tokyo' # 修正前は'Central Time (US & Canada)' 
    (省略)
  end

詳しくは以下の記事が参考になります。
- Railsと周辺のTimeZone設定を整理する (active_record.default_timezoneの罠)
- RubyとRailsにおけるTime, Date, DateTime, TimeWithZoneの違い

i18nの設定 :
エラーメッセージを日本語にしたい時には以下のように設定を変更する(デフォルトは英語)。
コメントアウトを外し、:deを:jaに変更する。

config/application.rb
  class Application < Rails::Application
    (省略)
    config.i18n.default_locale = :ja # 修正前は:de
    (省略)
  end

その後、config/locales/ja.ymlなどに日本語のエラー文を追加していく。

formの二重送信を防ぐ :
登録画面などのformで、データの二重送信を防止する場合、送信中はボタンを押せないようにし、"登録中・・・"などの文字を表示したい場合がある。以下のようにdiabled_withオプションをつけると、簡単にその機能を実装できる。

<%= f.submit '登録', class: "btn btn-default", data: {disable_with: '登録中・・・' } %>

落ち穂拾い :
以下のような記載を追加することにより、「ActiveRecord::RecordNotFound, ActionController::RoutingError」が発生した時はerror404、それ以外のエラーではerror500のメソッドが実行されるようになる。それぞれ合わせてviewのerror404.html.erb、error500.html.erbも作っておくこと。

app/controllers/application_controller.rb
  rescue_from Exception, with: :error500
  rescue_from ActiveRecord::RecordNotFound, ActionController::RoutingError, with: :error404

    (省略)

  def error404
    render 'error404', status:404, format: [:html]
  end

  def error500
    logger.error [e, *e.backtrace].join("¥n") #エラーをログに表示
    render 'error500', status:404, format: [:html]
  end
end

以下の一文を追加

config/routes.rb
  match '*path' => 'application#error404', via: :all

ただよくよく調べていくと上記の実装方法は良いプラクティスではないとのことなのでしっかり実装する際は下記リンクのコメント欄を要参照
- Railsの404,500エラーページをカスタマイズ

22
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
22