【问题标题】: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 将代码传递给解释器),因为终端不知道该代码块是什么或如何解释它。

        之后你应该可以按照你说的粘贴进去了。

        【讨论】:

          猜你喜欢
          • 2012-09-04
          • 1970-01-01
          • 2018-08-20
          • 1970-01-01
          • 1970-01-01
          • 2018-07-30
          • 2020-09-11
          • 2014-04-26
          • 1970-01-01
          相关资源
          最近更新 更多