middleman-more 3.0.0.beta.1 → 3.0.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. data/Rakefile +1 -0
  2. data/features/asset_hash.feature +84 -0
  3. data/features/cache_buster.feature +5 -4
  4. data/features/coffee-script.feature +2 -2
  5. data/features/compass-sprites.feature +6 -0
  6. data/features/gzip.feature +21 -0
  7. data/features/{ignore_already_minified.features → ignore_already_minified.feature} +0 -0
  8. data/features/minify_css.feature +50 -2
  9. data/features/minify_javascript.feature +89 -6
  10. data/features/relative_assets.feature +47 -6
  11. data/features/sass_partials.feature +5 -1
  12. data/features/sprockets_gems.feature +7 -2
  13. data/fixtures/asset-hash-app/config.rb +8 -0
  14. data/fixtures/asset-hash-app/source/images/100px.gif +0 -0
  15. data/fixtures/asset-hash-app/source/images/100px.jpg +0 -0
  16. data/fixtures/asset-hash-app/source/images/100px.png +0 -0
  17. data/fixtures/asset-hash-app/source/index.html.erb +308 -0
  18. data/fixtures/asset-hash-app/source/javascripts/application.js +8 -0
  19. data/fixtures/asset-hash-app/source/layout.erb +18 -0
  20. data/fixtures/asset-hash-app/source/other.html.erb +2 -0
  21. data/fixtures/asset-hash-app/source/partials.html.erb +1 -0
  22. data/fixtures/asset-hash-app/source/stylesheets/_partial.sass +2 -0
  23. data/fixtures/asset-hash-app/source/stylesheets/site.css.scss +4 -0
  24. data/fixtures/asset-hash-app/source/stylesheets/uses_partials.css.sass +4 -0
  25. data/fixtures/asset-hash-app/source/subdir/index.html.erb +308 -0
  26. data/fixtures/asset-hash-host-app/config.rb +6 -0
  27. data/fixtures/asset-hash-host-app/source/images/100px.gif +0 -0
  28. data/fixtures/asset-hash-host-app/source/images/100px.jpg +0 -0
  29. data/fixtures/asset-hash-host-app/source/images/100px.png +0 -0
  30. data/fixtures/asset-hash-host-app/source/index.html.erb +6 -0
  31. data/fixtures/asset-hash-host-app/source/layout.erb +17 -0
  32. data/fixtures/asset-hash-host-app/source/other.html.erb +2 -0
  33. data/fixtures/asset-hash-host-app/source/stylesheets/site.css.scss +4 -0
  34. data/fixtures/asset-hash-host-app/source/subdir/index.html.erb +6 -0
  35. data/fixtures/cache-buster-app/source/cache-buster.html.erb +2 -1
  36. data/fixtures/compass-sprites-app/config.rb +0 -0
  37. data/fixtures/compass-sprites-app/source/images/icon/arrow_down.png +0 -0
  38. data/fixtures/compass-sprites-app/source/images/icon/arrow_left.png +0 -0
  39. data/fixtures/compass-sprites-app/source/images/icon/arrow_right.png +0 -0
  40. data/fixtures/compass-sprites-app/source/images/icon/arrow_up.png +0 -0
  41. data/fixtures/compass-sprites-app/source/stylesheets/site.css.scss +3 -0
  42. data/fixtures/gzip-app/config.rb +1 -0
  43. data/fixtures/gzip-app/source/index.html +0 -0
  44. data/fixtures/gzip-app/source/javascripts/test.js +1 -0
  45. data/fixtures/gzip-app/source/stylesheets/test.css +1 -0
  46. data/fixtures/minify-css-app/source/inline-css.html.haml +5 -0
  47. data/fixtures/minify-css-app/source/more-css/site.css +3 -0
  48. data/fixtures/minify-css-app/source/stylesheets/site.css.sass +5 -1
  49. data/fixtures/minify-js-app/config.rb +1 -1
  50. data/fixtures/minify-js-app/source/inline-js.html.haml +22 -1
  51. data/fixtures/minify-js-app/source/more-js/other.js +8 -0
  52. data/fixtures/passthrough-app/config.rb +4 -4
  53. data/fixtures/passthrough-app/source/inline-css.html.haml +5 -4
  54. data/fixtures/passthrough-app/source/inline-js.html.haml +22 -1
  55. data/fixtures/relative-assets-app/config.rb +1 -0
  56. data/fixtures/relative-assets-app/source/relative_image.html.erb +8 -1
  57. data/fixtures/sprockets-app/source/library/js/vendored_include.js +1 -0
  58. data/fixtures/sprockets-app/vendor/assets/javascripts/vendored_js.js +1 -0
  59. data/lib/middleman-more.rb +23 -9
  60. data/lib/middleman-more/core_extensions/compass.rb +22 -38
  61. data/lib/middleman-more/core_extensions/sprockets.rb +41 -123
  62. data/lib/middleman-more/extensions/asset_hash.rb +132 -0
  63. data/lib/middleman-more/extensions/cache_buster.rb +5 -6
  64. data/lib/middleman-more/extensions/gzip.rb +57 -0
  65. data/lib/middleman-more/extensions/minify_css.rb +73 -7
  66. data/lib/middleman-more/extensions/minify_css/rainpress.rb +168 -0
  67. data/lib/middleman-more/extensions/minify_javascript.rb +45 -21
  68. data/lib/middleman-more/extensions/relative_assets.rb +2 -1
  69. data/lib/middleman-more/renderers/haml.rb +4 -0
  70. data/lib/middleman-more/renderers/liquid.rb +6 -1
  71. data/lib/middleman-more/renderers/markdown.rb +10 -1
  72. data/lib/middleman-more/renderers/sass.rb +12 -6
  73. data/lib/middleman-more/renderers/slim.rb +5 -0
  74. data/middleman-more.gemspec +9 -9
  75. metadata +192 -178
  76. data/lib/middleman-more/extensions/minify_css/cssmin.rb +0 -55
@@ -0,0 +1,6 @@
1
+
2
+ activate :asset_hash
3
+ activate :directory_indexes
4
+ activate :asset_host
5
+
6
+ set :asset_host, 'http://middlemanapp.com'
@@ -0,0 +1,6 @@
1
+ <% content_for :head do %>
2
+ <title>The Middleman!</title>
3
+ <% end %>
4
+
5
+ <h2>Image url:</h2>
6
+ <%= image_tag('100px.jpg') %>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+
6
+ <%= stylesheet_link_tag "site" %>
7
+ <%= yield_content :head %>
8
+ </head>
9
+
10
+ <body class="<%= page_classes %>">
11
+
12
+ <div id="main" role="main">
13
+ <%= yield %>
14
+ </div>
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,2 @@
1
+ <h2>Image url:</h2>
2
+ <img src="<%= image_path('100px.jpg') %>">
@@ -0,0 +1,4 @@
1
+ #main {
2
+ padding: 50px;
3
+ background-image: image-url('100px.jpg');
4
+ }
@@ -0,0 +1,6 @@
1
+ <% content_for :head do %>
2
+ <title>The Middleman!</title>
3
+ <% end %>
4
+
5
+ <h2>Image url:</h2>
6
+ <%= image_tag('100px.jpg') %>
@@ -1,2 +1,3 @@
1
1
  <%= stylesheet_link_tag "site.css" %>
2
- <%= javascript_include_tag "empty-with-include.js" %>
2
+ <%= javascript_include_tag "empty-with-include.js" %>
3
+ <%= image_tag "blank.gif" %>
File without changes
@@ -0,0 +1,3 @@
1
+ @import "compass";
2
+ @import "icon/*.png";
3
+ @include all-icon-sprites;
@@ -0,0 +1 @@
1
+ activate :gzip
File without changes
@@ -0,0 +1 @@
1
+ function test_function() {}
@@ -0,0 +1 @@
1
+ test_selector {}
@@ -0,0 +1,5 @@
1
+ :css
2
+ body {
3
+ test: style;
4
+ good: deal;
5
+ }
@@ -0,0 +1,3 @@
1
+ body {
2
+ display: block;
3
+ }
@@ -1 +1,5 @@
1
- @import "compass/reset"
1
+ @import "compass/reset"
2
+
3
+ @media handheld, only screen and (device-width: 768px)
4
+ body
5
+ display: block
@@ -1 +1 @@
1
- require "coffee-filter"
1
+ require "coffee-filter"
@@ -4,4 +4,25 @@
4
4
  should();
5
5
  all.be();
6
6
  on = { one: line };
7
- })();
7
+ })();
8
+
9
+ %script
10
+ :plain
11
+ ;(function() {
12
+ this;
13
+ should();
14
+ too();
15
+ })();
16
+
17
+ %script(type="text/javascript")
18
+ :plain
19
+ //<!--
20
+ ;(function() {
21
+ one;
22
+ line();
23
+ here();
24
+ })();
25
+ //-->
26
+
27
+ %script(type="text/html")
28
+ I'm a jQuery {{template}}.
@@ -0,0 +1,8 @@
1
+ var race;
2
+ var __slice = Array.prototype.slice;
3
+
4
+ race = function() {
5
+ var runners, winner;
6
+ winner = arguments[0], runners = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
7
+ return print(winner, runners);
8
+ };
@@ -4,14 +4,14 @@ module ::PassThrough
4
4
  end
5
5
  end
6
6
 
7
- set :js_compressor, ::PassThrough
8
- set :css_compressor, ::PassThrough
9
-
10
7
  activate :minify_javascript
11
8
  activate :minify_css
12
9
 
10
+ set :js_compressor, ::PassThrough
11
+ set :css_compressor, ::PassThrough
12
+
13
13
  with_layout false do
14
14
  page "/inline-css.html"
15
15
  page "/inline-js.html"
16
16
  page "/inline-coffeescript.html"
17
- end
17
+ end
@@ -1,4 +1,5 @@
1
- :sass
2
- body
3
- test: style
4
- good: deal
1
+ %style(type="text/css")
2
+ :sass
3
+ body
4
+ test: style
5
+ good: deal
@@ -4,4 +4,25 @@
4
4
  should();
5
5
  all.be();
6
6
  on = { one: line };
7
- })();
7
+ })();
8
+
9
+ %script
10
+ :plain
11
+ ;(function() {
12
+ this;
13
+ should();
14
+ too();
15
+ })();
16
+
17
+ %script(type="text/javascript")
18
+ :plain
19
+ //<!--
20
+ ;(function() {
21
+ one;
22
+ line();
23
+ here();
24
+ })();
25
+ //-->
26
+
27
+ %script(type="text/html")
28
+ I'm a jQuery {{template}}.
@@ -0,0 +1 @@
1
+ # activate :relative_assets
@@ -1 +1,8 @@
1
- <%= image_tag "blank.gif" %>
1
+ <html>
2
+ <head>
3
+ <%= stylesheet_link_tag :relative_assets %>
4
+ </head>
5
+ <body>
6
+ <%= image_tag "blank.gif" %>
7
+ </body>
8
+ </html>
@@ -0,0 +1 @@
1
+ //= require "vendored_js"
@@ -0,0 +1 @@
1
+ var vendored_js_included = true;
@@ -16,6 +16,7 @@ module Middleman
16
16
  autoload :Slim, "middleman-more/renderers/slim"
17
17
  end
18
18
 
19
+ # Core (automatic) extensions
19
20
  module CoreExtensions
20
21
  # Compass framework for Sass
21
22
  autoload :Compass, "middleman-more/core_extensions/compass"
@@ -23,7 +24,8 @@ module Middleman
23
24
  # Sprockets 2
24
25
  autoload :Sprockets, "middleman-more/core_extensions/sprockets"
25
26
  end
26
-
27
+
28
+ # User-activatable extensions
27
29
  module Extensions
28
30
  # RelativeAssets allow any asset path in dynamic templates to be either
29
31
  # relative to the root of the project or use an absolute URL.
@@ -33,25 +35,33 @@ module Middleman
33
35
  # browser caches failing to update to your new content.
34
36
  autoload :CacheBuster, "middleman-more/extensions/cache_buster"
35
37
 
38
+ # AssetHash appends a hash of the file contents to the assets filename
39
+ # to avoid browser caches failing to update to your new content.
40
+ autoload :AssetHash, "middleman-more/extensions/asset_hash"
41
+
36
42
  # MinifyCss uses the YUI compressor to shrink CSS files
37
43
  autoload :MinifyCss, "middleman-more/extensions/minify_css"
38
44
 
39
45
  # MinifyJavascript uses the YUI compressor to shrink JS files
40
46
  autoload :MinifyJavascript, "middleman-more/extensions/minify_javascript"
47
+
48
+ # GZIP assets and pages during build
49
+ autoload :Gzip, "middleman-more/extensions/gzip"
41
50
  end
42
51
 
52
+ # Setup renderers
43
53
  require "coffee_script"
44
- Base.register Middleman::Renderers::Haml
45
- Base.register Middleman::Renderers::Sass
46
- Base.register Middleman::Renderers::Markdown
47
- Base.register Middleman::Renderers::Liquid
48
- Base.register Middleman::Renderers::Slim
54
+ Application.register Middleman::Renderers::Haml
55
+ Application.register Middleman::Renderers::Sass
56
+ Application.register Middleman::Renderers::Markdown
57
+ Application.register Middleman::Renderers::Liquid
58
+ Application.register Middleman::Renderers::Slim
49
59
 
50
60
  # Compass framework
51
- Base.register Middleman::CoreExtensions::Compass
61
+ Application.register Middleman::CoreExtensions::Compass
52
62
 
53
63
  # Sprockets asset handling
54
- Base.register Middleman::CoreExtensions::Sprockets
64
+ Application.register Middleman::CoreExtensions::Sprockets
55
65
 
56
66
  # Register the optional extensions
57
67
  Extensions.register(:cache_buster) {
@@ -62,4 +72,8 @@ module Middleman
62
72
  ::Middleman::Extensions::MinifyJavascript }
63
73
  Extensions.register(:relative_assets) {
64
74
  ::Middleman::Extensions::RelativeAssets }
65
- end
75
+ Extensions.register(:gzip) {
76
+ ::Middleman::Extensions::Gzip }
77
+ Extensions.register(:asset_hash) {
78
+ ::Middleman::Extensions::AssetHash }
79
+ end
@@ -16,40 +16,27 @@ module Middleman::CoreExtensions::Compass
16
16
 
17
17
  app.after_configuration do
18
18
  ::Compass.configuration do |config|
19
- config.project_path = root
19
+ config.project_path = source_dir
20
20
  config.environment = :development
21
21
  config.cache_path = File.join(root, ".sass-cache")
22
- config.sass_dir = File.join(source, css_dir)
23
- config.css_dir = File.join(source, css_dir)
24
- config.javascripts_dir = File.join(source, js_dir)
25
- config.fonts_dir = File.join(source, fonts_dir)
26
- config.images_dir = File.join(source, images_dir)
22
+ config.sass_dir = css_dir
23
+ config.css_dir = css_dir
24
+ config.javascripts_dir = js_dir
25
+ config.fonts_dir = fonts_dir
26
+ config.images_dir = images_dir
27
+ config.http_path = http_prefix
27
28
 
28
- config.http_images_path = if respond_to? :http_images_path
29
- http_images_path
30
- else
31
- File.join(http_prefix, images_dir)
32
- end
33
-
34
- config.http_stylesheets_path = if respond_to? :http_css_path
35
- http_css_path
36
- else
37
- File.join(http_prefix, css_dir)
38
- end
39
-
40
- config.http_javascripts_path = if respond_to? :http_js_path
41
- http_js_path
42
- else
43
- File.join(http_prefix, js_dir)
44
- end
29
+ # Correctly support HTTP paths with generated sprites
30
+ # if config.respond_to? :http_generated_images_path
31
+ # config.http_generated_images_path = if app.respond_to? :http_generated_images_path
32
+ # app.http_generated_images_path
33
+ # else
34
+ # File.join(app.http_prefix || "/", app.images_dir)
35
+ # end
36
+ # end
45
37
 
46
- config.http_fonts_path = if respond_to? :http_fonts_path
47
- http_fonts_path
48
- else
49
- File.join(http_prefix, fonts_dir)
50
- end
51
-
52
38
  config.asset_cache_buster :none
39
+ config.relative_assets = false
53
40
  config.output_style = :nested
54
41
 
55
42
  if respond_to?(:asset_host) && asset_host.is_a?(Proc)
@@ -57,15 +44,12 @@ module Middleman::CoreExtensions::Compass
57
44
  end
58
45
  end
59
46
 
60
- # Change paths when in build mode. Required for relative paths
61
- configure :build do
62
- ::Compass.configuration do |config|
63
- config.environment = :production
64
- config.css_dir = File.join(build_dir, css_dir)
65
- config.images_dir = File.join(build_dir, images_dir)
66
- config.fonts_dir = File.join(build_dir, fonts_dir)
67
- end
68
- end
47
+ # if build?
48
+ # ::Compass.configuration do |config|
49
+ # config.environment = :production
50
+ # config.project_path = File.join(root, build_dir)
51
+ # end
52
+ # end
69
53
 
70
54
  run_hook :compass_config, ::Compass.configuration
71
55
  run_hook :after_compass_config
@@ -3,92 +3,57 @@ require "sprockets"
3
3
 
4
4
  # Sprockets extension
5
5
  module Middleman::CoreExtensions::Sprockets
6
-
6
+
7
7
  # Setup extension
8
8
  class << self
9
-
9
+
10
10
  # Once registered
11
11
  def registered(app)
12
- # Default compression to off
13
- app.set :js_compressor, false
14
- app.set :css_compressor, false
15
-
16
- # Cut off every extension after .js (which sprockets eats up)
17
- app.build_reroute do |destination, request_path|
18
- if !request_path.match(/\.js\./i)
19
- false
20
- else
21
- [
22
- destination.gsub(/\.js(\..*)$/, ".js"),
23
- request_path.gsub(/\.js(\..*)$/, ".js")
24
- ]
25
- end
26
- end
27
-
12
+ # Add class methods to context
13
+ app.send :include, InstanceMethods
14
+
28
15
  # Once Middleman is setup
29
16
  app.ready do
30
- # Create sprockets env for JS
31
- js_env = Middleman::CoreExtensions::Sprockets::JavascriptEnvironment.new(self)
32
-
33
- # Add any gems with vendor/assets/javascripts to paths
34
- vendor_dir = File.join("vendor", "assets", "javascripts")
35
- gems_with_js = ::Middleman.rubygems_latest_specs.select do |spec|
36
- ::Middleman.spec_has_file?(spec, vendor_dir)
37
- end.each do |spec|
38
- js_env.append_path File.join(spec.full_gem_path, vendor_dir)
39
- end
17
+ # Add any gems with (vendor|app|.)/assets/javascripts to paths
18
+ # also add similar directories from project root (like in rails)
19
+ root_paths = [%w{ app }, %w{ assets }, %w{ vendor }, %w{ app assets }, %w{ vendor assets }, %w{ lib }, %w{ lib assets }]
20
+ try_paths = root_paths.map {|rp| File.join(rp, 'javascripts') } +
21
+ root_paths.map {|rp| File.join(rp, 'stylesheets') }
40
22
 
41
- # Add any gems with app/assets/javascripts to paths
42
- app_dir = File.join("app", "assets", "javascripts")
43
- gems_with_js = ::Middleman.rubygems_latest_specs.select do |spec|
44
- ::Middleman.spec_has_file?(spec, app_dir)
45
- end.each do |spec|
46
- js_env.append_path File.join(spec.full_gem_path, app_dir)
47
- end
48
-
49
- # Intercept requests to /javascripts and pass to sprockets
50
- map "/#{js_dir}" do
51
- run js_env
23
+ ([root] + ::Middleman.rubygems_latest_specs.map(&:full_gem_path)).each do |root_path|
24
+ try_paths.map {|p| File.join(root_path, p) }.
25
+ select {|p| File.directory?(p) }.
26
+ each {|path| sprockets.append_path(path) }
52
27
  end
53
28
 
54
29
  # Setup Sprockets Sass options
55
30
  sass.each { |k, v| ::Sprockets::Sass.options[k] = v }
56
-
57
- # Create sprockets env for CSS
58
- css_env = Middleman::CoreExtensions::Sprockets::StylesheetEnvironment.new(self)
59
-
60
- # Add any gems with vendor/assets/stylesheets to paths
61
- vendor_dir = File.join("vendor", "assets", "stylesheets")
62
- gems_with_css = ::Middleman.rubygems_latest_specs.select do |spec|
63
- ::Middleman.spec_has_file?(spec, vendor_dir)
64
- end.each do |spec|
65
- css_env.append_path File.join(spec.full_gem_path, vendor_dir)
66
- end
67
-
68
- # Add any gems with app/assets/stylesheets to paths
69
- app_dir = File.join("app", "assets", "stylesheets")
70
- gems_with_css = ::Middleman.rubygems_latest_specs.select do |spec|
71
- ::Middleman.spec_has_file?(spec, app_dir)
72
- end.each do |spec|
73
- css_env.append_path File.join(spec.full_gem_path, app_dir)
74
- end
75
-
76
- # Intercept requests to /stylesheets and pass to sprockets
77
- map("/#{css_dir}") do
78
- run css_env
79
- end
31
+
32
+ # Intercept requests to /javascripts and /stylesheets and pass to sprockets
33
+ our_sprockets = sprockets
34
+ map("/#{js_dir}") { run our_sprockets }
35
+ map("/#{css_dir}") { run our_sprockets }
80
36
  end
81
37
  end
82
38
  alias :included :registered
83
39
  end
84
40
 
41
+ module InstanceMethods
42
+ # @return [Middleman::CoreExtensions::Sprockets::MiddlemanSprocketsEnvironment]
43
+ def sprockets
44
+ @sprockets ||= MiddlemanSprocketsEnvironment.new(self)
45
+ end
46
+ end
47
+
85
48
  # Generic Middleman Sprockets env
86
- class MiddlemanEnvironment < ::Sprockets::Environment
49
+ class MiddlemanSprocketsEnvironment < ::Sprockets::Environment
87
50
  # Setup
88
51
  def initialize(app)
89
52
  @app = app
90
53
  super app.source_dir
91
-
54
+
55
+ digest = Digest::SHA1
56
+
92
57
  # Make the app context available to Sprockets
93
58
  context_class.send(:define_method, :app) { app }
94
59
  context_class.class_eval do
@@ -100,76 +65,29 @@ module Middleman::CoreExtensions::Sprockets
100
65
  end
101
66
  end
102
67
  end
68
+
69
+ # Remove compressors, we handle these with middleware
70
+ unregister_bundle_processor 'application/javascript', :js_compressor
71
+ unregister_bundle_processor 'text/css', :css_compressor
72
+
73
+ # configure search paths
74
+ append_path app.js_dir
75
+ append_path app.css_dir
103
76
  end
104
-
77
+
105
78
  # During development, don't use the asset cache
106
79
  def find_asset(path, options = {})
107
80
  expire_index! if @app.development?
108
81
  super
109
82
  end
110
- end
111
-
112
- # Javascript specific environment
113
- class JavascriptEnvironment < MiddlemanEnvironment
114
-
115
- # Init
116
- def initialize(app)
117
- super
118
-
119
- expire_index!
120
83
 
121
- # Remove old compressor
122
- unregister_bundle_processor 'application/javascript', :js_compressor
123
-
124
- # Register compressor from config
125
- register_bundle_processor 'application/javascript', :js_compressor do |context, data|
126
- if context.pathname.to_s =~ /\.min\./
127
- data
128
- else
129
- app.js_compressor.compress(data)
130
- end
131
- end if app.js_compressor
132
-
133
- # configure search paths
134
- append_path app.js_dir
135
- end
136
-
137
84
  # Clear cache on error
138
85
  def javascript_exception_response(exception)
139
86
  expire_index!
140
87
  super(exception)
141
88
  end
142
- end
143
-
144
- # CSS specific environment
145
- class StylesheetEnvironment < MiddlemanEnvironment
146
-
147
- # Init
148
- def initialize(app)
149
- super
150
-
151
- expire_index!
152
89
 
153
- # Remove old compressor
154
- unregister_bundle_processor 'text/css', :css_compressor
155
-
156
- # Register compressor from config
157
- register_bundle_processor 'text/css', :css_compressor do |context, data|
158
- if context.pathname.to_s =~ /\.min\./
159
- data
160
- else
161
- app.css_compressor.compress(data)
162
- end
163
- end if app.css_compressor
164
-
165
- # configure search paths
166
- append_path app.css_dir
167
- end
168
-
169
90
  # Clear cache on error
170
- def css_exception_response(exception)
171
- expire_index!
172
- super(exception)
173
- end
91
+ alias :css_exception_response :javascript_exception_response
174
92
  end
175
- end
93
+ end