I decided to file a ticket for this after we had already written the code. (Oops.) It's http://projects.puppetlabs.com/issues/5759
On Mon, Jan 3, 2011 at 4:31 PM, Jesse Wolfe <[email protected]> wrote: > Ruby's default #inspect method can lead to printing factorial-order > output for large graphs of objects. Since we have large graphs of > objects, this is not optimal. > This patch replaces a few well-connected objects' #inspect methods with > methods that produce reduced output, and are thus much faster. > > Paired-With: Nick Lewis <[email protected]> > Signed-off-by: Jesse Wolfe <[email protected]> > --- > lib/puppet/parser/ast.rb | 4 ++++ > lib/puppet/relationship.rb | 4 ++++ > lib/puppet/resource.rb | 4 ++++ > lib/puppet/resource/type_collection.rb | 4 ++++ > lib/puppet/simple_graph.rb | 4 ++++ > 5 files changed, 20 insertions(+), 0 deletions(-) > > diff --git a/lib/puppet/parser/ast.rb b/lib/puppet/parser/ast.rb > index 54e034a..a5aaedd 100644 > --- a/lib/puppet/parser/ast.rb > +++ b/lib/puppet/parser/ast.rb > @@ -19,6 +19,10 @@ class Puppet::Parser::AST > > attr_accessor :parent, :scope > > + def inspect > + "( #{self.class} #{self.to_s} #[email protected]} )" > + end > + > # don't fetch lexer comment by default > def use_docs > self.class.use_docs > diff --git a/lib/puppet/relationship.rb b/lib/puppet/relationship.rb > index 7079fb4..08d7d04 100644 > --- a/lib/puppet/relationship.rb > +++ b/lib/puppet/relationship.rb > @@ -71,6 +71,10 @@ class Puppet::Relationship > "#{source} => #{target}" > end > > + def inspect > + "{ #{source} => #{target} }" > + end > + > def to_pson_data_hash > data = { > 'source' => source.to_s, > diff --git a/lib/puppet/resource.rb b/lib/puppet/resource.rb > index 4f0d507..b0a3ece 100644 > --- a/lib/puppet/resource.rb > +++ b/lib/puppet/resource.rb > @@ -46,6 +46,10 @@ class Puppet::Resource > resource > end > > + def inspect > + "#...@type}[#{@title}]#{to_hash.inspect}" > + end > + > def to_pson_data_hash > data = ([:type, :title, :tags] + ATTRIBUTES).inject({}) do |hash, > param| > next hash unless value = self.send(param) > diff --git a/lib/puppet/resource/type_collection.rb > b/lib/puppet/resource/type_collection.rb > index 6a03458..277d37b 100644 > --- a/lib/puppet/resource/type_collection.rb > +++ b/lib/puppet/resource/type_collection.rb > @@ -19,6 +19,10 @@ class Puppet::Resource::TypeCollection > @watched_files = {} > end > > + def inspect > + "TypeCollection" + { :hostclasses => @hostclasses.keys, :definitions > => @definitions.keys, :nodes => @nodes.keys }.inspect > + end > + > def <<(thing) > add(thing) > self > diff --git a/lib/puppet/simple_graph.rb b/lib/puppet/simple_graph.rb > index 55b39fa..c5dac0f 100644 > --- a/lib/puppet/simple_graph.rb > +++ b/lib/puppet/simple_graph.rb > @@ -80,6 +80,10 @@ class Puppet::SimpleGraph > vertex.to_s > end > > + def inspect > + { :@adjacencies => @adjacencies, :@vertex => @vertex.to_s }.inspect > + end > + > private > > # These methods exist so we don't need a Hash with a default proc. > -- > 1.7.0.4 > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<puppet-dev%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/puppet-dev?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.
