script_relocator 0.1.0 → 0.2.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +7 -2
- data/README.md +57 -1
- data/Rakefile +9 -0
- data/lib/script_relocator/railtie.rb +7 -0
- data/lib/script_relocator/version.rb +1 -1
- data/lib/script_relocator.rb +2 -5
- data/script_relocator.gemspec +1 -0
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39e6c523f8d2cbc54c1f63039ae13f5699ada7a3
|
4
|
+
data.tar.gz: 124d5de466318ff768cfd6768889a53b6a70f94d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8715bdd5ffc289e0d96d05fa6909155a67f62973d245e8f92fe23ed1ce3380aba2c4bb04f4ceedb0050cd0f8bf7e9c3211e29ab530d04a29fb5cb8e37bd40398
|
7
|
+
data.tar.gz: 2af792b70b40a17ad0d44232fd165dd75b49971cc25c0e46b6ea91cd56fda2ad0615209b5a4082956c68dbbd9b90eccb1d6582d7b249ee21926ff62003f7de6a
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,58 @@
|
|
1
|
+
[](https://badge.fury.io/rb/script_relocator)
|
2
|
+
[](https://travis-ci.org/donv/script_relocator)
|
3
|
+
|
1
4
|
# ScriptRelocator
|
2
5
|
|
3
6
|
Rack middleware to relocate JavaScript tags to the end of an HTML response body.
|
4
|
-
|
7
|
+
|
8
|
+
Only handles non-streaming `text/html` reponses. All other responses will be left alone.
|
9
|
+
The result should be a response that more quickly can be used to render the initial page before all
|
10
|
+
scripts have been loaded.
|
11
|
+
|
12
|
+
Given an example response
|
13
|
+
|
14
|
+
```html
|
15
|
+
<html>
|
16
|
+
<head>
|
17
|
+
<script ... src="script1"></script>
|
18
|
+
</head>
|
19
|
+
<body>
|
20
|
+
...
|
21
|
+
<script ... >
|
22
|
+
script2
|
23
|
+
</script>
|
24
|
+
...
|
25
|
+
<script ... >
|
26
|
+
script3
|
27
|
+
</script>
|
28
|
+
...
|
29
|
+
</body>
|
30
|
+
</html>
|
31
|
+
```
|
32
|
+
|
33
|
+
The response will be transformed to have the scripts at the end of the `body` tag:
|
34
|
+
|
35
|
+
```html
|
36
|
+
<html>
|
37
|
+
<head>
|
38
|
+
</head>
|
39
|
+
<body>
|
40
|
+
...
|
41
|
+
...
|
42
|
+
...
|
43
|
+
<script ... src="script1" data-turbolinks-eval="false" ></script>
|
44
|
+
<script ... >
|
45
|
+
script2
|
46
|
+
</script>
|
47
|
+
<script ... >
|
48
|
+
script3
|
49
|
+
</script>
|
50
|
+
</body>
|
51
|
+
</html>
|
52
|
+
```
|
53
|
+
|
54
|
+
White space around the tags are not moved, so formatting may look a bit differently.
|
55
|
+
The ordering of the `script` tags is preserved.
|
5
56
|
|
6
57
|
|
7
58
|
## Installation
|
@@ -30,6 +81,11 @@ For other Rack application use it as middleware:
|
|
30
81
|
use ScriptRelocator::Rack
|
31
82
|
```
|
32
83
|
|
84
|
+
### TurboLinks
|
85
|
+
|
86
|
+
`script` tags inside the `head` tag are marked with the `data-turbolinks-eval="false"` attribute so
|
87
|
+
they are not re-evaluated when navigating using TurboLinks.
|
88
|
+
|
33
89
|
|
34
90
|
## Development
|
35
91
|
|
data/Rakefile
CHANGED
data/lib/script_relocator.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require "script_relocator/version"
|
2
1
|
require 'nokogiri'
|
3
2
|
|
4
3
|
module ScriptRelocator
|
@@ -22,7 +21,7 @@ module ScriptRelocator
|
|
22
21
|
s.remove
|
23
22
|
doc.at('body') << s
|
24
23
|
end
|
25
|
-
transformed_body = doc.
|
24
|
+
transformed_body = doc.canonicalize
|
26
25
|
if headers.key?('Content-Length') &&
|
27
26
|
headers['Content-Length'].to_i != transformed_body.length
|
28
27
|
headers['Content-Length'] = transformed_body.length.to_s
|
@@ -32,6 +31,4 @@ module ScriptRelocator
|
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
35
|
-
if defined?
|
36
|
-
Rails.application.config.middleware.use ScriptRelocator::Rack
|
37
|
-
end
|
34
|
+
require 'script_relocator/railtie' if defined?(Rails)
|
data/script_relocator.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ['lib']
|
21
21
|
|
22
22
|
spec.add_development_dependency 'bundler', '~> 1.10'
|
23
|
+
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
23
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
24
25
|
|
25
26
|
spec.add_runtime_dependency 'nokogiri', '~> 1.6'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: script_relocator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Uwe Kubosch
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest-reporters
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.1'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rake
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,6 +84,7 @@ files:
|
|
70
84
|
- bin/console
|
71
85
|
- bin/setup
|
72
86
|
- lib/script_relocator.rb
|
87
|
+
- lib/script_relocator/railtie.rb
|
73
88
|
- lib/script_relocator/version.rb
|
74
89
|
- script_relocator.gemspec
|
75
90
|
homepage: https://github.com/donv/script_relocator
|
@@ -92,10 +107,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
107
|
version: '0'
|
93
108
|
requirements: []
|
94
109
|
rubyforge_project:
|
95
|
-
rubygems_version: 2.
|
110
|
+
rubygems_version: 2.6.8
|
96
111
|
signing_key:
|
97
112
|
specification_version: 4
|
98
113
|
summary: Rack middleware to relocate JavaScript tags to the end of an HTML response
|
99
114
|
body.
|
100
115
|
test_files: []
|
101
|
-
has_rdoc:
|