15
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

ローカルで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を使う

15
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?