【问题标题】:How can I run a block of ruby code from Terminal.app?如何从 Terminal.app 运行一段 ruby 代码?
【发布时间】:2012-02-06 09:54:30
【问题描述】:
我专门将 OS X Terminal.app 用于命令行,但这个问题也可能适用于其他命令行工具。
假设我想从命令行运行这段 ruby 代码:
Cats.each do |cat|
cat.name = 'Mommy'
cat.kittens each do |kitten|
kitten.color = "Brown"
end
end
现在,如果我复制/粘贴它,它就会被分解并且无法执行。
【问题讨论】:
标签:
ruby
command-line
terminal
【解决方案1】:
ruby -e "Cats.each do |cat|
cat.name = 'Mommy'
cat.kittens each do |kitten|
kitten.color = 'Brown'
end
end"
【解决方案2】:
请注意,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。
【解决方案3】:
首先您需要运行 irb(或使用 ruby -e 将代码传递给解释器),因为终端不知道该代码块是什么或如何解释它。
之后你应该可以按照你说的粘贴进去了。