为 Ruby 应用启用控制台
Enabling a console for a Ruby app
我正在尝试向我的 Ruby cli 应用程序添加一个控制台(很像 Rails 控制台),但我似乎找不到满足我需要的解决方案:
- 着色和语法高亮显示
- 能够传入变量或使用当前上下文
我想使用 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: 无着色或语法高亮
如有任何帮助,我们将不胜感激!
我们通常在项目中创建一个单独的可执行文件,如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
我最后做的是定义一个漂亮的 simple/empty class 绑定到:
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。
我正在尝试向我的 Ruby cli 应用程序添加一个控制台(很像 Rails 控制台),但我似乎找不到满足我需要的解决方案:
- 着色和语法高亮显示
- 能够传入变量或使用当前上下文
我想使用 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: 无着色或语法高亮
如有任何帮助,我们将不胜感激!
我们通常在项目中创建一个单独的可执行文件,如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
我最后做的是定义一个漂亮的 simple/empty class 绑定到:
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。