Rubyエンジニアにおすすめの開発サポートgem 10選

  • このエントリーをはてなブックマークに追加

deviseやcarrierwaveなど機能拡張として役立つgemはたくさんありますが、今回は、エンジニアが開発する時に様々なサポートをしてくれるgemを解説付きで10個ご紹介したいと思います。

デバッグが楽になったり、セキュリティ強化できたり、と使ってみるだけで大きく作業効率が変わってくるので、もしまだ使っていないgemがあれば是非導入してみてください。

1. rubocop

https://github.com/rubocop-hq/rubocop

rubocopはコーディング規約に則っているかをチェックしてくれるgemです。規約に反している箇所は、その理由とともにエディタ内で表示してくれます。インデントや空行などコーディングルールがあっても守られなければ意味がないので、チーム開発では欠かせないgemです。

 

2. pry-rails

https://github.com/rweng/pry-rails

これも使っている人は多いと思いますが、pryをrailsで使うためのgemです。pry-doc、pry-byebug、pry-stack_explorerなどと一緒に使います。

コード中にbinding.pryと書くことでデバッグのステップ実行が可能になったり、show-routesはrake routesの何倍も高速だったりと、使わない手はないgemです。

 

3. rufo

https://github.com/ruby-formatter/rufo

rufoは高速コードフォーマッターです。IDEやatomなどで書いているとそれほど崩れませんが、追加追加で書いたコードやチームメンバーが書いたコードでのインデントのズレなどをすぐ直したいときに役立ちます。

 

4. rack-mini-profiler

https://github.com/MiniProfiler/rack-mini-profiler

画面の処理時間やSQLの実行時間などを表示してくれるパフォーマンス計測のgemです。表示が遅くなっている原因の特定、ボトルネックの発見に役立ちます。アプリケーションが複雑になってきたときに、キャッシュを検討したり、クエリを改善したり、といったときに便利です。

 

5. better_errors

https://github.com/BetterErrors/better_errors

エラー画面に、デフォルトのエラー画面より詳しい情報を表示してくれるgemです。画面中でコマンドを実行したり、リクエスト内容、ローカル変数の値などを表示してくれるので、デバッグがかなり捗ります。

 

6. brakeman

https://github.com/presidentbeef/brakeman

brakemanはコードのセキュリティチェックを行ってくれるgemです。CSRFやMass Assignment、XSS(クロスサイトスクリプティング)などの脆弱性があるコード箇所を指摘してくれます。動くこと優先で書いたコードは、思わぬ危険性が潜んでいるものなので定期的にチェックするかCIと合わせて利用するほうがいいでしょう。

Confidence: High
Category: Mass Assignment
Check: PermitAttributes
Message: Potentially dangerous key allowed for mass assignment
Code: params.fetch(:user, {}).permit(:name, :email, :password, :admin)
File: app/controllers/admin/users_controller.rb
Line: 73

Confidence: Weak
Category: Cross-Site Scripting
Check: CrossSiteScripting
Message: Unescaped model attribute
Code: (((("



<div class=\"text-grey-500\"" + (" style=\"color:red;\"" or "")) + ">\u671F\u9650:") + current_user.user_courses.map do  [c.course_id, c.limit_date]  end.to_h[course.id].strftime("%Y/%m/%d %H:%M")) + "</div>




")
File: app/views/courses/index.html.erb
Line: 32

 

7. bundler-audit

https://github.com/rubysec/bundler-audit

使っているgemに脆弱性がないかチェックしてくれるツールです。ライブラリには依存関係があるので、1つのgemをインストールすることで様々なgemが同時にインストールされます。bundler-auditでは、そのなかに脆弱性が存在しないかをチェックしてくれます。CIと組み合わせて使うと便利です。

脆弱性が存在しない場合は、「No vulnerabilities found」と表示されますが、存在する場合には、該当のgemと対策が表示されます。

Name: nokogiri
Version: 1.8.2
Advisory: CVE-2018-8048
Criticality: Unknown
URL: https://github.com/sparklemotion/nokogiri/pull/1746
Title: Revert libxml2 behavior in Nokogiri gem that could cause XSS
Solution: upgrade to >= 1.8.3

Vulnerabilities found!

 

8. bullet

https://github.com/flyerhzm/bullet

N+1問題を発見してくれるgemです。N+1問題はデータ量(N+1)回のクエリを実行してしまうことで、アプリケーションのレスポンスが悪くなってしまう問題です。

railsでActiveRecordを使っていると発生しがちなN+1ですが、このgemを入れておけばすぐに分かります。発生したら、Javascriptのアラート、コンソールログなどで確認できます。

user: xxx
GET /
USE eager loading detected
  Item => [:category]
  Add to your finder: :includes => [:category]
Call stack
  /my_app/app/views/items/index.html.erb:20:in `block in _app_views_items_index_html_erb__4011569299845956187_70225558816360'
  /my_app/app/views/items/index.html.erb:18:in `_app_views_items_index_html_erb__4011569299845956187_70225558816360'

 

9. annotate

https://github.com/ctran/annotate_models

データベーステーブルのスキーマ情報をモデルにコメントとして書き込んでくれるgemです。リアルタイムでカラム情報が同期されてないと返って混乱する可能性はあるので使う、使わないが分かれますが、開発の初期段階でvalidation張ったり、アソシエーションを確認したりといった際に、Sequel Proに行ったり来たりしないで済むので便利です。

 

10. rails_best_practices

https://github.com/flyerhzm/rails_best_practices

railsのベストプラクティスに則っているかをチェックしてくれるツールです。https://rails-bestpractices.com/ で挙げられているコーディングのベストプラクティスと自分のコードを比較して修正点を指摘してくれるため、この指摘に則ってリファクタリングすることで、ruby on railsのスキルアップにとても役立ち、バグを未然に防ぐことができます。

$ bundle exec rails_best_practices
Source Code: |====================================================================================================================================================================================================================|
/my_app/app/views/items/index.html.erb:20 - law of demeter
/my_app/app/helpers/categories_helper.rb:1 - remove empty helpers
/my_app/app/helpers/items_helper.rb:1 - remove empty helpers

Please go to https://rails-bestpractices.com to see more useful Rails Best Practices.

Found 3 warnings.

law of demeterと空のヘルパーは削除しろ、という警告が出ていますね。https://rails-bestpractices.com でlaw of demeterを見てみると、アソシエーションのモデルの値はdelegateでアクセスしろとなっています。

 

以上、開発をサポートするgem 10選でした。

特に最後のrails_best_practicesは良いコードを書いてスキルアップにつながるのでかなりおすすめです。

 

  • このエントリーをはてなブックマークに追加

フリーランスで高収入と安心を実現するなら

テックブレインは、高単価・保障に強いIT/Webフリーランスエンジニアのための独立支援サービスです。

常時5,000件以上の高単価案件が豊富にあるため収入を最大化できます。また、あなたの立場になって案件の紹介から企業との交渉をシステム開発経験があるコーディネーターがフルサポート。正社員並みの福利厚生も利用できます。


高単価・正社員並み保障のフリーエンジニア求人案件へ