我有一个.rb脚本,可以使用Dir.glob('*.txt') do |rb_file|
访问和编辑同一目录中的所有.txt文件
如果我从终端ruby myscript.rb
拨打电话,一切正常。
然后我制作了一个可执行文件,在Mac OS上双击启动,如this和this所述。我使用#!/usr/bin/env ruby
启动了文件,授予了权限chmod +x myscript.rb
,并使用终端打开了它。
Ruby正在运行但是当我尝试访问同一目录中的文件时,脚本找不到它们。实际上,脚本会在/ Users / myname目录中查找这些文件。
如何访问双击文件所在的原始目录?
我尝试使用./
但没有成功。
绝对路径不是一个选项,除非以编程方式检索。
谢谢
答案 0 :(得分:0)
如果我理解你的话,无论你如何调用它,你都应该能够使用它来获取ruby脚本所在的目录。
File.dirname(File.expand_path(__FILE__))
如果我创建一个简单的脚本,只需puts
上面的~/tmp/foo.rb
并将其放在~/tmp $ ruby foo.rb
/Users/philip/tmp
~ $ ruby tmp/foo.rb
/Users/philip/tmp
~ $ ruby /Users/philip/tmp/foo.rb
/Users/philip/tmp
~ $ cd /
/ $ ruby /Users/philip/tmp/foo.rb
/Users/philip/tmp
中,这就是输出。我的提示是我当前的目录,后跟一个' $'。在每种情况下都会返回相同的值。
drawRect
答案 1 :(得分:0)
方法Kernel#__dir__
返回调用__dir__
所在文件的目录。(它基本等同于File.dirname
(
{{3} } (
File.realpath
))
。)