【问题标题】:Enabling a console for a Ruby app为 Ruby 应用程序启用控制台
【发布时间】:2016-04-08 14:40:30
【问题描述】:

我正在尝试将控制台添加到我的 Ruby cli 应用程序(很像 Rails 控制台),但我似乎找不到满足我需要的解决方案:

  • 着色和语法高亮
  • 能够传入变量或使用当前上下文

我想使用pry,但我不知道如何在会话开始时禁止打印代码上下文。我希望它立即开始会话,除了提示之外不打印任何内容。

以下是在 pry 会话开始时当前打印的内容:

Frame number: 0/8

From: <file_path> @ line <#> <Class>#<method>:

    71: def console
    72:   client_setup
    73:   puts "Console Connected to #{@client.url}"
    74:   puts 'HINT: The @client object is available to you'
    75: rescue StandardError => e
    76:   puts "WARNING: Couldn't connect to #{@client.url}"
    77: ensure
    78:   Pry.config.prompt = proc { "> " }
    79:   binding.pry
 => 80: end
>

这就是我想要的:

>

我也尝试了其他一些解决方案,但每个解决方案都有我的问题:

  • IRB:没有着色,似乎无法自定义
  • ripl:没有着色或语法高亮

这里的任何帮助将不胜感激!

【问题讨论】:

  • 看起来你正试图让你的程序加载 Pry,但我认为正确的解决方案是让 Pry 加载你的程序。将要在 Pry 提示出现之前运行的代码放在名为 setup.rb 的文件中。然后使用pry -r setup.rb 开始 Pry。

标签: ruby irb pry


【解决方案1】:

我们通常会在我们的项目中创建一个单独的可执行文件,如 bin/console,并在其中放置类似这样的内容:

#!/usr/bin/env ruby

require_relative "../application"

require "pry"
Pry.start

其中 application.rb 是一个通过 Bundler 加载 gems 的文件,其中包含所有必要的应用程序相关文件,因此可以在控制台中使用应用程序类。

只需从终端使用 ./bin/console 命令即可轻松启动控制台。

如果您需要自定义控制台的外观,那么 github 上的官方 wiki 有足够的信息:https://github.com/pry/pry/wiki/Customization-and-configuration

【讨论】:

  • 感谢@SunnyMagadan。我实际上已经在 Thor cli 中完成了这一切,并且有一些设置代码我希望能够利用和共享其他 cli 命令。我正在寻找的主要内容是在开始会话之前设置什么选项来禁止打印代码。我在 wiki 上找不到。
  • ...如果我能弄清楚如何创建一个新的空绑定并在其中放置一个变量,那也很棒。
【解决方案2】:

我最终做的是定义一个非常简单/空的类来绑定:

class Console
  def initialize(client)
    @client = client
  end
end

然后在我的控制台方法中:

Pry.config.prompt = proc { '> ' }
Pry.plugins['stack_explorer'] && Pry.plugins['stack_explorer'].disable!
Pry.start(Console.new(@client))

禁用 stack_explorer 会阻止它打印帧号信息,并且在 Pry 会话中,我可以按预期访问 @client。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2010-10-30
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    相关资源
    最近更新 更多