やったこと
Ruby を irb 上で動作させている時、外部ファイルの読み込み直しをする方法について調べました。
確認環境
$ ruby -v
ruby 2.2.7p470 (2017-03-28 revision 58194) [x86_64-darwin16]
調査
my_class.rb
class MyClass
def display
p 'test-print1'
end
end
出力結果の例
$ irb
irb(main):013:0> require "./my_class"
=> true
irb(main):014:0> a = MyClass.new
=> #<MyClass:0x007f91c1399810>
irb(main):015:0> a.display()
"test-print1"
ここで my_class.rb を書き換えます。
class MyClass
def display
p 'test-print2'
end
end
irb 上で該当ファイルを load します。 require では変更が反映されませんでした。
require で試した場合 (※ 変更が反映されないパターン)
irb(main):017:0> require "./my_class"
=> false
irb(main):018:0> a = MyClass.new
=> #<MyClass:0x007f91c1379510>
irb(main):019:0> a.display()
"test-print1"
=> "test-print1"
load で試した場合
irb(main):020:0> load "./my_class.rb"
=> true
irb(main):021:0> a.display()
"test-print2"
=> "test-print2"