preloadables 1.0.0

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 (52) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +106 -0
  3. data/Rakefile +34 -0
  4. data/app/assets/javascripts/preloadables/application.js +13 -0
  5. data/app/assets/stylesheets/preloadables/application.css +15 -0
  6. data/app/controllers/preloadables/application_controller.rb +4 -0
  7. data/app/helpers/preloadables/application_helper.rb +56 -0
  8. data/app/views/layouts/preloadables/application.html.erb +14 -0
  9. data/config/routes.rb +2 -0
  10. data/lib/preloadables/engine.rb +11 -0
  11. data/lib/preloadables/version.rb +3 -0
  12. data/lib/preloadables.rb +4 -0
  13. data/lib/tasks/preloadables_tasks.rake +4 -0
  14. data/test/dummy/README.rdoc +28 -0
  15. data/test/dummy/Rakefile +6 -0
  16. data/test/dummy/app/assets/javascripts/application.js +13 -0
  17. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  18. data/test/dummy/app/controllers/application_controller.rb +5 -0
  19. data/test/dummy/app/helpers/application_helper.rb +2 -0
  20. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  21. data/test/dummy/bin/bundle +3 -0
  22. data/test/dummy/bin/rails +4 -0
  23. data/test/dummy/bin/rake +4 -0
  24. data/test/dummy/config/application.rb +23 -0
  25. data/test/dummy/config/boot.rb +5 -0
  26. data/test/dummy/config/database.yml +25 -0
  27. data/test/dummy/config/environment.rb +5 -0
  28. data/test/dummy/config/environments/development.rb +37 -0
  29. data/test/dummy/config/environments/production.rb +78 -0
  30. data/test/dummy/config/environments/test.rb +39 -0
  31. data/test/dummy/config/initializers/assets.rb +8 -0
  32. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  33. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  34. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  35. data/test/dummy/config/initializers/inflections.rb +16 -0
  36. data/test/dummy/config/initializers/mime_types.rb +4 -0
  37. data/test/dummy/config/initializers/session_store.rb +3 -0
  38. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  39. data/test/dummy/config/locales/en.yml +23 -0
  40. data/test/dummy/config/routes.rb +4 -0
  41. data/test/dummy/config/secrets.yml +22 -0
  42. data/test/dummy/config.ru +4 -0
  43. data/test/dummy/db/test.sqlite3 +0 -0
  44. data/test/dummy/log/test.log +1545 -0
  45. data/test/dummy/public/404.html +67 -0
  46. data/test/dummy/public/422.html +67 -0
  47. data/test/dummy/public/500.html +66 -0
  48. data/test/dummy/public/favicon.ico +0 -0
  49. data/test/integration/navigation_test.rb +10 -0
  50. data/test/preloadables_test.rb +109 -0
  51. data/test/test_helper.rb +20 -0
  52. metadata +174 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,10 @@
1
+ require 'test_helper'
2
+
3
+ class NavigationTest < ActionDispatch::IntegrationTest
4
+ fixtures :all
5
+
6
+ # test "the truth" do
7
+ # assert true
8
+ # end
9
+ end
10
+
@@ -0,0 +1,109 @@
1
+ require 'test_helper'
2
+
3
+ class PreloadablesTest < ActionView::TestCase
4
+ include Preloadables::ApplicationHelper
5
+
6
+ test 'the module should be defined' do
7
+ assert_kind_of Module, Preloadables
8
+ end
9
+ end
10
+
11
+
12
+ class AllPreloadablesTest < ActionView::TestCase
13
+ include Preloadables::ApplicationHelper
14
+
15
+ test 'it renders nothing when passed an empty hash' do
16
+ empty_hash = {}
17
+ assert_equal '', preloadables_meta(empty_hash)
18
+ end
19
+
20
+ test 'it renders dns prefetching meta' do
21
+ preloadable_options = {
22
+ domains: [
23
+ 'google.com',
24
+ 'jack.ofspades.com'
25
+ ],
26
+ assets: [
27
+ 'http://jack.ofspades.com/assets/js/application.js',
28
+ '/foo/bar/baz.min.css'
29
+ ],
30
+ pages: [
31
+ '/page2.html',
32
+ 'https://jack.ofspades.com/contact/'
33
+ ]
34
+ }
35
+
36
+ expected_output = '<link rel="dns-prefetch" href="google.com"><link rel="dns-prefetch" href="jack.ofspades.com">'
37
+ expected_output << '<link rel="prefetch" href="http://jack.ofspades.com/assets/js/application.js"><link rel="prefetch" href="/foo/bar/baz.min.css">'
38
+ expected_output << '<link rel="prerender" href="/page2.html"><link rel="prerender" href="https://jack.ofspades.com/contact/">'
39
+
40
+ assert_equal expected_output, preloadables_meta(preloadable_options)
41
+ end
42
+
43
+ end
44
+
45
+
46
+ class PreloadableDomainsTest < ActionView::TestCase
47
+ include Preloadables::ApplicationHelper
48
+
49
+ test 'it renders nothing when passed an empty array' do
50
+ empty_array = Array.new
51
+ assert_equal '', preload_domains_meta(empty_array)
52
+ end
53
+
54
+ test 'it renders dns prefetching meta' do
55
+ preloadable_options = [
56
+ 'google.com',
57
+ 'jack.ofspades.com'
58
+ ]
59
+
60
+ expected_output = '<link rel="dns-prefetch" href="google.com"><link rel="dns-prefetch" href="jack.ofspades.com">'
61
+
62
+ assert_equal expected_output, preload_domains_meta(preloadable_options)
63
+ end
64
+
65
+ end
66
+
67
+
68
+ class PreloadableAssetsTest < ActionView::TestCase
69
+ include Preloadables::ApplicationHelper
70
+
71
+ test 'it renders nothing when passed an empty array' do
72
+ empty_array = Array.new
73
+ assert_equal '', preload_assets_meta(empty_array)
74
+ end
75
+
76
+ test 'it renders asset preloading meta' do
77
+ preloadable_options = [
78
+ 'http://jack.ofspades.com/assets/js/application.js',
79
+ '/foo/bar/baz.min.css'
80
+ ]
81
+
82
+ expected_output = '<link rel="prefetch" href="http://jack.ofspades.com/assets/js/application.js"><link rel="prefetch" href="/foo/bar/baz.min.css">'
83
+
84
+ assert_equal expected_output, preload_assets_meta(preloadable_options)
85
+ end
86
+
87
+ end
88
+
89
+
90
+ class PrerenderablePagesTest < ActionView::TestCase
91
+ include Preloadables::ApplicationHelper
92
+
93
+ test 'it renders nothing when passed an empty array' do
94
+ empty_array = Array.new
95
+ assert_equal '', prerender_pages_meta(empty_array)
96
+ end
97
+
98
+ test 'it renders dns prefetching meta' do
99
+ preloadable_options = [
100
+ '/page2.html',
101
+ 'https://jack.ofspades.com/contact/'
102
+ ]
103
+
104
+ expected_output = '<link rel="prerender" href="/page2.html"><link rel="prerender" href="https://jack.ofspades.com/contact/">'
105
+
106
+ assert_equal expected_output, prerender_pages_meta(preloadable_options)
107
+ end
108
+
109
+ end
@@ -0,0 +1,20 @@
1
+ require 'codeclimate-test-reporter'
2
+ CodeClimate::TestReporter.start
3
+
4
+ # Configure Rails Environment
5
+ ENV["RAILS_ENV"] = "test"
6
+
7
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
8
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
9
+ ActiveRecord::Migrator.migrations_paths << File.expand_path('../../db/migrate', __FILE__)
10
+ require "rails/test_help"
11
+
12
+ Rails.backtrace_cleaner.remove_silencers!
13
+
14
+ # Load support files
15
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
16
+
17
+ # Load fixtures from the engine
18
+ if ActiveSupport::TestCase.method_defined?(:fixture_path=)
19
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
20
+ end
metadata ADDED
@@ -0,0 +1,174 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: preloadables
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jack
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-12-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.1.8
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 4.1.8
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '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'
41
+ - !ruby/object:Gem::Dependency
42
+ name: codeclimate-test-reporter
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: A Rails view helper that outputs HTML for preloading and precacheing.
56
+ email:
57
+ - jack@ofspades.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - README.md
63
+ - Rakefile
64
+ - app/assets/javascripts/preloadables/application.js
65
+ - app/assets/stylesheets/preloadables/application.css
66
+ - app/controllers/preloadables/application_controller.rb
67
+ - app/helpers/preloadables/application_helper.rb
68
+ - app/views/layouts/preloadables/application.html.erb
69
+ - config/routes.rb
70
+ - lib/preloadables.rb
71
+ - lib/preloadables/engine.rb
72
+ - lib/preloadables/version.rb
73
+ - lib/tasks/preloadables_tasks.rake
74
+ - test/dummy/README.rdoc
75
+ - test/dummy/Rakefile
76
+ - test/dummy/app/assets/javascripts/application.js
77
+ - test/dummy/app/assets/stylesheets/application.css
78
+ - test/dummy/app/controllers/application_controller.rb
79
+ - test/dummy/app/helpers/application_helper.rb
80
+ - test/dummy/app/views/layouts/application.html.erb
81
+ - test/dummy/bin/bundle
82
+ - test/dummy/bin/rails
83
+ - test/dummy/bin/rake
84
+ - test/dummy/config.ru
85
+ - test/dummy/config/application.rb
86
+ - test/dummy/config/boot.rb
87
+ - test/dummy/config/database.yml
88
+ - test/dummy/config/environment.rb
89
+ - test/dummy/config/environments/development.rb
90
+ - test/dummy/config/environments/production.rb
91
+ - test/dummy/config/environments/test.rb
92
+ - test/dummy/config/initializers/assets.rb
93
+ - test/dummy/config/initializers/backtrace_silencers.rb
94
+ - test/dummy/config/initializers/cookies_serializer.rb
95
+ - test/dummy/config/initializers/filter_parameter_logging.rb
96
+ - test/dummy/config/initializers/inflections.rb
97
+ - test/dummy/config/initializers/mime_types.rb
98
+ - test/dummy/config/initializers/session_store.rb
99
+ - test/dummy/config/initializers/wrap_parameters.rb
100
+ - test/dummy/config/locales/en.yml
101
+ - test/dummy/config/routes.rb
102
+ - test/dummy/config/secrets.yml
103
+ - test/dummy/db/test.sqlite3
104
+ - test/dummy/log/test.log
105
+ - test/dummy/public/404.html
106
+ - test/dummy/public/422.html
107
+ - test/dummy/public/500.html
108
+ - test/dummy/public/favicon.ico
109
+ - test/integration/navigation_test.rb
110
+ - test/preloadables_test.rb
111
+ - test/test_helper.rb
112
+ homepage: https://jack.ofspades.com/rails-preloadables/
113
+ licenses:
114
+ - Creative Commons Attribution-ShareAlike
115
+ metadata: {}
116
+ post_install_message:
117
+ rdoc_options: []
118
+ require_paths:
119
+ - lib
120
+ required_ruby_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ requirements: []
131
+ rubyforge_project:
132
+ rubygems_version: 2.4.2
133
+ signing_key:
134
+ specification_version: 4
135
+ summary: A Rails view helper that outputs HTML for preloading and precacheing.
136
+ test_files:
137
+ - test/dummy/app/assets/javascripts/application.js
138
+ - test/dummy/app/assets/stylesheets/application.css
139
+ - test/dummy/app/controllers/application_controller.rb
140
+ - test/dummy/app/helpers/application_helper.rb
141
+ - test/dummy/app/views/layouts/application.html.erb
142
+ - test/dummy/bin/bundle
143
+ - test/dummy/bin/rails
144
+ - test/dummy/bin/rake
145
+ - test/dummy/config/application.rb
146
+ - test/dummy/config/boot.rb
147
+ - test/dummy/config/database.yml
148
+ - test/dummy/config/environment.rb
149
+ - test/dummy/config/environments/development.rb
150
+ - test/dummy/config/environments/production.rb
151
+ - test/dummy/config/environments/test.rb
152
+ - test/dummy/config/initializers/assets.rb
153
+ - test/dummy/config/initializers/backtrace_silencers.rb
154
+ - test/dummy/config/initializers/cookies_serializer.rb
155
+ - test/dummy/config/initializers/filter_parameter_logging.rb
156
+ - test/dummy/config/initializers/inflections.rb
157
+ - test/dummy/config/initializers/mime_types.rb
158
+ - test/dummy/config/initializers/session_store.rb
159
+ - test/dummy/config/initializers/wrap_parameters.rb
160
+ - test/dummy/config/locales/en.yml
161
+ - test/dummy/config/routes.rb
162
+ - test/dummy/config/secrets.yml
163
+ - test/dummy/config.ru
164
+ - test/dummy/db/test.sqlite3
165
+ - test/dummy/log/test.log
166
+ - test/dummy/public/404.html
167
+ - test/dummy/public/422.html
168
+ - test/dummy/public/500.html
169
+ - test/dummy/public/favicon.ico
170
+ - test/dummy/Rakefile
171
+ - test/dummy/README.rdoc
172
+ - test/integration/navigation_test.rb
173
+ - test/preloadables_test.rb
174
+ - test/test_helper.rb