【问题标题】:Run a Ruby library from the command-line从命令行运行 Ruby 库
【发布时间】:2010-10-03 23:29:06
【问题描述】:

在对 Python 非常满意几年后,我刚刚学会了 Ruby 的基础知识(我仍在使用 Python 做一些事情),但我想知道是否有成语或 hack 来解决这个问题问题。

我有一个 Ruby 脚本,我希望能够使用它来执行 require script_name,但我也希望能够从终端运行 ruby script_name.rb 并让它作为命令行脚本运行。在 Python 中,这将通过在脚本底部具有以下结构来完成:

if __name__ == '__main__':
    # do something here

但是,我似乎在 Ruby 中找不到等价物。有没有办法检测当前脚本是否正在从命令行运行?也许一些Kernel:: 方法或什么?理想情况下,我希望脚本底部是这样的:

if from_command_line?
  # do something here
end

【问题讨论】:

  • 您应该稍后查看您的问题的答案,因为它们还包含复制 python 类测试习语的代码。

标签: ruby command-line


【解决方案1】:

你想使用:

if __FILE__ == $0
  # do stuff
end

__FILE__ 是源文件名,$0 是当前正在执行的脚本的名称。

【讨论】:

    【解决方案2】:

    您可以在 ruby​​ 中找到类似的功能。

    __FILE__当前源文件名。

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

    来源:Ruby Quick Ref

    【讨论】:

      【解决方案3】:

      虽然

      if __FILE__ == $0
        Foo.run
      end
      

      是常用的方法,我目前正在使用

      if File.identical?(__FILE__, $0)
        Foo.run
      end
      

      因为像 ruby​​-prof can make $0 not equal __FILE__ 这样的程序即使你使用--replace-progname

      【讨论】:

        猜你喜欢
        • 2015-12-06
        • 2018-10-27
        • 2015-08-13
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        • 2018-01-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多