我是红宝石的新手。我明白,当我看到ruby脚本时,它通常包含与此类似的行:
require '`/home/swenson/rubyfunction1.rb`'
我理解需求行基本上(用简单的基本术语表示),调用其他脚本。这就是它的全部内容。这些其他脚本是函数。
现在,假设我将rubyfunction1和rubyfunction2脚本的内容放入两个不同的变量中。我如何要求变量的内容?
或者,假设我希望能够做到这样的事情:
/home/swenson/rubyfunction1.rb
我理解这是一种需要宝石/红宝石功能的迂回方式,但我很想知道这种方式是否完全可能。
基本上,如果我在命令行上单独运行"cat /home/swenson/rubyfunction1.rb"
脚本,它基本上会输出脚本的内容。这相当于做require '`/home/swenson/rubyfunction1.rb`'
require '`/home/swenson/rubyfunction2.rb`'
。
我希望能够做到这样的事情:
specvar1 = `/home/swenson/rubyfunction1.rb`
specvar2 = `/home/swenson/rubyfunction2.rb`
require specvar1
require specvar2
或
#!/usr/bin/env ruby
add = `./add.rb` # for my purposes, this will serve as require
subtract = `./subtract.rb` # for my purposes, this will serve as require
eval add
puts "I can add: #{add(3, 2)}"
eval subtract
puts "I can now subtract #{subtract(3, 2)}"
这可能吗?我可以申请任何建议让它发挥作用吗?
更新
所以这就是我最终做的事情。
主脚本名为example.rb:
#!/usr/bin/env ruby
puts <<-function
#!/usr/bin/env ruby
def add(a, b)
a + b
end
function
add.rb的内容:
#!/usr/bin/env ruby
puts <<-function
#!/usr/bin/env ruby
def subtract(a, b)
a - b
end
function
subtract.rb的内容:
# ./example.rb
I can add: 5
I can now subtract 1
从命令行运行时,我没有收到任何错误:
.close
基本上,我想做的就是这个。但是,我知道可能有一种优化的方法(不必直接需要相关文件)。所以,请随时帮助我更新或优化这一点。