Issue #7788 has been updated by Andrew Parker.
Putting this in causes a new stat call per gem installed:
<pre>
11430/0x341ea4: 5
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/ruby-hmac-0.4.0/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x79) = -1 Err#2
11430/0x341ea4: 3
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/nokogiri-1.5.5/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x78) = -1 Err#2
11430/0x341ea4: 2
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/net-ssh-2.5.2/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x77) = -1 Err#2
11430/0x341ea4: 2
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/net-scp-1.0.4/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x77) = -1 Err#2
11430/0x341ea4: 3
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/multi_json-1.3.6/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x7A) = -1 Err#2
11430/0x341ea4: 2
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/mime-types-1.19/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x79) = -1 Err#2
11430/0x341ea4: 2
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/guid-0.1.1/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x74) = -1 Err#2
11430/0x341ea4: 2
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/formatador-0.2.3/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x7A) = -1 Err#2
11430/0x341ea4: 2
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/fog-1.5.0/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x73) = -1 Err#2
11430/0x341ea4: 3
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/excon-0.16.1/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x76) = -1 Err#2
11430/0x341ea4: 3
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/example-function-1.0.0/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x80) = -1 Err#2
11430/0x341ea4: 3
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/cloud_provisioner-1.0.0/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x81) = -1 Err#2
11430/0x341ea4: 3
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@global/gems/bundler-1.1.1/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x72) = -1 Err#2
11430/0x341ea4: 2
stat64("/Users/andy/.rvm/gems/ruby-1.9.3-p125@gem-loading/gems/builder-3.0.0/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x77) = -1 Err#2
11430/0x341ea4: 3
stat64("/Users/andy/.puppet/modules/java_ks/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x56) = -1 Err#2
11430/0x341ea4: 3
stat64("/Users/andy/.puppet/modules/mount_providers/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x5E) = -1 Err#2
11430/0x341ea4: 2
stat64("/Users/andy/.puppet/modules/testing/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x56) = -1 Err#2
11430/0x341ea4: 5
stat64("/var/lib/puppet/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x42) = -1 Err#2
11430/0x341ea4: 13
stat64("/Users/andy/work/puppet/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106700, 0x4A) = 0 0
11430/0x341ea4: 12
stat64("/Users/andy/work/puppet/lib/puppet/indirector/instrumentation_data/local.rb\0",
0x7FFF67106FE0, 0x4A) = 0 0
</pre>
This may cause a significant slowdown for some users, but I don't see a way
around that if we want to load from a bunch of new paths.
----------------------------------------
Feature #7788: Puppet should allow rubygems to deliver new functionality
https://projects.puppetlabs.com/issues/7788#change-69594
Author: R.I. Pienaar
Status: Code Insufficient
Priority: Normal
Assignee: Patrick Carlisle
Category: plug-ins
Target version: 3.0.0
Affected Puppet version:
Keywords: rubygems autoloader
Branch:
https://github.com/kelseyhightower/puppet/tree/feature/3.0rc/autoloader_works_with_rubygems
It would be desirable to use Rubygems to install things like parser functions.
There might be cases where you only want a function on the master, pluginsync
would copy it everywhere and everywhere might not have the dependencies needed
to run it.
If the autoloader considered the rubygem search path while autoloading this
should allow gems to extend puppet.
Update: Just to be clear, this ticket is about whether Puppet should allow
rubygems as a delivery mechanism for Puppet extensions like parser functions,
Faces, types and more. If added in, you could deliver Puppet extensions via
modules with pluginsync and via installing a Ruby gem. Both the Puppet DSL and
Puppet's Ruby DSL would be untouched.
--
You have received this notification because you have either subscribed to it,
or are involved in it.
To change your notification preferences, please click here:
http://projects.puppetlabs.com/my/account
--
You received this message because you are subscribed to the Google Groups
"Puppet Bugs" 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-bugs?hl=en.