我对Ruby命令行选项感到困惑。-C dir和-X dir都删除目录,但是它们之间有什么区别呢?
-x [dir]和-X dir有什么不同?-I dir是做什么的(我知道它添加了dir作为加载库的目录)?发布于 2013-01-11 09:50:33
让我们在主目录中创建一个test.rb文件,如下所示:
hello
#!/usr/bin/ruby
p "here"现在,如果我们尝试运行它:
ruby -C /home/my_home test.rb这意味着将工作目录更改为/home/my_home并运行test.rb,您将得到一个错误:
test.rb:1:in `<main>': undefined local variable or method `hello' for main:Object (NameError)如果我们用:
ruby -x /home/my_home test.rb我们将得到“这里”打印,没有错误。在-x和-C之间的主要区别是-x删除了#!/usr/bin/ruby行之前的所有内容。在使用-x时,您也不必将目录设置为cd。因为-x的主要目的是删除行,如果需要的话,它只包含-C功能。
cd /home/my_home; ruby -x test.rb看(红宝石-救命)
至于-I。您可以提供ruby将搜索您执行或需要的文件的目录。
ruby -x test.rb除非您在/home/my_home中,否则Ruby不会找到test.rb文件。但是如果添加-I,ruby也会在"/home/my_home“中查找test.rb。
ruby -x -I/home/my_home test.rb与-C的不同之处在于它不会在执行之前更改目录,而只是在那里搜索文件。
发布于 2013-01-11 09:18:09
-C和-X选项执行相同的工作(在执行之前更改目录)。没有什么不同。
-I选项用于向$LOAD_PATH添加路径。
例如:假设在my_print_class.rb:(~/my_lib/my_print_class.rb)目录my_lib中有名为my_print_class.rb的ruby文件
class MyPrintClass
def self.my_print(str)
puts str
end
end现在你家里有my_call.rb了。
~/我的电话.my:
require 'my_print_class'
MyPrintClass.my_print("Hello world")为此,您需要my_print_class的路径,所以使用ruby -I my_lib my_call.rb
options.htm
发布于 2013-01-11 09:28:11
从man ruby或一些在线文档中可以看到,-C和-X是相同的。
-I将在红宝石LOAD_PATH中添加一些dir。例如,我有./a/my.rb和‘./test.rb’,如下所示:
# ./a/my.rb
def hello
puts 'hello from a/my'
end
# ./test.rb
require 'my'
hello 我执行ruby -I ./a test.rb。这将打印hello from a/my。如果没有-I,ruby将报告一个错误:cannot load such file -- my,因为./a不在当前的LOAD_PATH中。
https://stackoverflow.com/questions/14274693
复制相似问题