如何在木偶中使用 irb 到 test/debug

How to use irb to test/debug in puppet

我正在使用 Puppet 3.6.2,我有我们的 Puppet 存储库的源代码。我想这样做:

irb> require 'rubygems'
irb> require 'puppet'
irb> Puppet[:confdir] = "/home/wwalker/git/puppet"
irb> node=Puppet::Node.new('localhost')
irb> compiler=Puppet::Parser::Compiler.new(node)
irb> scope=Puppet::Parser::Scope.new(compiler)
irb> scope.function_generate_mysql_url(...)

但是,我无法通过编译器:

irb(main):010:0> compiler=Puppet::Parser::Compiler.new(node) Puppet::Context::UndefinedBindingError:
     no 'environments' in
     {:current_environment=><Puppet::Node::Environment:17836720 @name="*root*" @manifest="no_manifest" @modulepath="" >,
      :root_environment=><Puppet::Node::Environment:17836720 @name="*root*" @manifest="no_manifest" @modulepath="" >}
     at top of [[0, nil, nil]]

我想我需要设置 "environment",或者我把 confdir 设置错了。

还有其他人对 irb 中的人偶模块进行过任何测试吗?

我无法直接访问人偶服务器。我已经在我的工作站(安装了 puppet-server 4.1)和客户端(安装了 puppet 3.6.2)上试过了。

这看起来很简单,但我显然遗漏了一些东西。

有人知道我错过了什么步骤吗?

这将是有人将您指向另一个工具的时候之一。如果你想做 Ruby 调试,你真的应该考虑使用 pry (http://pryrepl.org/) 来代替。

这是我在 Puppet / modules / Ruby 开发过程中使用的,使用起来超级简单。

在您的 Gemfile 中:

gem 'pry'
gem 'pry-stack_explorer'

if RUBY_VERSION =~ /^2/
  gem 'pry-byebug'
else
  gem 'pry-debugger'
end

好处:它适用于 Windows 以及其他任何地方(可能需要安装 DevKit)。

我不太确定你想要完成什么,但是有一个 puppet 语言的 puppet 调试器 repl,它与 pry/irb 非常相似,但特定于 puppet。

https://github.com/nwops/puppet-debugger

您可以使用调试器 运行 您的模块路径中当前可用的任何功能以及许多其他功能。

您还可以在 puppet 代码中设置断点,并使用 'debug::break()' 函数让它加载调试器。

Ruby Version: 2.0.0
Puppet Version: 4.9.4
Puppet Debugger Version: 0.6.0
Created by: NWOps
Type "exit", "functions", "vars", "krt", "whereami", "facts", "resources", "classes",
     "play", "classification", "types", "datatypes", "reset", or "help" for more information.

1:>> md5('sdafsd')
 => "569ebc3d91672e7d3dce25de1684d0c9"
2:>>