Ruby and Rails

Ruby と Ruby on Rails のこと

rails

目次

開発効率化 guard - ブラウザのリロードや RSpec の自動実行 rails コマンド rails new rails generate rails server unicorn ではなく unicorn-rails UI twitter-bootstrap-rails ではなく bootswatch-rails で Bootswatch を簡単に組み込む Bootstrap の f…

開発中のメールアドレスを安全にする mail_safe

開発中にメールアドレスがうっかり外に出ないようにしたい。でも、メールが送信されるのは確認したい。 そんな時は myronmarston/mail_safe を使うことで、メールアドレスを安全に変換してくれます。 例えば foo@example.com を「自分のアカウント+foo-AT-ex…

Bootstrap の form を書く手間がゼロになる Rails Bootstrap Forms

Bootstrap を Rails に組み込んだだけ では、form_for や form_tag を書く時に class: 'btn btn-primary' とか書かないといけない。 bootstrap-ruby/rails-bootstrap-forms なら form_for を bootstrap_form_for と書くだけ。 面倒な class を書かなくても B…

Ruby と Rails の便利な書き方

a ||= b と a || b a が nil なら初期値を入れたい場合。 a = nil a = 100 if a.nil? # => 100 は a = nil a ||= 100 #=> 100 と書けます。通称 nil ガード。 nil ガードの逆。すでに値が入っている場合に書き換えたいなら。 a = 100 a = 200 if a.present? …

rake assets:precompile の RSpec を書く

bundle update して開発してカバレッジも 100% でテストも全部通った、さて、本番環境にデプロイ!と思ったら $ rake assets:precompile rake aborted! NoMethodError: undefined method `[]' for nil:NilClass とコケた。 less-rails-bootstrap が古くて、…

letter_opener と letter_opener_web

letter_opener 便利 letter_opener は送信したメールの確認に便利ですよね。 送信したメールの分だけスパパパパンとブラウザで開いてくれて。 インストール Gemfile に下記。 gem 'letter_opener', group: :development インストール。 $ bundle config/envi…

Devise で自明の「ログインしました」を出さない方法

Devise でログインすると「ログインしました」、ログアウトすると「ログアウトしました」と出るけど、画面を見れば自明なので出したくない。 特に「ログインしました」は何か操作するまでずっと出ているのが特に嫌。 その場合は ja.yml で '' して文言を消す…

guard - ブラウザのリロードや RSpec の自動実行

ファイルを更新したら Chrome を自動でリロードしたり、RSpec を自動実行してくれるのが guard。 インストール Gemfile に下記。 group :development, :test do gem 'guard-livereload' gem 'guard-rspec' end インストール。 $ bundle Chrome 拡張機能 Live…

better_errors - エラー画面を便利にする

Rails に標準で入れてほしい better_errors。 エラー画面で REPL が使えます。変数を確認したりと便利。 インストール Gemfile に下記。 group :development, :test do gem 'better_errors' gem 'binding_of_caller' end インストール。 $ bundle REPL があ…

font-awesome-rails は本当に Awesome

bokmann/font-awesome-rails を使うと、簡単に Font Awesome を導入できる。 インストール Gemfile に追加。 gem 'font-awesome-rails' インストール。 $ bundle ./app/assets/stylesheets/application.css に追加。 *= require font-awesome 使い方 fa_icon…

Devise に初期ユーザを追加

db/seeds.rb に下記を書く。 User.create(email: 'admin@example.com', password: 'password') User.create(email: 'manager@example.com', password: 'password') User.create(email: 'user@example.com', password: 'password') 下記で登録できる。 $ rake…

Devise の Bootstrap 対応と日本語化

Bootstrap と親和性の高いログイン画面と、メッセージを日本語にする方法。 Rails 4.1.8 Devise 3.4.1 RSpec 3.1.0 インストール Gemfile に下記追加。 gem 'devise' gem 'devise-bootstrap-views' gem 'devise-i18n' gem 'devise-i18n-views' インストール…

New Relic

New Relic はパフォーマンスはもちろんのこと、脆弱性のある Rails のバージョンであれば指摘してくれたり、開発環境では unicorn じゃないほうがいいなどのアドバイスもくれる。 インストール Sign Up まずは New Relic に Sign Up。 newrelic.yml New Reli…

Rails のログから遅い処理を見つけるワンライナー

ログから 200ms 以上かかっている処理を見つけるワンライナー。 $ ruby -ne 'if /(\d+\.?\d+)ms/ then puts "#{$.} #{$1} #{$_}" if $1.to_f > 200; end' log/production.log 行番号と時間とログが表示される。 283026 232.7 I, [2014-12-04T10:55:27.899449…

unicorn ではなく unicorn-rails

Gemfile に group :production do gem 'unicorn-rails' end して $ bundle すると、Unicorn が $ unicorn_rails ではなく、WEBrick 同様に $ rails server -p 3000 -d で使えるようになる。 samuelkadolph/unicorn-rails

request-log-analyzer で Rails のログをレポーティング

wvanbergen/request-log-analyzer を使うと、Rails が吐き出すログからページの処理時間の平均や合計などのレポートを生成 ( 出力例 ) 。 インストール $ gem install request-log-analyzer 簡単な使い方 $ request-log-analyzer log/production.log オプシ…

rails server

起動 rails s と短縮可能。 $ rails server オプション デフォルトの 3000 番ポートを 3001 番にする。 $ rails s -p 3001 デーモン化。 $ rails s -d 本番環境で動かすのなら。 $ rails s -e production 複数指定可能。 $ rails s -p 80 -d -e production

twitter-bootstrap-rails ではなく bootswatch-rails で Bootswatch を簡単に組み込む

maxim/bootswatch-rails を使うと Bootswatch を簡単に組み込むことができる。 もう一つの定番、twitter-bootstrap-rails よりテーマのダウンロードが不要だったりと楽。 Gemfile Gemfile に下記を追加。 gem 'autoprefixer-rails' gem 'bootstrap-sass' gem…

rails generate

rails generate は rails g と短縮可能。 dry run rails g は -p ( --pretend ) を付けることで dry run 可能。 実際にファイルは作らないので、複数形だっけ?なんのファイル作るんだっけ?という時の確認に便利。 $ rails g controller Dashboard -p creat…

rails new

基本 $ rails new プロジェクト名 よく使う $ rails new プロジェクト名 -d mysql -T $ rails new プロジェクト名 --database=mysql --skip-test-unit どちらも同じ意味。 -d では下記が指定可能。 mysql oracle postgresql sqlite3 frontbase ibm_db sqlser…