|
The `filetype` provider executes `crontab` using Puppet's execution API, which
returns ProcessOutput objects that inherit from String. See puppetlabs/puppet@732d450
The provider later uses String#gsub to strip off the HEADER. In Ruby 2.7, the
gsub method returns a new instance of ProcessOutput:
irb(main):002:0> Puppet::Util::Execution::ProcessOutput.new("# HEADER\n0 4 * * * /etc/init.d/script.sh\n", 0).gsub(/# HEADER/, '').class
=> Puppet::Util::Execution::ProcessOutput
If you later serialize the crontab entries to YAML using `puppet resource`, then
puppet warns about serializing unknown data types:
# puppet resource cron --to_yaml
Warning: Cron[unmanaged:/etc/init.d/script.sh-1]['command'] contains a Puppet::Util::Execution::ProcessOutput value. It will be converted to the String '/etc/init.d/script.sh'
This wasn't an issue with Ruby 3.2, because String#gsub always returns a String:
irb(main):002:0> Puppet::Util::Execution::ProcessOutput.new("# HEADER\n0 4 * * * /etc/init.d/script.sh\n", 0).gsub(/# HEADER/, '').class
=> String
This commit explicitly converts the ProcessOutput to a String so the provider
behaves consistently on all Ruby versions.
Fixes #61
|