私は2つのスクリプトを持っています:
test1.rb
require 'test2.rb'
puts "hello"
test2.rb
puts "test"
を実行してこれを実行していruby test2.rb test1.rb
ます。
ただし、印刷されるだけtest
で、印刷されませんhello
。
実行するだけruby test1.rb
で、require
ステートメントはtest2.rbをプルする必要があります。コマンドラインにも配置する必要はありません。(これにより、test2.rbが実行され、文字列'test1.rb'が引数として渡されますが、これはここで必要なものではありません)
編集:require
「test2.rb」を検索しようとすると、ステートメントはデフォルトで現在のディレクトリを検索しません。次のように変更することで、明示的に指定できます。
require File.dirname(__FILE__) + '/test2.rb'
test1.rbで実行します(test2.rbが同じディレクトリにあると仮定します。そうでない場合は、test1.rbからの相対パスを指定します)
require_relative 'test2.rb'
puts "hello"
コマンドラインでruby test1.rb
これも機能するはずです
require './test2.rb'
puts "hello"
問題を解決する方法についてはいくつかの説明がありますが、何が悪いのかについては説明がありません。
パラメータtest1.rbを使用ruby test2.rb test1.rb
してrubyスクリプトを呼び出します。
定数のパラメータにアクセスできますARGV
。
このスクリプトの例:
puts "test"
puts 'ARGV= %s' % ARGV
あなたがそれを呼ぶときの結果:
C:\Temp>ruby test.rb test2.rb
test
ARGV= test2.rb
したがって、次のようなプログラムを作成することもできます。
require_relative ARGV.first
最初のパラメーターは、ロードするスクリプトを定義します。
または、多くのスクリプトをロードする場合は、次を使用できます。
ARGV.each{|script| require_relative script }