Techioz Blog

Ruby - IRB または PRY での変更を含むファイルをリロードするにはどうすればよいですか?

概要

irbでファイルをリロードしたい。ファイル prime.rb には次のコードが含まれています。

def is_prime? num
  (2..num-1).each do |div_by|
    if num % div_by == 0
      return false
    end 
  end 
  true
end

require_relative を使用してファイルを要求できます。

irb(main):001> require_relative 'prime'
=> true
irb(main):002> is_prime? 10
=> false
irb(main):003> is_prime? 11
=> true

prime.rb に変更を加えた場合、ファイルをリロードするにはどうすればよいですか?私が試してみました:

irb(main):004> require_relative 'prime'
=> false

同じ動作が pry でも発生します。

解決策

rb ファイルへの相対パスを指定して Kernel#load を試してください。

irb> load './path/to/prime.rb'

Kernel#require はソース ファイルを 1 回だけロードしますが、Kernel#load は呼び出すたびにソース ファイルをロードします。

参照 https://stackoverflow.com/a/4633535/4950680