【问题标题】:Ruby - get the file being executedRuby - 获取正在执行的文件
【发布时间】:2011-12-20 14:48:50
【问题描述】:

我正在尝试获取对传递给 ruby​​ 解释器的脚本的引用。例如,如果我正在运行 ruby foo.rb,我想获得对 foo.rb 文件的引用。

我认为在 Python 中这可以通过sys.argv[0] 访问。可以调用__FILE__,但这不是我正在寻找的解决方案,因为__FILE__ 会生成当前执行代码所在的文件。

有什么办法吗?

【问题讨论】:

    标签: ruby


    【解决方案1】:

    使用 File 类中的方法来操作 FILE

    在 test.rb 里面,我有

    puts __FILE__
    puts File.dirname(__FILE__)
    puts File.basename(__FILE__)
    

    当你跑步时,

    ruby a/b/test.rb
    

    你得到

    a/b/test.rb
    a/b
    test.rb
    

    【讨论】:

    • 如前所述 _ _ FILE _ _ 获取执行脚本的当前文件。对于 test.rb 中的代码,它总是返回 test.rb,对于 something_else.rb 中的代码,它总是返回 something_else.rb。我的问题是返回最初由 ruby​​ 解释器运行的脚本。
    • 这是我一直在寻找的答案。从irb运行文件时,我不想$0告诉我程序名称是irb,但我想知道正在执行哪个脚本文件。
    【解决方案2】:

    让我为读者添加一个$0的官方链接。 它是 Ruby 自身提供的全局变量之一。

    http://ruby-doc.org/core-2.0.0/doc/globals_rdoc.html

    包含正在执行的脚本的名称。可能是可分配的。

    【讨论】:

      【解决方案3】:

      我发现$0 是用于启动程序的文件名。很简单。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-06
        • 2016-02-27
        • 1970-01-01
        • 2022-03-07
        • 1970-01-01
        • 2012-07-29
        • 2015-02-28
        相关资源
        最近更新 更多