emcee 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/lib/emcee/processors/html_processor.rb +9 -84
  3. data/lib/emcee/processors/processor_includes.rb +98 -0
  4. data/lib/emcee/railtie.rb +1 -0
  5. data/lib/emcee/version.rb +1 -1
  6. data/test/compressors_test.rb +63 -19
  7. data/test/dummy/app/assets/elements/application.html +0 -2
  8. data/test/dummy/app/assets/elements/test/test3.css +3 -0
  9. data/test/dummy/app/assets/elements/test/test3.html +1 -0
  10. data/test/dummy/log/development.log +201 -0
  11. data/test/dummy/log/test.log +5815 -0
  12. data/test/dummy/tmp/cache/assets/development/sprockets/01abb54333b8d67888355b2f855692e8 +0 -0
  13. data/test/dummy/tmp/cache/assets/development/sprockets/1e24025f59396708b3bb44543bed32fc +0 -0
  14. data/test/dummy/tmp/cache/assets/development/sprockets/219d0afb67879a67bae32b4fe4c708ac +0 -0
  15. data/test/dummy/tmp/cache/assets/development/sprockets/32cae461a9446107294c8a0230f5080c +0 -0
  16. data/test/dummy/tmp/cache/assets/development/sprockets/4fd1effec4d6579ba9d4f03ed156a15b +0 -0
  17. data/test/dummy/tmp/cache/assets/development/sprockets/63ab3ecb77a01edbed6db1aca4d690fc +0 -0
  18. data/test/dummy/tmp/cache/assets/development/sprockets/6c9d8a21af4539e19a3462e79ac4d70c +0 -0
  19. data/test/dummy/tmp/cache/assets/development/sprockets/a69c3d00e22ad6c0d6ece35c9fd5f316 +0 -0
  20. data/test/dummy/tmp/cache/assets/development/sprockets/af6ba4ae23c6790e0f474b01ceee8dd9 +0 -0
  21. data/test/dummy/tmp/cache/assets/development/sprockets/c04739a2061e8e023568aabaa0e801d2 +0 -0
  22. data/test/dummy/tmp/cache/assets/development/sprockets/cf517b62bd978b748afe38d5beb317de +0 -0
  23. data/test/dummy/tmp/cache/assets/development/sprockets/df6cfcc50da209231a7d9e140e5bafdc +0 -0
  24. data/test/dummy/tmp/cache/assets/development/sprockets/e0949aa3dcdcab5f8b45d30e26f6ddd2 +0 -0
  25. data/test/dummy/tmp/cache/assets/development/sprockets/e1d520d14db311ab6347be6426dac6f5 +0 -0
  26. data/test/dummy/tmp/cache/assets/development/sprockets/ffd4adb86602a60c7fcedd5d472166d3 +0 -0
  27. data/test/dummy/tmp/cache/assets/test/sprockets/1e24025f59396708b3bb44543bed32fc +0 -0
  28. data/test/dummy/tmp/cache/assets/test/sprockets/219d0afb67879a67bae32b4fe4c708ac +0 -0
  29. data/test/dummy/tmp/cache/assets/test/sprockets/32cae461a9446107294c8a0230f5080c +0 -0
  30. data/test/dummy/tmp/cache/assets/test/sprockets/4fd1effec4d6579ba9d4f03ed156a15b +0 -0
  31. data/test/dummy/tmp/cache/assets/test/sprockets/6c9d8a21af4539e19a3462e79ac4d70c +0 -0
  32. data/test/dummy/tmp/cache/assets/test/sprockets/a69c3d00e22ad6c0d6ece35c9fd5f316 +0 -0
  33. data/test/dummy/tmp/cache/assets/test/sprockets/af6ba4ae23c6790e0f474b01ceee8dd9 +0 -0
  34. data/test/dummy/tmp/cache/assets/test/sprockets/cf517b62bd978b748afe38d5beb317de +0 -0
  35. data/test/dummy/tmp/cache/assets/test/sprockets/df6cfcc50da209231a7d9e140e5bafdc +0 -0
  36. data/test/dummy/tmp/cache/assets/test/sprockets/e0949aa3dcdcab5f8b45d30e26f6ddd2 +0 -0
  37. data/test/dummy/tmp/cache/assets/test/sprockets/ffd4adb86602a60c7fcedd5d472166d3 +0 -0
  38. data/test/dummy/vendor/assets/elements/test4.html +1 -0
  39. data/test/dummy/vendor/assets/elements/test4.js +1 -0
  40. data/test/processors_test.rb +74 -0
  41. metadata +8 -5
  42. data/test/dummy/tmp/cache/assets/test/sprockets/070957bfe375a537750196a12d9e6d1a +0 -0
  43. data/test/dummy/tmp/cache/assets/test/sprockets/fb7c86cdcce596d8b3c14ce236bf73c5 +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb57be0dd8aa54269cad7513113aecae19cc050b
4
- data.tar.gz: 5b088d3adeadf5be4fddbc4896d212be3a14aa05
3
+ metadata.gz: 6ef8c2343235af9adfdfca951fce261b485cb8a9
4
+ data.tar.gz: 32286f3d1f8d3ee071d61a8baeb7877029bd63f9
5
5
  SHA512:
6
- metadata.gz: 9b749f99a257f213979bc70167e002e0d818bea8c8760b396a03cd937f2c08f7eda2a54b2a67f7753954331953b218ac75f7e67f53c8a2a1f3e22eef6fa35eb8
7
- data.tar.gz: 8400a030e328ecd2ef69a3dfef0cd13a6a983f07f3c2f2866547ee5477c92492838d11eeba4ecfa91245a9eabaa727a3ece76ad0155a10906e48c81a479482b3
6
+ metadata.gz: 2157456f4bfda8ddcdd94e75fa190066c571c3b3aa868e27550f572ecba940d030a307844bde3c2092ce6496afe9d2f22fdc503156c67780c427fe1a374d6375
7
+ data.tar.gz: d68fa85fb967dc7bebde6626f6fc91ba81e0cebe6e2cc97fa3826686ad0149e509acb322c55e9fa1c3280b3c5f3b2634d02e25e356231a35eb1cf9aef55bd01f
@@ -14,6 +14,12 @@ module Emcee
14
14
  # work for us.
15
15
  #
16
16
  class HtmlProcessor < Sprockets::DirectiveProcessor
17
+ include Emcee::Processors::Includes
18
+ protected :process_imports
19
+ protected :process_stylesheets
20
+ protected :process_scripts
21
+ private :read_file
22
+
17
23
  # Matches the entire header/directive block. This is everything from the
18
24
  # top of the file, enclosed in html comments.
19
25
  #
@@ -40,37 +46,6 @@ module Emcee
40
46
  #
41
47
  DIRECTIVE_PATTERN = /^\W*=\s*(\w+.*?)$/
42
48
 
43
- # Match an html import tag.
44
- #
45
- # <link rel="import" href="example.html">
46
- #
47
- IMPORT_PATTERN = /^<link .*rel=["']import["'].*>$/
48
-
49
- # Match a stylesheet link tag.
50
- #
51
- # <link rel="stylesheet" href="example.css">
52
- #
53
- STYLESHEET_PATTERN = /^ +<link .*rel=["']stylesheet["'].*>$/
54
-
55
- # Match a script tag.
56
- #
57
- # <script src="assets/example.js"></script>
58
- #
59
- SCRIPT_PATTERN = /^ *<script .*src=["'].+\.js["']><\/script>$/
60
-
61
- # Match the path from the href attribute of an html import or stylesheet
62
- # include tag. Captures the actual path.
63
- #
64
- # href="/assets/example.css"
65
- #
66
- HREF_PATH_PATTERN = /href=["'](?<path>[\w\.\/-]+)["']/
67
-
68
- # Match the source path from a script tag. Captures the actual path.
69
- #
70
- # src="/assets/example.js"
71
- #
72
- SRC_PATH_PATTERN = /src=["'](?<path>[\w\.\/-]+)["']/
73
-
74
49
  # Render takes the actual text of the file and does our processing to it.
75
50
  # This is based on the standard render method on Sprockets's
76
51
  # DirectiveProcessor.
@@ -93,63 +68,13 @@ module Emcee
93
68
  @has_written_body = false
94
69
 
95
70
  process_directives
96
- process_imports
97
- process_stylesheets
98
- process_scripts
71
+ @body = process_imports(@body, @context, @directory)
72
+ @body = process_stylesheets(@body, @directory)
73
+ @body = process_scripts(@body, @directory)
99
74
  process_source
100
75
 
101
76
  @result
102
77
  end
103
-
104
- protected
105
- # Scan the body for html imports. If any are found, tell sprockets to
106
- # require their files like we would for a directive.
107
- def process_imports
108
- body.scan(IMPORT_PATTERN) do |import_tag|
109
- if path = import_tag[HREF_PATH_PATTERN, :path]
110
- absolute_path = File.absolute_path(path, @directory)
111
- context.require_asset(absolute_path)
112
- end
113
- end
114
-
115
- @body.gsub!(IMPORT_PATTERN, "")
116
- end
117
-
118
- # Scan the body for external stylesheet references. If any are found,
119
- # inline the files in place of the references.
120
- def process_stylesheets
121
- to_inline = []
122
-
123
- body.scan(STYLESHEET_PATTERN) do |stylesheet_tag|
124
- if path = stylesheet_tag[HREF_PATH_PATTERN, :path]
125
- absolute_path = File.absolute_path(path, @directory)
126
- stylesheet_contents = File.read(absolute_path)
127
- to_inline << [stylesheet_tag, "<style>\n" + stylesheet_contents + "</style>\n"]
128
- end
129
- end
130
-
131
- to_inline.each do |(tag, contents)|
132
- @body.gsub!(tag, contents)
133
- end
134
- end
135
-
136
- # Scan the body for external script references. If any are found, inline
137
- # the files in place of the references.
138
- def process_scripts
139
- to_inline = []
140
-
141
- body.scan(SCRIPT_PATTERN) do |script_tag|
142
- if path = script_tag[SRC_PATH_PATTERN, :path]
143
- absolute_path = File.absolute_path(path, @directory)
144
- script_contents = File.read(absolute_path)
145
- to_inline << [script_tag, "<script>\n" + script_contents + "</script>\n"]
146
- end
147
- end
148
-
149
- to_inline.each do |(tag, contents)|
150
- @body.gsub!(tag, contents)
151
- end
152
- end
153
78
  end
154
79
  end
155
80
  end
@@ -0,0 +1,98 @@
1
+ module Emcee
2
+ module Processors
3
+ # This module has method definition that we will include into HtmlProcessor.
4
+ #
5
+ # We seperate these out to make them easier to test. Testing a class that inherits
6
+ # from Sprockets::DirectiveProcessor (which our HtmlProcessor does) is not
7
+ # straightforward.
8
+ #
9
+ module Includes
10
+ # Match an html import tag.
11
+ #
12
+ # <link rel="import" href="assets/example.html">
13
+ #
14
+ IMPORT_PATTERN = /^ *<link .*rel=["']import["'].*>$/
15
+
16
+ # Match a stylesheet link tag.
17
+ #
18
+ # <link rel="stylesheet" href="assets/example.css">
19
+ #
20
+ STYLESHEET_PATTERN = /^ *<link .*rel=["']stylesheet["'].*>$/
21
+
22
+ # Match a script tag.
23
+ #
24
+ # <script src="assets/example.js"></script>
25
+ #
26
+ SCRIPT_PATTERN = /^ *<script .*src=["'].+\.js["']><\/script>$/
27
+
28
+ # Match the path from the href attribute of an html import or stylesheet
29
+ # include tag. Captures the actual path.
30
+ #
31
+ # href="/assets/example.css"
32
+ #
33
+ HREF_PATH_PATTERN = /href=["'](?<path>[\w\.\/-]+)["']/
34
+
35
+ # Match the source path from a script tag. Captures the actual path.
36
+ #
37
+ # src="/assets/example.js"
38
+ #
39
+ SRC_PATH_PATTERN = /src=["'](?<path>[\w\.\/-]+)["']/
40
+
41
+ # Return a file's contents as text. This is split out as a method so that
42
+ # we can test the other methods in this module without actually reading from
43
+ # the filesystem.
44
+ def read_file(path)
45
+ File.read(path)
46
+ end
47
+
48
+ # Scan the body for html imports. If any are found, tell sprockets to
49
+ # require their files like we would for a directive. Then remove the import.
50
+ def process_imports(body, context, directory)
51
+ body.scan(IMPORT_PATTERN) do |import_tag|
52
+ if path = import_tag[HREF_PATH_PATTERN, :path]
53
+ absolute_path = File.absolute_path(path, directory)
54
+ context.require_asset(absolute_path)
55
+ end
56
+ end
57
+
58
+ body.gsub(IMPORT_PATTERN, "")
59
+ end
60
+
61
+ # Scan the body for external stylesheet references. If any are found,
62
+ # inline the files in place of the references.
63
+ def process_stylesheets(body, directory)
64
+ to_inline = []
65
+
66
+ body.scan(STYLESHEET_PATTERN) do |stylesheet_tag|
67
+ if path = stylesheet_tag[HREF_PATH_PATTERN, :path]
68
+ absolute_path = File.absolute_path(path, directory)
69
+ stylesheet_contents = read_file(absolute_path)
70
+ to_inline << [stylesheet_tag, "<style>" + stylesheet_contents + "</style>"]
71
+ end
72
+ end
73
+
74
+ to_inline.reduce(body) do |output, (tag, contents)|
75
+ output.gsub(tag, contents)
76
+ end
77
+ end
78
+
79
+ # Scan the body for external script references. If any are found, inline
80
+ # the files in place of the references.
81
+ def process_scripts(body, directory)
82
+ to_inline = []
83
+
84
+ body.scan(SCRIPT_PATTERN) do |script_tag|
85
+ if path = script_tag[SRC_PATH_PATTERN, :path]
86
+ absolute_path = File.absolute_path(path, directory)
87
+ script_contents = read_file(absolute_path)
88
+ to_inline << [script_tag, "<script>" + script_contents + "</script>"]
89
+ end
90
+ end
91
+
92
+ to_inline.reduce(body) do |output, (tag, contents)|
93
+ output.gsub(tag, contents)
94
+ end
95
+ end
96
+ end
97
+ end
98
+ end
data/lib/emcee/railtie.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "emcee/processors/processor_includes"
1
2
  require "emcee/processors/html_processor"
2
3
  require "emcee/compressors/html_compressor"
3
4
 
data/lib/emcee/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Emcee
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -1,4 +1,4 @@
1
- require 'test_Helper'
1
+ require 'test_helper'
2
2
 
3
3
  class CompressorsTest < ActiveSupport::TestCase
4
4
  setup do
@@ -6,36 +6,80 @@ class CompressorsTest < ActiveSupport::TestCase
6
6
  end
7
7
 
8
8
  test "compressor should remove html comments" do
9
- content = "<!--\nHere\nAre\nSome Comments\n-->\n<span>test</span>\n"
10
- assert_equal "<span>test</span>\n", @compressor.compress(content)
9
+ content = %q{
10
+ <!--
11
+ What will we do with all
12
+ of these html comments?
13
+ -->
14
+ <span>The span to end all spans</span>
15
+ }
16
+ assert_equal "\n" + @compressor.compress(content), %q{
17
+ <span>The span to end all spans</span>
18
+ }
11
19
  end
12
20
 
13
21
  test "compressor should remove multi-line javascript comments" do
14
- content = "<script>\n/*\nHere\nAre\nA Bunch\nOf Comments\n*/\n</script>\n"
15
- assert_equal "<script>\n</script>\n", @compressor.compress(content)
22
+ content = %q{
23
+ <script>
24
+ /*
25
+ Here are some comments that
26
+ go over many, many lines.
27
+ */
28
+ </script>
29
+ }
30
+ assert_equal "\n" + @compressor.compress(content), %q{
31
+ <script>
32
+ </script>
33
+ }
16
34
  end
17
35
 
18
36
  test "compressor should remove single-line javascript comments" do
19
- content = "<script>\n// Here\n// Are Yet\n// Some More\n// Of The\n// Comments\n</script>\n"
20
- assert_equal "<script>\n</script>\n", @compressor.compress(content)
37
+ content = %q{
38
+ <script>
39
+ // Here is a comment.
40
+ // Here is another coment.
41
+ </script>
42
+ }
43
+ assert_equal "\n" + @compressor.compress(content), %q{
44
+ <script>
45
+ </script>
46
+ }
21
47
  end
22
48
 
23
49
  test "compressor should remove css comments" do
24
50
  content = %q{
25
- <style>
26
- h1 {
27
- /*
28
- Make it pink
29
- */
30
- color: pink;
31
- }
32
- </style>
33
- }
34
- assert_equal "<style>\n h1 {\n color: pink;\n }\n</style>\n", @compressor.compress(content)
51
+ <style>
52
+ h1 {
53
+ /*
54
+ Make it pink
55
+ */
56
+ color: pink;
57
+ }
58
+ </style>
59
+ }
60
+ assert_equal "\n" + @compressor.compress(content), %q{
61
+ <style>
62
+ h1 {
63
+ color: pink;
64
+ }
65
+ </style>
66
+ }
35
67
  end
36
68
 
37
69
  test "compressor should remove blank lines" do
38
- content = "<p>test</p>\n\n\n\n\n\n<p>oh yeah</p>"
39
- assert_equal "<p>test</p>\n<p>oh yeah</p>", @compressor.compress(content)
70
+ content = %q{
71
+ <p>test</p>
72
+
73
+
74
+
75
+ <p>oh yeah</p>
76
+
77
+ <p>test</p>
78
+ }
79
+ assert_equal "\n" + @compressor.compress(content), %q{
80
+ <p>test</p>
81
+ <p>oh yeah</p>
82
+ <p>test</p>
83
+ }
40
84
  end
41
85
  end
@@ -5,8 +5,6 @@
5
5
  * Any html files within this directory, lib/assets/elements, or vendor/assets/elements
6
6
  * can be referenced here using a relative path.
7
7
  *
8
- *= require test1
9
- *= require test/test2
10
8
  *= require test4
11
9
  *= require_tree .
12
10
  -->
@@ -0,0 +1,3 @@
1
+ p {
2
+ color: pink;
3
+ }
@@ -1 +1,2 @@
1
+ <link rel="stylesheet" href="test3.css">
1
2
  <p>test3</p>
@@ -10,3 +10,204 @@ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-04 20:48:1
10
10
 
11
11
 
12
12
  Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-04 20:48:17 -0500
13
+
14
+
15
+ Started GET "/" for 127.0.0.1 at 2014-03-05 07:08:48 -0500
16
+ Processing by DummyController#index as HTML
17
+ Rendered dummy/index.html.erb within layouts/application (0.9ms)
18
+ Completed 200 OK in 62ms (Views: 61.7ms | ActiveRecord: 0.0ms)
19
+
20
+
21
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 07:08:48 -0500
22
+
23
+
24
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 07:08:48 -0500
25
+
26
+
27
+ Started GET "/assets/test/test3.html?body=1" for 127.0.0.1 at 2014-03-05 07:08:56 -0500
28
+
29
+
30
+ Started GET "/assets/test/test2.html?body=1" for 127.0.0.1 at 2014-03-05 07:09:06 -0500
31
+
32
+
33
+ Started GET "/assets/test/test2.html?body=1" for 127.0.0.1 at 2014-03-05 07:09:08 -0500
34
+
35
+
36
+ Started GET "/" for 127.0.0.1 at 2014-03-05 07:10:19 -0500
37
+ Processing by DummyController#index as HTML
38
+ Rendered dummy/index.html.erb within layouts/application (0.1ms)
39
+ Completed 200 OK in 38ms (Views: 38.2ms | ActiveRecord: 0.0ms)
40
+
41
+
42
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 07:10:19 -0500
43
+
44
+
45
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 07:10:19 -0500
46
+
47
+
48
+ Started GET "/assets/test/test3.html?body=1" for 127.0.0.1 at 2014-03-05 07:10:22 -0500
49
+
50
+
51
+ Started GET "/assets/test/test3.css" for 127.0.0.1 at 2014-03-05 07:10:23 -0500
52
+
53
+
54
+ Started GET "/" for 127.0.0.1 at 2014-03-05 07:29:57 -0500
55
+ Processing by DummyController#index as HTML
56
+ Rendered dummy/index.html.erb within layouts/application (1.1ms)
57
+ Completed 200 OK in 88ms (Views: 87.9ms | ActiveRecord: 0.0ms)
58
+
59
+
60
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 07:29:58 -0500
61
+
62
+
63
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 07:29:58 -0500
64
+
65
+
66
+ Started GET "/" for 127.0.0.1 at 2014-03-05 07:30:10 -0500
67
+ Processing by DummyController#index as HTML
68
+ Rendered dummy/index.html.erb within layouts/application (0.1ms)
69
+ Completed 200 OK in 4ms (Views: 4.2ms | ActiveRecord: 0.0ms)
70
+
71
+
72
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 07:30:10 -0500
73
+
74
+
75
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 07:30:10 -0500
76
+
77
+
78
+ Started GET "/assets/test1.html?body=1" for 127.0.0.1 at 2014-03-05 07:30:16 -0500
79
+
80
+
81
+ Started GET "/assets/test/test2.html?body=1" for 127.0.0.1 at 2014-03-05 07:30:26 -0500
82
+
83
+
84
+ Started GET "/assets/test/test3.html?body=1" for 127.0.0.1 at 2014-03-05 07:30:36 -0500
85
+
86
+
87
+ Started GET "/assets/test/test3.css" for 127.0.0.1 at 2014-03-05 07:30:37 -0500
88
+
89
+
90
+ Started GET "/assets/test4.html?body=1" for 127.0.0.1 at 2014-03-05 07:30:48 -0500
91
+
92
+
93
+ Started GET "/" for 127.0.0.1 at 2014-03-05 07:31:48 -0500
94
+ Processing by DummyController#index as HTML
95
+ Rendered dummy/index.html.erb within layouts/application (0.0ms)
96
+ Completed 200 OK in 4ms (Views: 3.9ms | ActiveRecord: 0.0ms)
97
+
98
+
99
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 07:31:49 -0500
100
+
101
+
102
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 07:31:49 -0500
103
+
104
+
105
+ Started GET "/assets/test/test3.html?body=1" for 127.0.0.1 at 2014-03-05 07:31:51 -0500
106
+
107
+
108
+ Started GET "/assets/test/test3.css" for 127.0.0.1 at 2014-03-05 07:31:51 -0500
109
+
110
+
111
+ Started GET "/" for 127.0.0.1 at 2014-03-05 07:32:19 -0500
112
+ Processing by DummyController#index as HTML
113
+ Rendered dummy/index.html.erb within layouts/application (1.0ms)
114
+ Completed 200 OK in 46ms (Views: 45.5ms | ActiveRecord: 0.0ms)
115
+
116
+
117
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 07:32:19 -0500
118
+
119
+
120
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 07:32:19 -0500
121
+
122
+
123
+ Started GET "/assets/test/test3.html?body=1" for 127.0.0.1 at 2014-03-05 07:32:21 -0500
124
+
125
+
126
+ Started GET "/assets/test/test3.css" for 127.0.0.1 at 2014-03-05 07:32:21 -0500
127
+
128
+
129
+ Started GET "/assets/test/test3.css" for 127.0.0.1 at 2014-03-05 07:32:25 -0500
130
+
131
+
132
+ Started GET "/" for 127.0.0.1 at 2014-03-05 07:32:45 -0500
133
+ Processing by DummyController#index as HTML
134
+ Rendered dummy/index.html.erb within layouts/application (1.0ms)
135
+ Completed 200 OK in 65ms (Views: 65.0ms | ActiveRecord: 0.0ms)
136
+
137
+
138
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 07:32:45 -0500
139
+
140
+
141
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 07:32:45 -0500
142
+
143
+
144
+ Started GET "/assets/test/test3.html?body=1" for 127.0.0.1 at 2014-03-05 07:32:48 -0500
145
+
146
+
147
+ Started GET "/" for 127.0.0.1 at 2014-03-05 07:38:40 -0500
148
+ Processing by DummyController#index as HTML
149
+ Rendered dummy/index.html.erb within layouts/application (0.9ms)
150
+ Completed 200 OK in 45ms (Views: 44.3ms | ActiveRecord: 0.0ms)
151
+
152
+
153
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 07:38:41 -0500
154
+
155
+
156
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 07:38:41 -0500
157
+
158
+
159
+ Started GET "/assets/application.html?body=1" for 127.0.0.1 at 2014-03-05 07:38:48 -0500
160
+
161
+
162
+ Started GET "/assets/test1.html?body=1" for 127.0.0.1 at 2014-03-05 07:38:56 -0500
163
+
164
+
165
+ Started GET "/assets/test/test2.html?body=1" for 127.0.0.1 at 2014-03-05 07:39:03 -0500
166
+
167
+
168
+ Started GET "/assets/test/test3.html?body=1" for 127.0.0.1 at 2014-03-05 07:39:09 -0500
169
+
170
+
171
+ Started GET "/assets/test4.html?body=1" for 127.0.0.1 at 2014-03-05 07:39:15 -0500
172
+
173
+
174
+ Started GET "/" for 127.0.0.1 at 2014-03-05 09:00:08 -0500
175
+ Processing by DummyController#index as HTML
176
+ Rendered dummy/index.html.erb within layouts/application (0.9ms)
177
+ Completed 200 OK in 44ms (Views: 44.0ms | ActiveRecord: 0.0ms)
178
+
179
+
180
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 09:00:08 -0500
181
+
182
+
183
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 09:00:08 -0500
184
+
185
+
186
+ Started GET "/assets/application.html?body=1" for 127.0.0.1 at 2014-03-05 09:00:15 -0500
187
+
188
+
189
+ Started GET "/assets/test1.html?body=1" for 127.0.0.1 at 2014-03-05 09:00:22 -0500
190
+
191
+
192
+ Started GET "/assets/test/test2.html?body=1" for 127.0.0.1 at 2014-03-05 09:00:28 -0500
193
+
194
+
195
+ Started GET "/assets/test/test3.html?body=1" for 127.0.0.1 at 2014-03-05 09:00:38 -0500
196
+
197
+
198
+ Started GET "/assets/test4.html?body=1" for 127.0.0.1 at 2014-03-05 09:00:53 -0500
199
+
200
+
201
+ Started GET "/" for 127.0.0.1 at 2014-03-05 09:02:08 -0500
202
+ Processing by DummyController#index as HTML
203
+ Rendered dummy/index.html.erb within layouts/application (0.1ms)
204
+ Completed 200 OK in 32ms (Views: 31.5ms | ActiveRecord: 0.0ms)
205
+
206
+
207
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2014-03-05 09:02:08 -0500
208
+
209
+
210
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2014-03-05 09:02:08 -0500
211
+
212
+
213
+ Started GET "/assets/test4.html?body=1" for 127.0.0.1 at 2014-03-05 09:02:13 -0500