Rubyのコマンドラインオプション
-C
# hoge.rb puts("あなたの名前は何ですか?")
$ ruby -C ~/Documents/test/ hoge.rb
-e
$ ruby -e 'puts "Hello, Ruby!"' #=> Hello, Ruby!
複数のオプションを続けて実行する場合、一行に記載可能
$ ruby -e 'puts "Ruby"' -e 'puts "World"' #=> Ruby\nWorld
-c
文法チェック。例えばif文のendをちゃんと記載していなかったりすると
$ ruby -c 'Documents/hoge.rb' Documents/hoge.rb:3: syntax error, unexpected end-of-input
-n
while gets rubyスクリプト end
のような、入力受け付けと実行を繰り返すようなイメージ。
読み込みたいrubyプログラムをファイルで用意します
# hoge.rb puts "#{$_.strip}の天ぷらつくりますね!" puts puts "食べたい食材を入力してください"
$ ruby -n 'Documents/hoge.rb' かぼちゃ かぼちゃの天ぷらつくりますね! 食べたい食材を入力してください さつまいも さつまいもの天ぷらつくりますね! 食べたい食材を入力してください
while ~ endはイメージなだけなので 手元の検証ではbreakなどはできなかった
-p
-nと同じだが、実行後最後に"$_" (getsで得た入力値)を出力
-I
大文字のアイ。読み込みパスを追加できる。 組み込み変数 $: で確認できる
現状の読み込みパス
$ ruby -e 'puts $:' /usr/local/Cellar/rbenv/1.0.0/rbenv.d/exec/gem-rehash /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/site_ruby/2.1.0 /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/site_ruby/2.1.0/x86_64-darwin14.0 /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/site_ruby /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/vendor_ruby/2.1.0 /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/vendor_ruby/2.1.0/x86_64-darwin14.0 /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/vendor_ruby /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/2.1.0 /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/2.1.0/x86_64-darwin14.0
ロードパスを追加し、パスを出力
$ ruby -I '/Users/anon_user/Documents/test' -e 'puts $:' /Users/anon_user/Documents/test /usr/local/Cellar/rbenv/1.0.0/rbenv.d/exec/gem-rehash /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/site_ruby/2.1.0 /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/site_ruby/2.1.0/x86_64-darwin14.0 /Users/anon_user/.rbenv/versions/2.1.5/lib/ruby/site_ruby ...
-r
該当するライブラリやファイルをrequireする
ランダム文字列を吐くためSecureRandomを読み込み場合の例
$ ruby -r 'SecureRandom' -e 'puts SecureRandom.hex' f360e9d82b344812f6502c5a48e65212
-v
バージョンを出力、冗長モード(警告などを逐一出力すること)をtrueにする
-version
バージョンを出力
-verbose
冗長モード(警告などを逐一出力すること)をtrueにする
-W0
冗長モードをnilとする。警告一切なし
-W1
冗長モードをfalseとする。重要な警告のみ出力(デフォルト)
-W2
冗長モードをtrueとする。警告出力
重要ではない警告の場合W2で初めて吐かれる例
$ ruby -W0 -e '1/0' -e:1:in `/': divided by 0 (ZeroDivisionError) from -e:1:in `<main>' $ ruby -W1 -e '1/0' -e:1:in `/': divided by 0 (ZeroDivisionError) from -e:1:in `<main>' $ ruby -W2 -e '1/0' -e:1: warning: possibly useless use of / in void context -e:1:in `/': divided by 0 (ZeroDivisionError) from -e:1:in `<main>'
重要な警告の場合W1で吐かれる例
$ ruby -W0 -e 'A=1; A=2' $ ruby -W1 -e 'A=1; A=2' -e:1: warning: already initialized constant A -e:1: warning: previous definition of A was here $ ruby -W2 -e 'A=1; A=2' -e:1: warning: already initialized constant A -e:1: warning: previous definition of A was here