Techioz Blog

Ruby - Ruby コマンドラインツールで -r スイッチを使用する方法

概要

コマンドラインスイッチ -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 コマンドは実行から次の実行までの状態を記録しないため、実行するたびに知る必要のあるすべてのことを Ruby コマンドに伝える必要があります。

これを実行するときは常に、実行するメインプログラムを指示する必要があります。そうしないと、そのプログラムを標準入力に入力することが期待されます。 -r はメインプログラムを指定しません。

これを試して:

ruby -rdate test.rb

この回答の 10 周年記念の更新: もちろん、より一般的な堅牢な方法は、test.rb ファイルの先頭近くに require ‘date’ を記述することです。これにより、コードがどのように実行されるかに関係なく、常にこの日付が含まれます。