Rails Tipsいろいろ(Rubocop、magic comment除去等)


RailsやRuboCopに関するTipsをいくつか紹介します。

😼 RuboCop

Rubyのコーディングルールのチェックを行うツール「RuboCop」を扱う際に捗るTipsを紹介します。RuboCopを使うことでチーム内でコーディング規約に違反しているコードを自動チェックできます。コードレビューで不要な指摘もなくなるので、チーム開発の際にはぜひ使ってみてください。

警告をコメントで無効化

コードの中の一部だけ例外的にRuboCopの警告を無視したいケースでは次のようにコメントを書いてチェック対象外にします。

警告を複数行で無効化

rubocop:disableの後に無効化したい警告を記述します。

# rubocop:disable Style/XXX
DoSomething.execute
# rubocop:enable Style/XXX

すべて無効化したい場合はrubocop:disable allとします。

一行だけ警告を無効化

rubocop:disableを無視したい行に記述します。

DoSomething.execute # rubocop:disable Style/XXX

🗻 magic commentの除去

# -*- encoding: utf-8 -*-といったmagic commentがRuby 2.0以降不要になりました。古いコードをキレイキレイするときには次のコマンドで駆逐しましょう。

# マジックコメントの削除
find . -type f -name '*.rb' -print0 | xargs -0 sed -i '' '/^#.*coding.*[uU][tT][fF]\-8/d'
# ファイルの先頭の空の行の削除
find . -type f -name '*.rb' -print0 | xargs -0 -n 1 sed -i '' '/./,$!d'

🚕 delegateメソッド

ActiveSupportのdelegateメソッドは別のオブジェクトに処理を委譲する設定です。

class Greeter < ActiveRecord::Base
def hello
'hello'
end
def goodbye
'goodbye'
end
end
class Foo < ActiveRecord::Base
belongs_to :greeter
delegate :hello, to: :greeter
end
Foo.new.hello # => "hello"
Foo.new.goodbye # => NoMethodError: undefined method `goodbye' for #<Foo:0x1af30c>

delegateには次の2つのオプションがあります。

  • allow_nil: true => 委譲先がない場合はnilを返します
  • prefix => delegateしたメソッドにprefixをつけることができる

🐹 HashのキーをSymbolにする

Active Supportのメソッドで、HashのキーをSymbolにする方法です。

{ 'hoge': 1, 'fuga': 2 }.symbolize_keys #=> {:hoge=>1, :fuga=>2}
# JSONのパースとキーをシンボルにする
JSON.parse(json, { symbolize_names: true })

😎 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍