如何从Terminal.app运行一块ruby代码?

时间:2012-01-09 21:44:52

标签: ruby command-line terminal

我专门使用OS X Terminal.app来获取命令行内容,但这个问题也可能适用于其他命令行工具。

假设我想从命令行运行这个ruby代码块:

Cats.each do |cat|
  cat.name = 'Mommy'

  cat.kittens each do |kitten|
    kitten.color = "Brown"
  end
end

现在,如果我复制/粘贴它就会被分解并且不会执行。

3 个答案:

答案 0 :(得分:24)

ruby -e "Cats.each do |cat|
  cat.name = 'Mommy'

  cat.kittens each do |kitten|
    kitten.color = 'Brown'
  end
end"

答案 1 :(得分:1)

首先,您需要运行irb(或使用ruby -e将代码传递给解释器),因为终端不知道该代码块是什么或如何解释它。

之后你应该能够像你说的那样粘贴它。

答案 2 :(得分:1)

请注意,Terminal.app本身不是Ruby解释器。您需要启动irb以获取交互式Ruby控制台:

user@host # irb

irb(main):001:0> Cats.each do |cat|
irb(main):002:1*   cat.name = 'Mommy'
irb(main):003:1> 
irb(main):004:1*   cat.kittens each do |kitten|
irb(main):005:2*     kitten.color = "Brown"
irb(main):006:2>   end
irb(main):007:1> end

NameError: uninitialized constant Cats
    from (irb):1
    from :0

您可以使用other tricks在特定脚本的上下文中运行irb