__FILE__
返回当前Ruby脚本文件的路径。
一个潜在的重要问题是,如果使用binding.pry
,__FILE__
的计算结果为(pry)
根据是否在__FILE__
的上下文中求值,将binding.pry
求值为不同的值可能会有问题例如,
$stdout.print "****************************************\n\n"
$stdout.print "FILE: #{__FILE__}\n\n"
$stdout.print "****************************************\n\n"
binding.pry
当脚本在
binding.pry
处暂停时,我得到:__FILE__
# >> (pry)
有没有人知道任何机制来获取当前文件的路径,即使是在
binding.pry
的上下文中? 最佳答案
使用_file_
而不是__FILE__
例如,给定两个文件:
# foo.rb
require 'pry'
require './bar'
binding.pry
b = Bar.new
以及:
# bar.rb
require 'pry'
class Bar
def initialize
binding.pry
end
end
用
ruby foo.rb
运行它们:ruby foo.rb
From: /Users/username/foo.rb @ line 3 :
1: require 'pry'
2: require './bar'
=> 3: binding.pry
4: b = Bar.new
(main):1 ⇒ _file_
=> "/Users/username/foo.rb"
(main):2 ⇒ exit
From: /Users/username/bar.rb @ line 4 Bar#initialize:
3: def initialize
=> 4: binding.pry
5: end
(#<Bar:0x00007fbb6caaff08>):1 ⇒ _file_
=> "/Users/username/bar.rb"
_file_
和任何其他局部变量名都可以在binding.local_variables
中找到。关于ruby - __FILE__在使用binding.pry时返回不同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53771718/