<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -4,15 +4,13 @@ module Rails
 
     RAILS_GEMS   = %w( actionpack activerecord actionmailer activesupport activeresource rails )
 
-    VENDOR_DIRS  = %w( vendor/gems vendor/rails )
+    VENDOR_DIRS  = %w( vendor/rails )
     SERVER_DIRS  = %w( lib/mongrel bin/mongrel
                        lib/passenger bin/passenger-spawn-server
                        lib/rack )
     RAILS_NOISE  = %w( script/server )
     RUBY_NOISE   = %w( rubygems/custom_require benchmark.rb )
 
-    GEMS_DIR     = Gem.default_dir
-
     ALL_NOISE    = VENDOR_DIRS + SERVER_DIRS + RAILS_NOISE + RUBY_NOISE
 
     def initialize
@@ -20,11 +18,25 @@ module Rails
       add_filter   { |line| line.sub(&quot;#{RAILS_ROOT}/&quot;, '') }
       add_filter   { |line| line.sub(ERB_METHOD_SIG, '') }
       add_filter   { |line| line.sub('./', '/') } # for tests
-      add_filter   { |line| line.sub(/(#{GEMS_DIR})\/gems\/([a-z]+)-([0-9.]+)\/(.*)/, '\2 (\3) \4')} # http://gist.github.com/30430
+
+      add_gem_filters
+
       add_silencer { |line| ALL_NOISE.any? { |dir| line.include?(dir) } }
       add_silencer { |line| RAILS_GEMS.any? { |gem| line =~ /^#{gem} / } }
       add_silencer { |line| line =~ %r(vendor/plugins/[^\/]+/lib) }
     end
+    
+    
+    private
+      def add_gem_filters
+        Gem.path.each do |path|
+          # http://gist.github.com/30430
+          add_filter { |line| line.sub(/(#{path})\/gems\/([a-z]+)-([0-9.]+)\/(.*)/, '\2 (\3) \4')}
+        end
+
+        vendor_gems_path = Rails::GemDependency.unpacked_path.sub(&quot;#{RAILS_ROOT}/&quot;,'')
+        add_filter { |line| line.sub(/(#{vendor_gems_path})\/([a-z]+)-([0-9.]+)\/(.*)/, '\2 (\3) [v] \4')}
+      end
   end
 
   # For installing the BacktraceCleaner in the test/unit</diff>
      <filename>railties/lib/rails/backtrace_cleaner.rb</filename>
    </modified>
    <modified>
      <diff>@@ -30,3 +30,32 @@ if defined? Test::Unit::Util::BacktraceFilter
 else
   $stderr.puts 'No BacktraceFilter for minitest'
 end
+
+class BacktraceCleanerVendorGemTest &lt; ActiveSupport::TestCase
+  def setup
+    @cleaner = Rails::BacktraceCleaner.new
+  end
+
+  test &quot;should format installed gems correctly&quot; do
+    @backtrace = [ &quot;#{Gem.default_dir}/gems/nosuchgem-1.2.3/lib/foo.rb&quot; ]
+    @result = @cleaner.clean(@backtrace)
+    assert_equal &quot;nosuchgem (1.2.3) lib/foo.rb&quot;, @result[0]
+  end
+
+  test &quot;should format installed gems not in Gem.default_dir correctly&quot; do
+    @target_dir = Gem.path.detect { |p| p != Gem.default_dir }
+    # skip this test if default_dir is the only directory on Gem.path
+    if @target_dir
+      @backtrace = [ &quot;#{@target_dir}/gems/nosuchgem-1.2.3/lib/foo.rb&quot; ]
+      @result = @cleaner.clean(@backtrace)
+      assert_equal &quot;nosuchgem (1.2.3) lib/foo.rb&quot;, @result[0]
+    end
+  end
+
+  test &quot;should format vendor gems correctly&quot; do
+    @backtrace = [ &quot;#{Rails::GemDependency.unpacked_path}/nosuchgem-1.2.3/lib/foo.rb&quot; ]
+    @result = @cleaner.clean(@backtrace)
+    assert_equal &quot;nosuchgem (1.2.3) [v] lib/foo.rb&quot;, @result[0]
+  end
+
+end</diff>
      <filename>railties/test/backtrace_cleaner_test.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a3e67a15edcdcfd2fd84f078cb3e2c76d0226794</id>
    </parent>
  </parents>
  <author>
    <name>Matt Jones</name>
    <email>al2o3cr@gmail.com</email>
  </author>
  <url>http://github.com/rails/rails/commit/0da8e45baf592bf715023c0553b9aefd15b86579</url>
  <id>0da8e45baf592bf715023c0553b9aefd15b86579</id>
  <committed-date>2009-03-09T04:49:58-07:00</committed-date>
  <authored-date>2009-03-05T12:48:56-08:00</authored-date>
  <message>Correctly clean backtraces from vendor/gems and gems in alternate install locations

Signed-off-by: David Heinemeier Hansson &lt;david@loudthinking.com&gt;</message>
  <tree>e8f14ea7b18debf5d7343f47274df73b51daf530</tree>
  <committer>
    <name>David Heinemeier Hansson</name>
    <email>david@loudthinking.com</email>
  </committer>
</commit>
