sprockets-redirect 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 +7 -0
- data/README.md +3 -1
- data/lib/sprockets-redirect.rb +4 -4
- data/lib/sprockets/redirect.rb +27 -18
- metadata +102 -24
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 05665c3e2fd0b0271a7ee7cdeefae5f5e0d06f47
|
4
|
+
data.tar.gz: eb0e49c4fa65361437f8909aac5eb1aa1a2a2978
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5eb94d40046f8d64ac573c254f69a6c1b79e9b72bf134c486f33c7f43aad8d683c2e0e2bbc9589e2ea28da0de05130f84b66907324307ac1bbabc6b9d2f85f30
|
7
|
+
data.tar.gz: f9e317cf8c54c037bdd54dab20067e6c9c0317b85d038911d9f5f91b60c63a894d55f664d296ec4ccb09c9dc08e1187394dbbe444fb1f63abe6e636ab5c1348b
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Sprockets::Redirect [](http://travis-ci.org/sikachu/sprockets-redirect)
|
2
2
|
===================
|
3
3
|
|
4
4
|
A Rack middleware for [Rails](https://github.com/rails/rails) >= 3.1.0 with asset pipeline and asset digest enabled. This middleware is used to redirect any request to static asset without a digest to the version with digest in its filename by reading the `manifest.yml` file generated after you run `rake assets:precompile`
|
@@ -75,6 +75,8 @@ Contributing
|
|
75
75
|
|
76
76
|
If you found any bug or would like to request a feature, please use Github's [issue tracker](https://github.com/sikachu/sprockets-redirect/issues) to report them. [Pull requests](https://github.com/sikachu/sprockets-redirect/pulls) are always welcomed if you also want to help me fix it. Please make sure to include a test to make sure that I don't break it in the future.
|
77
77
|
|
78
|
+
Also, you should run `rake test_all` to run the test against multiple versions of Ruby. We're currently testing against Rails 3.1, 3.2 and 4.0
|
79
|
+
|
78
80
|
|
79
81
|
License
|
80
82
|
-------
|
data/lib/sprockets-redirect.rb
CHANGED
@@ -2,10 +2,10 @@ require 'sprockets/redirect'
|
|
2
2
|
|
3
3
|
module Sprockets
|
4
4
|
class RedirectRailtie < ::Rails::Railtie
|
5
|
-
initializer "
|
6
|
-
if
|
7
|
-
app.middleware.
|
8
|
-
|
5
|
+
initializer "insert_sprockets_redirect_middleware" do |app|
|
6
|
+
if !::Rails.configuration.assets.compile && ::Rails.configuration.assets.digest
|
7
|
+
app.middleware.insert 0, Sprockets::Redirect, ::Rails.application.assets,
|
8
|
+
:prefix => ::Rails.configuration.assets.prefix
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
data/lib/sprockets/redirect.rb
CHANGED
@@ -24,11 +24,6 @@ module Sprockets
|
|
24
24
|
# E-Mail which refers to static assets in the asset pipeline, which might be
|
25
25
|
# impossible and impractical for you to use an URL with a digest in it.
|
26
26
|
class Redirect
|
27
|
-
|
28
|
-
# Set a path to manifest file, which will be used for lookup
|
29
|
-
class_attribute :manifest
|
30
|
-
self.manifest = nil
|
31
|
-
|
32
27
|
# Set this to false to disable middleware's redirection
|
33
28
|
class_attribute :enabled
|
34
29
|
self.enabled = true
|
@@ -37,38 +32,52 @@ module Sprockets
|
|
37
32
|
class_attribute :redirect_status
|
38
33
|
self.redirect_status = 302
|
39
34
|
|
40
|
-
def initialize(app, options = {})
|
35
|
+
def initialize(app, sprockets_environment, options = {})
|
41
36
|
@app = app
|
42
|
-
@digests = options[:digests] || []
|
43
37
|
@prefix = options[:prefix] || "/assets"
|
44
|
-
|
45
|
-
@digests = YAML.load_file manifest
|
46
|
-
end
|
38
|
+
@environment = sprockets_environment
|
47
39
|
end
|
48
40
|
|
49
41
|
def call(env)
|
50
|
-
|
42
|
+
@request = Rack::Request.new(env)
|
43
|
+
|
44
|
+
if should_redirect?
|
51
45
|
redirect_to_digest_version(env)
|
52
46
|
else
|
53
47
|
@app.call(env)
|
54
48
|
end
|
55
49
|
end
|
56
50
|
|
57
|
-
|
51
|
+
private
|
52
|
+
|
53
|
+
def should_redirect?
|
54
|
+
self.class.enabled && asset_path_matched?
|
55
|
+
end
|
58
56
|
|
59
57
|
# This will returns true if a requested path is matched in the digests hash
|
60
|
-
def
|
61
|
-
@request
|
62
|
-
|
58
|
+
def asset_path_matched?
|
59
|
+
@request.path.start_with?(@prefix) && asset_exists?
|
60
|
+
end
|
61
|
+
|
62
|
+
def asset_exists?
|
63
|
+
@environment[logical_path]
|
64
|
+
end
|
65
|
+
|
66
|
+
def logical_path
|
67
|
+
@request.path.sub(/^#{@prefix}\//, "")
|
68
|
+
end
|
69
|
+
|
70
|
+
def digest_path
|
71
|
+
@environment[logical_path].digest_path
|
63
72
|
end
|
64
73
|
|
65
74
|
# Sends a redirect header back to browser
|
66
75
|
def redirect_to_digest_version(env)
|
67
76
|
url = URI(@request.url)
|
68
|
-
|
69
|
-
|
77
|
+
url.path = "#{@prefix}/#{digest_path}"
|
78
|
+
|
70
79
|
headers = { 'Location' => url.to_s,
|
71
|
-
'Content-Type' => Rack::Mime.mime_type(::File.extname(
|
80
|
+
'Content-Type' => Rack::Mime.mime_type(::File.extname(digest_path)),
|
72
81
|
'Pragma' => 'no-cache',
|
73
82
|
'Cache-Control' => 'no-cache; max-age=0' }
|
74
83
|
[self.class.redirect_status, headers, [redirect_message(url.to_s)]]
|
metadata
CHANGED
@@ -1,52 +1,131 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprockets-redirect
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Prem Sichanugrist
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-01-04 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rack
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: activesupport
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: 3.1.0
|
33
34
|
type: :runtime
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: appraisal
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.0.0.beta2
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.0.0.beta2
|
36
55
|
- !ruby/object:Gem::Dependency
|
37
56
|
name: bundler
|
38
|
-
requirement:
|
39
|
-
|
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: mocha
|
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
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rack-test
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
40
100
|
requirements:
|
41
|
-
- -
|
101
|
+
- - '>='
|
42
102
|
- !ruby/object:Gem::Version
|
43
103
|
version: '0'
|
44
104
|
type: :development
|
45
105
|
prerelease: false
|
46
|
-
version_requirements:
|
47
|
-
|
48
|
-
|
49
|
-
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rails
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: |2
|
126
|
+
Rack middleware which will look up your `public/assets/manifest.yml` and
|
127
|
+
redirect a request with no digest in the file name to the version with
|
128
|
+
digest in the file name.
|
50
129
|
email: s@sikac.hu
|
51
130
|
executables: []
|
52
131
|
extensions: []
|
@@ -59,26 +138,25 @@ files:
|
|
59
138
|
- README.md
|
60
139
|
homepage: https://github.com/sikachu/sprockets-redirect
|
61
140
|
licenses: []
|
141
|
+
metadata: {}
|
62
142
|
post_install_message:
|
63
143
|
rdoc_options: []
|
64
144
|
require_paths:
|
65
145
|
- lib
|
66
146
|
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
147
|
requirements:
|
69
|
-
- -
|
148
|
+
- - '>='
|
70
149
|
- !ruby/object:Gem::Version
|
71
150
|
version: '0'
|
72
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
152
|
requirements:
|
75
|
-
- -
|
153
|
+
- - '>='
|
76
154
|
- !ruby/object:Gem::Version
|
77
155
|
version: '0'
|
78
156
|
requirements: []
|
79
157
|
rubyforge_project:
|
80
|
-
rubygems_version:
|
158
|
+
rubygems_version: 2.0.14
|
81
159
|
signing_key:
|
82
|
-
specification_version:
|
160
|
+
specification_version: 4
|
83
161
|
summary: Redirect assets with no digest request to a filename with digest version.
|
84
162
|
test_files: []
|