sprockets_better_errors 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.travis.yml +16 -0
  4. data/Gemfile +25 -0
  5. data/README.md +90 -0
  6. data/Rakefile +26 -0
  7. data/lib/sprockets_better_errors.rb +5 -0
  8. data/lib/sprockets_better_errors/sprockets_rails_helper.rb +95 -0
  9. data/lib/sprockets_better_errors/sprockets_railtie.rb +9 -0
  10. data/lib/sprockets_better_errors/version.rb +3 -0
  11. data/sprockets_better_errors.gemspec +27 -0
  12. data/test/dummy/Rakefile +7 -0
  13. data/test/dummy/app/assets/images/.keep +0 -0
  14. data/test/dummy/app/assets/javascripts/application.js +13 -0
  15. data/test/dummy/app/assets/javascripts/no_erb_tag_error.js +1 -0
  16. data/test/dummy/app/assets/javascripts/no_reference_error.js.erb +1 -0
  17. data/test/dummy/app/assets/javascripts/not_precompiled.js +1 -0
  18. data/test/dummy/app/assets/javascripts/welcome.js.coffee +3 -0
  19. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  20. data/test/dummy/app/controllers/application_controller.rb +3 -0
  21. data/test/dummy/app/controllers/foo_controller.rb +8 -0
  22. data/test/dummy/app/helpers/application_helper.rb +2 -0
  23. data/test/dummy/app/views/foo/index.html +0 -0
  24. data/test/dummy/app/views/foo/no_erb_tag_error.html.erb +1 -0
  25. data/test/dummy/app/views/foo/no_reference_error.html.erb +1 -0
  26. data/test/dummy/app/views/foo/precompile_error.html.erb +1 -0
  27. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  28. data/test/dummy/config.ru +4 -0
  29. data/test/dummy/config/application.rb +46 -0
  30. data/test/dummy/config/boot.rb +10 -0
  31. data/test/dummy/config/database.yml +22 -0
  32. data/test/dummy/config/environment.rb +5 -0
  33. data/test/dummy/config/environments/development.rb +25 -0
  34. data/test/dummy/config/environments/production.rb +53 -0
  35. data/test/dummy/config/environments/test.rb +38 -0
  36. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  37. data/test/dummy/config/initializers/inflections.rb +10 -0
  38. data/test/dummy/config/initializers/mime_types.rb +5 -0
  39. data/test/dummy/config/initializers/secret_token.rb +7 -0
  40. data/test/dummy/config/initializers/session_store.rb +8 -0
  41. data/test/dummy/config/locales/en.yml +5 -0
  42. data/test/dummy/config/routes.rb +4 -0
  43. data/test/dummy/public/404.html +26 -0
  44. data/test/dummy/public/422.html +26 -0
  45. data/test/dummy/public/500.html +26 -0
  46. data/test/dummy/public/favicon.ico +0 -0
  47. data/test/dummy/public/index.html +1 -0
  48. data/test/dummy/script/rails +6 -0
  49. data/test/integration/precompile_raise_test.rb +25 -0
  50. data/test/route_inspector_test.rb +7 -0
  51. data/test/support/integration_case.rb +5 -0
  52. data/test/test_helper.rb +32 -0
  53. metadata +251 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 856eb151db798516f5fe5482814d5f911eb973ff
4
+ data.tar.gz: 8e77b89711280cd37ef117a910511d92a56e3ed4
5
+ SHA512:
6
+ metadata.gz: 4ed2b974f22765aa7282aaaa450160847027f9fa125f29adaebf34f3c442e511c6b38f51a307e1da962f7af1ec7558ee5cf0461d735d887bfa60df47c29f989f
7
+ data.tar.gz: c6d8ba938a6abd66c8b81dc4f67112c4a269a26f1923f7b05a675bdd067b66c5b7da3fc9477de3c94f44b1f84cd2bf79af736898a0f475db368ea3d4d5314f3c
@@ -0,0 +1,4 @@
1
+ *.log
2
+ *.gem
3
+ Gemfile.lock
4
+ tmp/
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - ruby-head
6
+ - jruby-19mode
7
+
8
+ env:
9
+ - "RAILS_VERSION=3.2.0"
10
+ - "RAILS_VERSION=4.0.1"
11
+ - "RAILS_VERSION=master"
12
+
13
+ matrix:
14
+ allow_failures:
15
+ - env: "RAILS_VERSION=master"
16
+ - rvm: ruby-head
data/Gemfile ADDED
@@ -0,0 +1,25 @@
1
+ source "https://rubygems.org"
2
+
3
+ rails_version = ENV["RAILS_VERSION"] || "default"
4
+
5
+
6
+ rails = case rails_version
7
+ when "master"
8
+ {github: "rails/rails"}
9
+ when "default"
10
+ ">= 4.0"
11
+ else
12
+ "~> #{rails_version}"
13
+ end
14
+
15
+ gem "rails", rails
16
+
17
+ if rails_version.include?("3.2")
18
+ gem 'sprockets', '2.2.2.backport2'
19
+ gem 'sprockets-rails', '2.0.0.backport1'
20
+ end
21
+
22
+ gem "sqlite3", :platform => [:ruby, :mswin, :mingw]
23
+ gem "activerecord-jdbcsqlite3-adapter", '>= 1.3.0.beta', :platform => :jruby
24
+
25
+ gemspec
@@ -0,0 +1,90 @@
1
+ # Sprockets Better Errors [![Build Status](https://travis-ci.org/schneems/sprockets_better_errors.png?branch=master)](https://travis-ci.org/schneems/sprockets_better_errors)
2
+
3
+ ## What
4
+
5
+ Errors, more of them, and better. For sprockets, specifically sprockets-rails. The goal of this library is to make it painfully obvious when you've done something wrong with the rails asset pipeline. Like what?
6
+
7
+ Let's say you're referencing an asset in your view
8
+
9
+ ```erb
10
+ <%= stylesheet "search.css" %>
11
+ ```
12
+
13
+ This works in development but you'll find if you're precompiling your assets that it won't work in production. Why? By default sprockets is configured only to precompile `application.css`. Wouldn't it have been great if you could have been warned in development before you pushed to production and your site broke?
14
+
15
+ ```
16
+ Asset filtered out and will not be served: add `config.assets.precompile += %w( search.js )` to `config/application.rb` and restart your server
17
+ ```
18
+
19
+ That would be AMAZING! Well this gem adds these types of helpful errors!
20
+
21
+ ## Compatibility
22
+
23
+ If you're using Rails 3.2 you will need to [enable the Rails 4 asset pipeline in Rails 3](https://discussion.heroku.com/t/using-the-rails-4-asset-pipeline-in-rails-3-apps-for-faster-deploys/205/3). Works out of the box with Rails 4.
24
+
25
+ ## Install
26
+
27
+ In your `Gemfile` add:
28
+
29
+ ```
30
+ gem 'sprockets_better_errors'
31
+ ```
32
+
33
+ Then run:
34
+
35
+ ```
36
+ $ bundle install
37
+ ```
38
+
39
+ Now develop with some sprockets super powers!
40
+
41
+
42
+ ## The Errors
43
+
44
+ We try to catch all mistakes but we're not perfect. Here's a list of the things we watch out for
45
+
46
+ ### Raise On Dev asset not in Precompile List
47
+
48
+ This is one of the most common asset errors I see at Heroku. We covered this error in the "Why" section above. Incase you're skipping around here's the run down:
49
+
50
+ Let's say you're referencing an asset in your view
51
+
52
+ ```erb
53
+ <%= stylesheet "search.css" %>
54
+ ```
55
+
56
+ This works in development but you'll find if you're precompiling your assets that it won't work in production. Why? By default sprockets is configured only to precompile `application.css`. Wouldn't it have been great if you could have been warned in development before you pushed to production and your site broke?
57
+
58
+ ```
59
+ Asset filtered out and will not be served: add `config.assets.precompile += %w( search.js )` to `config/application.rb` and restart your server
60
+ ```
61
+
62
+ Add this gem and you get that error.
63
+
64
+ ### Raise When Dependencies Improperly Used
65
+
66
+ This one may be a bit of an edge case for most people, but the difficulty in debugging (hours, days, weeks) is well worth the check.
67
+
68
+ If a dependency is used in an ERB asset that references another asset, it will not be updated when the reference asset is updated. The fix is to use `//= depend_on` or its cousin `//= depend_on_asset` however this is easy to forget. See rails/sprockets-rails#95 for more information.
69
+
70
+ Currently Rails/Sprockets hides this problem, and only surfaces it when the app is deployed with precompilation to production multiple times. We know that you will have this problem if you are referencing assets from within other assets and not declaring them as dependencies. This PR checks if you've declared a given file as a dependency before including it via `asset_path`. If not a helpful error is raised:
71
+
72
+ ```
73
+ Asset depends on 'bootstrap.js' to generate properly but has not declared the dependency
74
+ Please add: `//= depend_on_asset "bootstrap.js"` to '/Users/schneems/Documents/projects/codetriage/app/assets/javascripts/application.js.erb'
75
+ ```
76
+
77
+ Implementation is quite simple and limited to `helper.rb`, additional code is all around tests.
78
+
79
+
80
+ ## Upstream
81
+
82
+ Why not add this code upstream? I allready tried, there are several PR awaiting merge. If you found this Gem useful maybe give them a `:+1:`.
83
+
84
+ - [Raise On Dev asset not in Precompile list](https://github.com/rails/sprockets-rails/pull/84)
85
+ - [Raise on improper dependency use](https://github.com/rails/sprockets-rails/pull/96)
86
+ - Bonus, not mine: [Raise if ERB ](https://github.com/sstephenson/sprockets/pull/426)
87
+
88
+ ## License
89
+
90
+ MIT
@@ -0,0 +1,26 @@
1
+ # encoding: UTF-8
2
+ require 'rubygems'
3
+ require 'bundler'
4
+
5
+ begin
6
+ Bundler.setup(:default, :development, :test)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+
13
+ require 'rake'
14
+ require 'rdoc/task'
15
+
16
+ require 'rake/testtask'
17
+
18
+ Rake::TestTask.new(:test) do |t|
19
+ t.libs << 'lib'
20
+ t.libs << 'test'
21
+ t.pattern = 'test/**/*_test.rb'
22
+ t.verbose = false
23
+ end
24
+
25
+ task :default => :test
26
+
@@ -0,0 +1,5 @@
1
+ module SprocketsBetterErrors
2
+ end
3
+
4
+ require 'sprockets_better_errors/sprockets_rails_helper'
5
+ require 'sprockets_better_errors/sprockets_railtie'
@@ -0,0 +1,95 @@
1
+ module Sprockets::Rails::Helper
2
+
3
+ # == BEGIN Hacks for checking if dependencies are listed correctly
4
+ class DependencyError <StandardError
5
+ def initialize(path, dep)
6
+ msg = "Asset depends on '#{dep}' to generate properly but has not declared the dependency\n"
7
+ msg << "Please add: `//= depend_on_asset \"#{dep}\"` to '#{path}'"
8
+ super msg
9
+ end
10
+ end
11
+
12
+
13
+ def check_dependencies!(dep)
14
+ return unless @_dependency_assets
15
+ return if @_dependency_assets.detect { |asset| asset.include?(dep) }
16
+ raise DependencyError.new(self.pathname, dep)
17
+ end
18
+
19
+ alias :orig_compute_asset_path :compute_asset_path
20
+ def compute_asset_path(path, options = {})
21
+ check_dependencies!(path)
22
+ orig_compute_asset_path(path, options)
23
+ end
24
+
25
+ # == BEGIN Hacks for checking if asset is in precompile list
26
+
27
+ # support for Ruby 1.9.3 Rails 3.x
28
+ @_config = ActiveSupport::InheritableOptions.new({}) unless defined?(ActiveSupport::Configurable::Configuration)
29
+ include ActiveSupport::Configurable
30
+ config_accessor :precompile, :assets, :raise_asset_errors
31
+
32
+ class AssetNotPresentError < StandardError
33
+ def initialize(source)
34
+ msg = "Asset not present: " <<
35
+ "could not find '#{source}' in any asset directory"
36
+ super(msg)
37
+ end
38
+ end
39
+
40
+ class AssetFilteredError < StandardError
41
+ def initialize(source)
42
+ msg = "Asset filtered out and will not be served: " <<
43
+ "add `config.assets.precompile += %w( #{source} )` " <<
44
+ "to `config/application.rb` and restart your server"
45
+ super(msg)
46
+ end
47
+ end
48
+
49
+
50
+ alias :orig_asset_path :asset_path
51
+ def asset_path(source, options = {})
52
+ check_errors_for(source)
53
+ path_to_asset(source, options)
54
+ end
55
+
56
+ alias :orig_javascript_include_tag :javascript_include_tag
57
+ def javascript_include_tag(*args)
58
+ sources = args.dup
59
+ sources.extract_options!
60
+ sources.map do |source|
61
+ check_errors_for(source)
62
+ end
63
+ orig_javascript_include_tag(*args)
64
+ end
65
+
66
+ alias :orig_stylesheet_link_tag :stylesheet_link_tag
67
+ def stylesheet_link_tag(*args)
68
+ sources = args.dup
69
+ sources.extract_options!
70
+ sources.map do |source|
71
+ check_errors_for(source)
72
+ end
73
+ orig_stylesheet_link_tag(*args)
74
+ end
75
+
76
+ protected
77
+ # Raise errors when source does not exist or is not in the precomiled list
78
+ def check_errors_for(source)
79
+ return source unless Sprockets::Rails::Helper.raise_asset_errors
80
+ return source if ["all", "defaults"].include?(source.to_s)
81
+ return "" if source.blank?
82
+ return source if source =~ URI_REGEXP
83
+
84
+ asset = lookup_asset_for_path(source)
85
+ raise AssetNotPresentError.new(source) if asset.blank?
86
+ raise AssetFilteredError.new(source) if asset_needs_precompile?(source, asset.pathname.to_s)
87
+ end
88
+
89
+ # Returns true when an asset will not available after precompile is run
90
+ def asset_needs_precompile?(source, filename)
91
+ return true unless Sprockets::Rails::Helper.assets
92
+ return false if Sprockets::Rails::Helper.assets.send(:matches_filter, Sprockets::Rails::Helper.precompile || [], source, filename)
93
+ true
94
+ end
95
+ end
@@ -0,0 +1,9 @@
1
+ module Sprockets
2
+ class Railtie < ::Rails::Railtie
3
+ config.after_initialize do |app|
4
+ Sprockets::Rails::Helper.precompile ||= app.config.assets.precompile
5
+ Sprockets::Rails::Helper.assets ||= app.assets
6
+ Sprockets::Rails::Helper.raise_asset_errors = !::Rails.env.production?
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module SprocketsBetterErrors
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'sprockets_better_errors/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "sprockets_better_errors"
8
+ gem.version = SprocketsBetterErrors::VERSION
9
+ gem.authors = ["Richard Schneeman"]
10
+ gem.email = ["richard.schneeman+rubygems@gmail.com"]
11
+ gem.description = %q{ Raise now so you don't pay later }
12
+ gem.summary = %q{ Better sprockets errors in development so you'll know if things work before you push to production }
13
+ gem.homepage = "https://github.com/schneems/sprockets_better_errors"
14
+ gem.license = "MIT"
15
+
16
+ gem.files = `git ls-files`.split($/)
17
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
+ gem.require_paths = ["lib"]
20
+
21
+
22
+ gem.add_dependency 'sprockets-rails', ">= 1.0.0"
23
+ gem.add_development_dependency "capybara", ">= 0.4.0"
24
+ gem.add_development_dependency "launchy", "~> 2.1.0"
25
+ gem.add_development_dependency "poltergeist"
26
+ gem.add_development_dependency "rake"
27
+ end
@@ -0,0 +1,7 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require File.expand_path('../config/application', __FILE__)
5
+ require 'rake'
6
+
7
+ Dummy::Application.load_tasks
File without changes
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file.
9
+ //
10
+ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require_tree .
@@ -0,0 +1 @@
1
+ a = <%= 1 + 1 %>;
@@ -0,0 +1 @@
1
+ var foo = '<%= asset_path("application.css") %>';
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,13 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the top of the
9
+ * compiled file, but it's generally better to create a new file per style scope.
10
+ *
11
+ *= require_self
12
+ *= require_tree .
13
+ */
@@ -0,0 +1,3 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+ end
@@ -0,0 +1,8 @@
1
+ class FooController < ApplicationController
2
+ def index
3
+ end
4
+
5
+ def show
6
+ render "foo/#{params[:id]}"
7
+ end
8
+ end
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
File without changes
@@ -0,0 +1 @@
1
+ <%= asset_path('no_erb_tag_error.js') %>
@@ -0,0 +1 @@
1
+ <%= asset_path('no_reference_error.js') %>
@@ -0,0 +1 @@
1
+ <%= asset_path("not_precompiled.js") %>
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <%= stylesheet_link_tag :all %>
6
+ <%= javascript_include_tag :defaults %>
7
+ <%= csrf_meta_tag %>
8
+ </head>
9
+ <body>
10
+
11
+ <%= yield %>
12
+
13
+ </body>
14
+ </html>
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Dummy::Application
@@ -0,0 +1,46 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ Bundler.require
6
+
7
+ require "sprockets_better_errors"
8
+
9
+ module Dummy
10
+ class Application < Rails::Application
11
+ # Settings in config/environments/* take precedence over those specified here.
12
+ # Application configuration should go into files in config/initializers
13
+ # -- all .rb files in that directory are automatically loaded.
14
+
15
+ # Custom directories with classes and modules you want to be autoloadable.
16
+ # config.autoload_paths += %W(#{config.root}/extras)
17
+
18
+ # Only load the plugins named here, in the order given (default is alphabetical).
19
+ # :all can be used as a placeholder for all plugins not explicitly named.
20
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
21
+
22
+ # Activate observers that should always be running.
23
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
24
+
25
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
26
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
27
+ # config.time_zone = 'Central Time (US & Canada)'
28
+
29
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
30
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
31
+ # config.i18n.default_locale = :de
32
+
33
+ # JavaScript files you want as :defaults (application.js is always included).
34
+ # config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
35
+
36
+ config.assets.precompile += %w( no_reference_error.js no_erb_tag_error.js )
37
+
38
+ # Configure the default encoding used in templates for Ruby 1.9.
39
+ config.encoding = "utf-8"
40
+
41
+ # Configure sensitive parameters which will be filtered from the log file.
42
+ config.filter_parameters += [:password]
43
+
44
+ config.assets.enabled = true
45
+ end
46
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ if File.exist?(gemfile)
5
+ ENV['BUNDLE_GEMFILE'] = gemfile
6
+ require 'bundler'
7
+ Bundler.setup
8
+ end
9
+
10
+ $:.unshift File.expand_path('../../../../lib', __FILE__)
@@ -0,0 +1,22 @@
1
+ # SQLite version 3.x
2
+ # gem install sqlite3
3
+ development:
4
+ adapter: sqlite3
5
+ database: ":memory:"
6
+ pool: 5
7
+ timeout: 5000
8
+
9
+ # Warning: The database defined as "test" will be erased and
10
+ # re-generated from your development database when you run "rake".
11
+ # Do not set this db to the same as development or production.
12
+ test:
13
+ adapter: sqlite3
14
+ database: ":memory:"
15
+ pool: 5
16
+ timeout: 5000
17
+
18
+ production:
19
+ adapter: sqlite3
20
+ database: ":memory:"
21
+ pool: 5
22
+ timeout: 5000
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ Dummy::Application.initialize!
@@ -0,0 +1,25 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb
3
+
4
+ # In the development environment your application's code is reloaded on
5
+ # every request. This slows down response time but is perfect for development
6
+ # since you don't have to restart the webserver when you make code changes.
7
+ config.cache_classes = false
8
+
9
+ # Log error messages when you accidentally call methods on nil.
10
+ config.whiny_nils = true
11
+
12
+ # Show full error reports and disable caching
13
+ config.consider_all_requests_local = true
14
+ config.action_controller.perform_caching = false
15
+
16
+ # Don't care if the mailer can't send
17
+ config.action_mailer.raise_delivery_errors = false
18
+
19
+ # Print deprecation notices to the Rails logger
20
+ config.active_support.deprecation = :log
21
+
22
+ # Only use best-standards-support built into browsers
23
+ config.action_dispatch.best_standards_support = :builtin
24
+ end
25
+
@@ -0,0 +1,53 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb
3
+
4
+ # The production environment is meant for finished, "live" apps.
5
+ # Code is not reloaded between requests
6
+ config.cache_classes = true
7
+
8
+ # Full error reports are disabled and caching is turned on
9
+ config.consider_all_requests_local = false
10
+ config.action_controller.perform_caching = true
11
+
12
+ # Specifies the header that your server uses for sending files
13
+ config.action_dispatch.x_sendfile_header = "X-Sendfile"
14
+
15
+ # For nginx:
16
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
17
+
18
+ # If you have no front-end server that supports something like X-Sendfile,
19
+ # just comment this out and Rails will serve the files
20
+
21
+ # See everything in the log (default is :info)
22
+ # config.log_level = :debug
23
+
24
+ # Use a different logger for distributed setups
25
+ # config.logger = SyslogLogger.new
26
+
27
+ # Use a different cache store in production
28
+ # config.cache_store = :mem_cache_store
29
+
30
+ # Disable Rails's static asset server
31
+ # In production, Apache or nginx will already do this
32
+ config.serve_static_assets = false
33
+ # config.assets.precompile += %w( search.js )
34
+
35
+ # Generate digests for assets URLs
36
+ config.assets.digest = true
37
+
38
+ # Enable serving of images, stylesheets, and javascripts from an asset server
39
+ # config.action_controller.asset_host = "http://assets.example.com"
40
+
41
+ # Disable delivery errors, bad email addresses will be ignored
42
+ # config.action_mailer.raise_delivery_errors = false
43
+
44
+ # Enable threaded mode
45
+ # config.threadsafe!
46
+
47
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
48
+ # the I18n.default_locale when a translation can not be found)
49
+ config.i18n.fallbacks = true
50
+
51
+ # Send deprecation notices to registered listeners
52
+ config.active_support.deprecation = :notify
53
+ end
@@ -0,0 +1,38 @@
1
+ Dummy::Application.configure do
2
+ # Settings specified here will take precedence over those in config/application.rb
3
+
4
+ # The test environment is used exclusively to run your application's
5
+ # test suite. You never need to work with it otherwise. Remember that
6
+ # your test database is "scratch space" for the test suite and is wiped
7
+ # and recreated between test runs. Don't rely on the data there!
8
+ config.cache_classes = true
9
+
10
+ # Log error messages when you accidentally call methods on nil.
11
+ config.whiny_nils = true
12
+
13
+ # Show full error reports and disable caching
14
+ config.consider_all_requests_local = true
15
+ config.action_controller.perform_caching = false
16
+
17
+ # Raise exceptions instead of rendering exception templates
18
+ config.action_dispatch.show_exceptions = false
19
+
20
+ # Disable request forgery protection in test environment
21
+ config.action_controller.allow_forgery_protection = false
22
+
23
+ # Generate digests for assets URLs
24
+ config.assets.digest = true
25
+
26
+ # Tell Action Mailer not to deliver emails to the real world.
27
+ # The :test delivery method accumulates sent emails in the
28
+ # ActionMailer::Base.deliveries array.
29
+ config.action_mailer.delivery_method = :test
30
+
31
+ # Use SQL instead of Active Record's schema dumper when creating the test database.
32
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
33
+ # like if you have constraints or database-specific column types
34
+ # config.active_record.schema_format = :sql
35
+
36
+ # Print deprecation notices to the stderr
37
+ config.active_support.deprecation = :stderr
38
+ end
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4
+ # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
+
6
+ # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
+ # Rails.backtrace_cleaner.remove_silencers!
@@ -0,0 +1,10 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new inflection rules using the following format
4
+ # (all these examples are active by default):
5
+ # ActiveSupport::Inflector.inflections do |inflect|
6
+ # inflect.plural /^(ox)$/i, '\1en'
7
+ # inflect.singular /^(ox)en/i, '\1'
8
+ # inflect.irregular 'person', 'people'
9
+ # inflect.uncountable %w( fish sheep )
10
+ # end
@@ -0,0 +1,5 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Add new mime types for use in respond_to blocks:
4
+ # Mime::Type.register "text/richtext", :rtf
5
+ # Mime::Type.register_alias "text/html", :iphone
@@ -0,0 +1,7 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+ # Make sure the secret is at least 30 characters and all random,
6
+ # no regular words or you'll be exposed to dictionary attacks.
7
+ Dummy::Application.config.secret_token = 'bedc31c5fff702ea808045bbbc5123455f1c00ecd005a1f667a5f04332100a6abf22cfcee2b3d39b8f677c03bb6503cf1c3b65c1287b9e13bd0d20c6431ec6ab'
@@ -0,0 +1,8 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ Dummy::Application.config.session_store :cookie_store, :key => '_dummy_session'
4
+
5
+ # Use the database for sessions instead of the cookie-based default,
6
+ # which shouldn't be used to store highly confidential information
7
+ # (create the session table with "rails generate session_migration")
8
+ # Dummy::Application.config.session_store :active_record_store
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: "Hello world"
@@ -0,0 +1,4 @@
1
+ Dummy::Application.routes.draw do
2
+ resources :foo
3
+ resources :bar
4
+ end
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/404.html -->
21
+ <div class="dialog">
22
+ <h1>The page you were looking for doesn't exist.</h1>
23
+ <p>You may have mistyped the address or the page may have moved.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/422.html -->
21
+ <div class="dialog">
22
+ <h1>The change you wanted was rejected.</h1>
23
+ <p>Maybe you tried to change something you didn't have access to.</p>
24
+ </div>
25
+ </body>
26
+ </html>
@@ -0,0 +1,26 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <style type="text/css">
6
+ body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
+ div.dialog {
8
+ width: 25em;
9
+ padding: 0 4em;
10
+ margin: 4em auto 0 auto;
11
+ border: 1px solid #ccc;
12
+ border-right-color: #999;
13
+ border-bottom-color: #999;
14
+ }
15
+ h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <!-- This file lives in public/500.html -->
21
+ <div class="dialog">
22
+ <h1>We're sorry, but something went wrong.</h1>
23
+ <p>We've been notified about this issue and we'll take a look at it shortly.</p>
24
+ </div>
25
+ </body>
26
+ </html>
File without changes
@@ -0,0 +1 @@
1
+ home
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,25 @@
1
+ require 'test_helper'
2
+
3
+ class InheritNavigationTest < ActiveSupport::IntegrationCase
4
+
5
+ test 'reference an asset not specified in precompile list' do
6
+ error = assert_raise(ActionView::Template::Error) do
7
+ visit('/foo/precompile_error')
8
+ end
9
+ assert_match "not_precompiled.js", error.message
10
+ end
11
+
12
+ test 'fails if assets are not properly defining dependencies' do
13
+ error = assert_raise(ActionView::Template::Error) do
14
+ visit('/foo/no_reference_error')
15
+ end
16
+ assert_match "depends on 'application.css'", error.message
17
+ end
18
+
19
+ # test 'erb' do
20
+ # error = assert_raise(ActionView::Template::Error) do
21
+ # visit('/foo/no_erb_tag_error')
22
+ # end
23
+ # end
24
+
25
+ end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class SprocketsBetterErrorsTest < ActiveSupport::TestCase
4
+ test "truth" do
5
+ assert_kind_of Module, ::SprocketsBetterErrors
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ # Define a bare test case to use with Capybara
2
+ class ActiveSupport::IntegrationCase < ActiveSupport::TestCase
3
+ include Capybara::DSL
4
+ include Rails.application.routes.url_helpers
5
+ end
@@ -0,0 +1,32 @@
1
+
2
+ # Configure Rails Envinronment
3
+ ENV["RAILS_ENV"] = "test"
4
+
5
+
6
+
7
+ ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')
8
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
9
+ require "rails/test_help"
10
+
11
+
12
+
13
+
14
+ ActionMailer::Base.delivery_method = :test
15
+ ActionMailer::Base.perform_deliveries = true
16
+ ActionMailer::Base.default_url_options[:host] = "test.com"
17
+
18
+ Rails.backtrace_cleaner.remove_silencers!
19
+
20
+ # Configure capybara for integration testing
21
+ require "capybara/rails"
22
+ require 'capybara/poltergeist'
23
+ Capybara.javascript_driver = :poltergeist
24
+ Capybara.default_selector = :css
25
+
26
+
27
+
28
+ # Run any available migration
29
+ ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
30
+
31
+ # Load support files
32
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
metadata ADDED
@@ -0,0 +1,251 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sprockets_better_errors
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Richard Schneeman
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-11-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: sprockets-rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: capybara
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.4.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.4.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: launchy
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.1.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: poltergeist
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: ' Raise now so you don''t pay later '
84
+ email:
85
+ - richard.schneeman+rubygems@gmail.com
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - .gitignore
91
+ - .travis.yml
92
+ - Gemfile
93
+ - README.md
94
+ - Rakefile
95
+ - lib/sprockets_better_errors.rb
96
+ - lib/sprockets_better_errors/sprockets_rails_helper.rb
97
+ - lib/sprockets_better_errors/sprockets_railtie.rb
98
+ - lib/sprockets_better_errors/version.rb
99
+ - sprockets_better_errors.gemspec
100
+ - test/dummy/Rakefile
101
+ - test/dummy/app/assets/images/.keep
102
+ - test/dummy/app/assets/javascripts/application.js
103
+ - test/dummy/app/assets/javascripts/no_erb_tag_error.js
104
+ - test/dummy/app/assets/javascripts/no_reference_error.js.erb
105
+ - test/dummy/app/assets/javascripts/not_precompiled.js
106
+ - test/dummy/app/assets/javascripts/welcome.js.coffee
107
+ - test/dummy/app/assets/stylesheets/application.css
108
+ - test/dummy/app/controllers/application_controller.rb
109
+ - test/dummy/app/controllers/foo_controller.rb
110
+ - test/dummy/app/helpers/application_helper.rb
111
+ - test/dummy/app/views/foo/index.html
112
+ - test/dummy/app/views/foo/no_erb_tag_error.html.erb
113
+ - test/dummy/app/views/foo/no_reference_error.html.erb
114
+ - test/dummy/app/views/foo/precompile_error.html.erb
115
+ - test/dummy/app/views/layouts/application.html.erb
116
+ - test/dummy/config.ru
117
+ - test/dummy/config/application.rb
118
+ - test/dummy/config/boot.rb
119
+ - test/dummy/config/database.yml
120
+ - test/dummy/config/environment.rb
121
+ - test/dummy/config/environments/development.rb
122
+ - test/dummy/config/environments/production.rb
123
+ - test/dummy/config/environments/test.rb
124
+ - test/dummy/config/initializers/backtrace_silencers.rb
125
+ - test/dummy/config/initializers/inflections.rb
126
+ - test/dummy/config/initializers/mime_types.rb
127
+ - test/dummy/config/initializers/secret_token.rb
128
+ - test/dummy/config/initializers/session_store.rb
129
+ - test/dummy/config/locales/en.yml
130
+ - test/dummy/config/routes.rb
131
+ - test/dummy/public/404.html
132
+ - test/dummy/public/422.html
133
+ - test/dummy/public/500.html
134
+ - test/dummy/public/favicon.ico
135
+ - test/dummy/public/index.html
136
+ - test/dummy/script/rails
137
+ - test/dummy/tmp/capybara/capybara-201311081652534466693170.html
138
+ - test/dummy/tmp/capybara/capybara-201311081654135123748192.html
139
+ - test/dummy/tmp/capybara/capybara-201311081656053021254170.html
140
+ - test/dummy/tmp/capybara/capybara-201311081656457051701013.html
141
+ - test/dummy/tmp/capybara/capybara-201311081659485877638897.html
142
+ - test/dummy/tmp/capybara/capybara-201311081700172970244208.html
143
+ - test/dummy/tmp/capybara/capybara-201311081700599079106420.html
144
+ - test/dummy/tmp/capybara/capybara-201311081701386395720887.html
145
+ - test/dummy/tmp/capybara/capybara-201311081710273253101711.html
146
+ - test/dummy/tmp/capybara/capybara-20131108171106624789610.html
147
+ - test/dummy/tmp/capybara/capybara-201311081712048792320330.html
148
+ - test/dummy/tmp/capybara/capybara-201311081712211232801645.html
149
+ - test/dummy/tmp/capybara/capybara-201311081713141534596918.html
150
+ - test/dummy/tmp/capybara/capybara-201311081713239549389443.html
151
+ - test/dummy/tmp/capybara/capybara-201311081713578623637052.html
152
+ - test/dummy/tmp/capybara/capybara-20131108171444164374684.html
153
+ - test/dummy/tmp/capybara/capybara-201311081715138372476507.html
154
+ - test/dummy/tmp/capybara/capybara-201311091505244823849905.html
155
+ - test/dummy/tmp/capybara/capybara-201311091530174187311595.html
156
+ - test/dummy/tmp/capybara/capybara-201311091608397964104129.html
157
+ - test/dummy/tmp/capybara/capybara-20131109160958397538938.html
158
+ - test/dummy/tmp/capybara/capybara-201311091626051738950286.html
159
+ - test/integration/precompile_raise_test.rb
160
+ - test/route_inspector_test.rb
161
+ - test/support/integration_case.rb
162
+ - test/test_helper.rb
163
+ homepage: https://github.com/schneems/sprockets_better_errors
164
+ licenses:
165
+ - MIT
166
+ metadata: {}
167
+ post_install_message:
168
+ rdoc_options: []
169
+ require_paths:
170
+ - lib
171
+ required_ruby_version: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ requirements: []
182
+ rubyforge_project:
183
+ rubygems_version: 2.0.3
184
+ signing_key:
185
+ specification_version: 4
186
+ summary: Better sprockets errors in development so you'll know if things work before
187
+ you push to production
188
+ test_files:
189
+ - test/dummy/Rakefile
190
+ - test/dummy/app/assets/images/.keep
191
+ - test/dummy/app/assets/javascripts/application.js
192
+ - test/dummy/app/assets/javascripts/no_erb_tag_error.js
193
+ - test/dummy/app/assets/javascripts/no_reference_error.js.erb
194
+ - test/dummy/app/assets/javascripts/not_precompiled.js
195
+ - test/dummy/app/assets/javascripts/welcome.js.coffee
196
+ - test/dummy/app/assets/stylesheets/application.css
197
+ - test/dummy/app/controllers/application_controller.rb
198
+ - test/dummy/app/controllers/foo_controller.rb
199
+ - test/dummy/app/helpers/application_helper.rb
200
+ - test/dummy/app/views/foo/index.html
201
+ - test/dummy/app/views/foo/no_erb_tag_error.html.erb
202
+ - test/dummy/app/views/foo/no_reference_error.html.erb
203
+ - test/dummy/app/views/foo/precompile_error.html.erb
204
+ - test/dummy/app/views/layouts/application.html.erb
205
+ - test/dummy/config.ru
206
+ - test/dummy/config/application.rb
207
+ - test/dummy/config/boot.rb
208
+ - test/dummy/config/database.yml
209
+ - test/dummy/config/environment.rb
210
+ - test/dummy/config/environments/development.rb
211
+ - test/dummy/config/environments/production.rb
212
+ - test/dummy/config/environments/test.rb
213
+ - test/dummy/config/initializers/backtrace_silencers.rb
214
+ - test/dummy/config/initializers/inflections.rb
215
+ - test/dummy/config/initializers/mime_types.rb
216
+ - test/dummy/config/initializers/secret_token.rb
217
+ - test/dummy/config/initializers/session_store.rb
218
+ - test/dummy/config/locales/en.yml
219
+ - test/dummy/config/routes.rb
220
+ - test/dummy/public/404.html
221
+ - test/dummy/public/422.html
222
+ - test/dummy/public/500.html
223
+ - test/dummy/public/favicon.ico
224
+ - test/dummy/public/index.html
225
+ - test/dummy/script/rails
226
+ - test/dummy/tmp/capybara/capybara-201311081652534466693170.html
227
+ - test/dummy/tmp/capybara/capybara-201311081654135123748192.html
228
+ - test/dummy/tmp/capybara/capybara-201311081656053021254170.html
229
+ - test/dummy/tmp/capybara/capybara-201311081656457051701013.html
230
+ - test/dummy/tmp/capybara/capybara-201311081659485877638897.html
231
+ - test/dummy/tmp/capybara/capybara-201311081700172970244208.html
232
+ - test/dummy/tmp/capybara/capybara-201311081700599079106420.html
233
+ - test/dummy/tmp/capybara/capybara-201311081701386395720887.html
234
+ - test/dummy/tmp/capybara/capybara-201311081710273253101711.html
235
+ - test/dummy/tmp/capybara/capybara-20131108171106624789610.html
236
+ - test/dummy/tmp/capybara/capybara-201311081712048792320330.html
237
+ - test/dummy/tmp/capybara/capybara-201311081712211232801645.html
238
+ - test/dummy/tmp/capybara/capybara-201311081713141534596918.html
239
+ - test/dummy/tmp/capybara/capybara-201311081713239549389443.html
240
+ - test/dummy/tmp/capybara/capybara-201311081713578623637052.html
241
+ - test/dummy/tmp/capybara/capybara-20131108171444164374684.html
242
+ - test/dummy/tmp/capybara/capybara-201311081715138372476507.html
243
+ - test/dummy/tmp/capybara/capybara-201311091505244823849905.html
244
+ - test/dummy/tmp/capybara/capybara-201311091530174187311595.html
245
+ - test/dummy/tmp/capybara/capybara-201311091608397964104129.html
246
+ - test/dummy/tmp/capybara/capybara-20131109160958397538938.html
247
+ - test/dummy/tmp/capybara/capybara-201311091626051738950286.html
248
+ - test/integration/precompile_raise_test.rb
249
+ - test/route_inspector_test.rb
250
+ - test/support/integration_case.rb
251
+ - test/test_helper.rb