1

私は2つのスクリプトを持っています:

test1.rb

require 'test2.rb'
puts "hello"

test2.rb

puts "test"

を実行してこれを実行していruby test2.rb test1.rbます。

ただし、印刷されるだけtestで、印刷されませんhello

4

4 に答える 4

2

実行するだけruby test1.rbで、requireステートメントはtest2.rbをプルする必要があります。コマンドラインにも配置する必要はありません。(これにより、test2.rbが実行され、文字列'test1.rb'が引数として渡されますが、これはここで必要なものではありません)

編集:require「test2.rb」を検索しようとすると、ステートメントはデフォルトで現在のディレクトリを検索しません。次のように変更することで、明示的に指定できます。

require File.dirname(__FILE__) + '/test2.rb'

于 2012-08-20T14:29:04.463 に答える
2

test1.rbで実行します(test2.rbが同じディレクトリにあると仮定します。そうでない場合は、test1.rbからの相対パスを指定します)

require_relative 'test2.rb'
puts "hello"

コマンドラインでruby test1.rb

于 2012-08-20T14:50:57.607 に答える
0

これも機能するはずです

require './test2.rb'
puts "hello"
于 2015-08-09T21:02:31.200 に答える
0

問題を解決する方法についてはいくつかの説明がありますが、何が悪いのかについては説明がありません。

パラメータ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 }
于 2015-08-09T21:22:29.933 に答える