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

Shp*_*ord 6 ruby terminal command-line

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

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

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

  cat.kittens each do |kitten|
    kitten.color = "Brown"
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,如果我复制/粘贴它只是分解并且不执行.

Jak*_*mpl 25

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

  cat.kittens each do |kitten|
    kitten.color = 'Brown'
  end
end"
Run Code Online (Sandbox Code Playgroud)


Jos*_*man 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
Run Code Online (Sandbox Code Playgroud)

您还可以使用其他技巧irb在特定脚本的上下文中运行。