我有2个脚本:
test1.rb
require 'test2.rb'
puts "hello"
test2.rb
puts "test"
我正在执行ruby test2.rb test1.rb
。
但只打印test
而不是hello
。
答案 0 :(得分:2)
您只需要运行ruby test1.rb
并且require
语句应该为您提供test2.rb - 您也不需要将它放在命令行上。 (那将尝试运行test2.rb,将字符串'test1.rb'作为参数传递,这不是你想要的)
编辑:在尝试查找“test2.rb”时,默认情况下require
语句不会查找当前目录。您可以通过将其更改为:
require File.dirname(__FILE__) + '/test2.rb'
答案 1 :(得分:2)
在test1.rb中(假设test2.rb在同一目录中,否则给出相对于test1.rb的路径)
require_relative 'test2.rb'
puts "hello"
并在命令行上执行ruby test1.rb
答案 2 :(得分:0)
这应该也适用
require './test2.rb'
puts "hello"
答案 3 :(得分:0)
有一些解释如何解决问题,但不会出现问题。
使用ARGV
,您可以使用参数 test1.rb调用ruby脚本。
您可以访问常量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 }
第一个参数定义了要加载的脚本。
或者,如果您要加载许多可以使用的脚本:
{{1}}