Ruby を irb 上で動作させている時、外部ファイルの読み込み直しをする
Ruby
Published: 2019-04-11

やったこと

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"

参考

自分が書いたRubyプログラムをirb上で読み込む方法 - Qiita