从命令行运行Ruby脚本

时间:2012-08-20 14:26:02

标签: ruby execute

我有2个脚本:

test1.rb

require 'test2.rb'
puts "hello"

test2.rb

puts "test"

我正在执行ruby test2.rb test1.rb

但只打印test而不是hello

4 个答案:

答案 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}}