diff --git a/lib/sprockets-vendor_gems.rb b/lib/sprockets-vendor_gems.rb index 9f986a9..9ef9faf 100644 --- a/lib/sprockets-vendor_gems.rb +++ b/lib/sprockets-vendor_gems.rb @@ -9,7 +9,7 @@ module ::Sprockets paths = [] - Gem::Specification.each do |gemspec| + GemEnvironment.each do |gemspec| options[:paths].product(for_types).each do |base_dir, type| path = File.join(gemspec.gem_dir, base_dir, "assets", type.to_s) @@ -27,5 +27,19 @@ module ::Sprockets Sprockets.find_gem_vendor_paths.each { |path| append_path(path) } end end + + class GemEnvironment + extend Enumerable + + def self.gemspecs + Gem.loaded_specs.map(&:last) + end + + def self.each(&block) + return enum_for(:each) unless block_given? + + gemspecs.each {|spec| yield spec } + end + end end diff --git a/spec/sprockets-vendor_gems_spec.rb b/spec/sprockets-vendor_gems_spec.rb index 3d39330..28a480a 100644 --- a/spec/sprockets-vendor_gems_spec.rb +++ b/spec/sprockets-vendor_gems_spec.rb @@ -17,7 +17,7 @@ describe Sprockets do before do paths.each { |path| FileUtils.mkdir_p path } - Gem::Specification.stubs(:each).yields(gemspec) + Sprockets::GemEnvironment.stubs(:each).yields(gemspec) end subject { described_class.find_gem_vendor_paths }