Ruby - 如何在 ruby 命令行工具中使用 -r 开关

问题描述 投票:0回答:3

我试图弄清楚如何使用命令行开关 -r。

我的理解是代码打出来如下:

ruby -r*nameOfRequired*

我发现事实并非如此。当我输入上面的内容并按 Enter 时,终端期望“输入语法结束”并且不会继续。

我错过了什么?开关和所需文件名之间需要有空格吗?

请并谢谢您!


编辑: 我目前正在阅读 David A. Black 的《The Well Grounded Rubyist》,我在阅读有关命令行开关的部分时提出了这个问题。

话虽如此,我创建了一个“test.rb”文件,其中包含:

puts Date.today

然后,在终端中,我输入:

ruby -r date

我认为这将“需要”日期模块,然后使我能够使用 ruby test.rb 运行“test.rb”文件(假设我位于正确的目录中)。

相反,终端光标移动到换行符,等待更多输入。如果我需要澄清其他任何事情,请告诉我。谢谢!

ruby command-line switch-statement
3个回答
1
投票

一般来说,

ruby
命令不会记录从一次运行到下一次运行的任何状态,因此您需要告诉它每次运行它时需要知道的所有信息。

无论何时运行它,您都需要告诉它要运行的主程序,否则它会期望您在标准输入上键入该程序。

-r
不指定主程序。

试试这个:

ruby -rdate test.rb

更新此答案 10 周年: 当然,更正常的稳健做法是在

require 'date'
文件顶部附近写入
test.rb
,因此无论代码如何执行,它总是会被包含在内。


1
投票

如果您只输入

ruby -r
module,那么Ruby将加载该模块并等待您输入需要该模块的主程序。

如果您只想运行模块而不执行其他操作,则可以执行

ruby
full-path-to-module 而不带
-r
、或
ruby -r
module
-e exit
ruby -r 
模块
</dev/null
,或类似的。


0
投票

根据

ruby -h

-rlibrary 在执行脚本之前需要该库

在不提供脚本文件路径的情况下,它从标准输入读取脚本。

尝试以下操作(当您给出

-e command
时可以省略脚本文件路径):

ruby -r**nameOfRequired** -e ""
© www.soinside.com 2019 - 2024. All rights reserved.