diff options
| author | Josh Cooper <josh@puppetlabs.com> | 2011-04-26 14:02:48 -0700 |
|---|---|---|
| committer | Josh Cooper <josh@puppetlabs.com> | 2011-04-26 14:02:48 -0700 |
| commit | f656818bcd7cb88f24f6c578790771952120b1cc (patch) | |
| tree | e94cade5981c9cabfe747ea62a42763b7a27b945 /lib | |
| parent | 0b9c7adce13cad4325d514f9d97562364042319c (diff) | |
(#4487) When setting environment on a host, ensure it is a string.
Before this change when environment strings were read out of the storeconfigs
database, they were eventually converted up to Puppet::Node::Environment
objects. When these objects are returned to the storeconfigs database,
ActiveRecord dumps them as YAML, which begins the death-spiral of YAML.
This change makes it so the host will always store the environment as a string,
preventing the Puppet::Node::Environment object from being YAMLized, and stored
as such in the database.
This change was based on one by Richard Crowley.
Paired-with: Jacob Helwig <jacob@puppetlabs.com>
Reviewed-by: Jesse Wolfe <jesse@puppetlabs.com>
Signed-off-by: Richard Crowley <r@rcrowley.org>
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/puppet/rails/host.rb | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/puppet/rails/host.rb b/lib/puppet/rails/host.rb index b9dea2a3d..e5360217c 100644 --- a/lib/puppet/rails/host.rb +++ b/lib/puppet/rails/host.rb @@ -1,3 +1,4 @@ +require 'puppet/node/environment' require 'puppet/rails' require 'puppet/rails/resource' require 'puppet/rails/fact_name' @@ -28,6 +29,12 @@ class Puppet::Rails::Host < ActiveRecord::Base host end + # Override the setter for environment to force it to be a string, lest it + # be YAML encoded. See #4487. + def environment=(value) + super value.to_s + end + # returns a hash of fact_names.name => [ fact_values ] for this host. # Note that 'fact_values' is actually a list of the value instances, not # just actual values. |
