1

我有 2 个脚本:

测试1.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.rbruby 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 回答