Ruby需要模块,库

时间:2017-08-12 06:49:28

标签: ruby

我是红宝石的新手。我明白,当我看到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

基本上,我想做的就是这个。但是,我知道可能有一种优化的方法(不必直接需要相关文件)。所以,请随时帮助我更新或优化这一点。

0 个答案:

没有答案