我可以使用Ruby读取任何文件(v1.9.3-p125)但是在使用以下命令时遇到问题:
IO.read("myself.rb")
File.open("myself.rb","rb")
在“* .rb”文件中执行此操作时,将返回空白字符串。如果我重命名文件“myself.rabit”它可以工作。
如何绕过ruby源文件的明显过滤?
答案 0 :(得分:2)
没有这样的过滤,你没有遇到你认为你遇到的错误。
例如,这可以作为存储在.rb
文件中的完整Ruby程序正常工作:
puts File.open(__FILE__).read
答案 1 :(得分:0)
您已经得到了正确答案:使用__FILE__
。
当您想要阅读主文件时,还有另一种可能性。
请参阅以下代码:
p DATA
p DATA.pos
p DATA.read
__END__
This is text after __END__
当你执行它时,你得到
#<File:test.rb>
50
"This is text after __END__"
DATA
是一个文件句柄,位于脚本结尾(__END__
)之后 - 在我的示例中,它位于第50位。
我经常使用此DATA
将数据存储在“here-document”中。
您可以将此可能性用于您的使用,只需将位置设置为文件开始。
DATA.pos= 0
puts DATA.read
两个限制:
__END__
是强制性的。