Rails用のgemを手元で作っている時にコードを書きなおす度にWebrickを再起動してgemを読みなおすのは非常に手間。なのでこれを回避する方法
例えばexampleという名前のgemを作っていてExample::MyClassをリクエストの度にリロードをしたい場合enviroments/development.rbに以下を追加
enviroments/development.rb
# requestが来た場合のcallbackを定義
ActionDispatch::Callbacks.before do
# Example::MyClassが定義されている場合は削除する
if Object.const_defined?(:Example)
if Example.const_defined?(:MyClass)
Example.send(:remove_const, :MyClass)
end
end
# example/my_classがrequireされている場合は削除して再度requireする
$LOADED_FEATURES.delete_if {|s| s.include? "example/my_class"}
require 'example/my_class'
end