Ruby のコマンドライン オプションについて混乱しています。両方ともディレクトリ-C dir
を-X dir
削除しますが、それらはどのように異なりますか?
-x [dir]
との違いは-X dir
?- 何をしますか (ライブラリをロードするためのディレクトリとして
-I dir
追加されることは知っています)?dir
Ruby のコマンドライン オプションについて混乱しています。両方ともディレクトリ-C dir
を-X dir
削除しますが、それらはどのように異なりますか?
-x [dir]
との違いは-X dir
?-I dir
追加されることは知っています)?dir
以下を使用して、ホームディレクトリに 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
「here」が出力され、エラーは発生しません。-x と -Cの主な違いは、-x が#!/usr/bin/ruby
行の前にあるものをすべて削除することです。また、-x を使用する場合は、ディレクトリを cd に設定する必要もありません。-x の主な目的は行を削除することであり、必要に応じて -C 機能も含まれているためです。
cd /home/my_home; ruby -x test.rb
参照 (ruby --help)
-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 との違いは、実行前にディレクトリを変更せず、そこでファイルを検索することです。
man ruby
またはオンラインのドキュメントからわかるように-C
、-X
同じです。
そして-I
、いくつかのディレクトリを ruby LOAD_PATH に追加します。たとえば、./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 はエラーを報告します:は現在の LOAD_PATH にないcannot load such file -- my
ためです。./a
-C および -X オプションは同じジョブを実行します (実行前にディレクトリを変更します)。違いはありません。
-I オプションは、$LOAD_PATH にパスを追加するために使用されます
例: my_lib ディレクトリ my_print_class.rb:(~/my_lib/my_print_class.rb) に my_print_class.rb という名前の ruby ファイルがあるとします。
class MyPrintClass
def self.my_print(str)
puts str
end
end
これで、home(~) に my_call.rb ができました。
~/my_call.rb:
require 'my_print_class'
MyPrintClass.my_print("Hello world")
これには my_print_class のパスが必要なので、 ruby -I my_lib my_call.rb を使用します
http://www.tutorialspoint.com/ruby/ruby_command_line_options.htm