保持ruby脚本在终端中运行,这样我就可以调用不同的方法

时间:2017-02-01 11:41:34

标签: ruby shell

我想调用ruby脚本并在我调用方法时保持运行。

我有:

 until (a = gets.chomp) =~ /(?:ex|qu)it/i
  send(a)
 end

这很有效,但我觉得它不是最好的做法吗?

有人可以向我保证/提供更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果您想要REPL,可以使用IRB或PRY。 否则你可以write it yourself

def handle_input(input)
  raise StopIteration if input =~ /^(ex|qu)it$/i
  result = eval(input)
  puts("=> #{result}")
end

def repl(prompt)
  print prompt
  handle_input(gets.chomp!)
end

loop do
  repl('>> ')
end

示例:

>> 2+3
=> 5
>> "test".size
=> 4
>> 3.times{|i| puts i}
0
1
2
=> 3
>> exit

使用eval通常不是一个好主意。但是使用send,您无法指定接收器或任何参数。