我进入irb
并要求一个文件
irb> require_relative 'prime'
irb> true
这个文件包含以下代码:
def is_prime? num
(2..num-1).each do |div_by|
if num % div_by == 0
return false
end
end
true
end
将文件在IRB中要求可以工作,并且我可以使用方法,例如:
irb> require_relative 'prime'
irb> is_prime? 10
irb> -> false
irb> is_prime? 11
irb> -> true
然而,如果我修改源文件,例如添加 puts 'HHH'
,除非我退出控制台并重新进入然后 require
文件,否则不会显示出来。
如果我留在控制台并再次 require
文件,我将得到假值,因为它已经被加载,我不会获得新的更改。
我已经尝试过:
irb> reload
并且
irb> reload!
但它们给了我
NoMethodError (undefined method `reload!' for main:Object)
同时我尝试了
irb> load 'prime.rb'
irb> => true
但是没有捕捉到更改
使用PRY得到了类似的结果
prime.rb
返回 true,但似乎没有捕捉到更改。 - Michael Durrantload 'prime.rb'
没有起作用的原因是 Ruby 有一个标准库类叫做Prime
,所以你实际上加载的是这个类而不是你的prime.rb
文件。 - engineersmnkyconfig/application.rb
(在lambda中,以模拟类似于Rails的文件),load返回true,但它仍然没有捕捉到代码更改,我不认为这与标准库有冲突。 - Juan José Ramírez