Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

ローカルで開発中のgemをリロードする

More than 5 years have passed since last update.

ローカルでgemを開発する時、それを利用するRailsアプリケーションと連動して動かしたい時、gem側の変更を再読み込みするのにはrails consoleだとreload!が効かず再起動が必要になって時間がかかる。

それを解決する方法

RequireReloader gem

require_reloader

gemを追加

Gemfile
group :development do
  gem 'require_reloader'
config/environments/development.rb
YourApp::Application.configure do
  ...
  RequireReloader.watch_local_gems!
end

以下、Railsコンソールで

> reload!; MyGemModel.new

依然reload!は必要

Springを一時無効にする (Rails4.1以降など)

require_reloaderを入れる前、最初はspringで少しはまった。
単純にrails cを再起動しても再読み込みされなかった。

# Springを一時的に無効にする
DISABLE_SPRING=1 rails c

# Spring関連コマンド
bin/spring status
bin/spring stop

require_reloader入れると、DISABLE_SPRINGの有無関係なく動く。

StackOverflowでも色々な方法があったけど、今回の方法がすっきりしているように思ったのでこれにした。

pryとかload使うとかでも出来る方法は他にもありそう。
reload!もしたくない人は他の方法を考える必要がある。

関連:BundlerでGemfileを変更せずにローカルの:pathのgemを使う

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away