パーフェクト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
のコンソール画面でステップ実行を行えるようになる(next
やstep
など)。
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として扱われるので、日本時間を扱いたい時には以下のように設定を変更する。
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に変更する。
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も作っておくこと。
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
以下の一文を追加
match '*path' => 'application#error404', via: :all
ただよくよく調べていくと上記の実装方法は良いプラクティスではないとのことなのでしっかり実装する際は下記リンクのコメント欄を要参照