sprockets-redirect 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e0877c3bdf8193718be044e36d63c016fe14bc22
4
- data.tar.gz: 6605e3f98f87c75dc2cca24591e586e939f0de1e
3
+ metadata.gz: b7b0d9246f5bf9ef46cce7509f22943034ab6448
4
+ data.tar.gz: f6ba49fa0ee6e9e06962b9f6084ac1efe3cac0f5
5
5
  SHA512:
6
- metadata.gz: c8867be75a126a4d6653bfd6425c26293a88854ae7c2153a55a54d2762923e2872713f4fee5ffb93edf5d0aaf099034a0964880274694c50ddeca1e6d42ab189
7
- data.tar.gz: 1f1d2840a53bb6adf625982e2cb2bbf535a6db114f36eb4686e4c9e8bc6dc51745e96f11b27dcd1de2cbc4975300bfa10b46919b8a039c32743b53c44202a757
6
+ metadata.gz: c018a1bd6ea7d5cffad27e224a484170d9ac9706ae4f3a04c31ab3d6be1a6c21807fbf0af254263ff083e68a6a17b69769b8623b815607e022566f534c18364f
7
+ data.tar.gz: 20ff5c2a6b9a2547cbab31dcf83178034d17edefce2f249ec36106ff699490647eb558ed2d10030b1a34828250064474d4ea5e4b11d0def6e0dc505de6bcd2b3
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
- Sprockets::Redirect [![Build Status](https://secure.travis-ci.org/sikachu/sprockets-redirect.png?branch=master)](http://travis-ci.org/sikachu/sprockets-redirect)
1
+ Sprockets::Redirect [![Build Status](https://secure.travis-ci.org/sikachu/sprockets-redirect.svg?branch=master)](http://travis-ci.org/sikachu/sprockets-redirect)
2
2
  ===================
3
3
 
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`
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 file generated after you run `rake assets:precompile`
5
5
 
6
6
  For example, if a browser is requesting this URL:
7
7
 
@@ -28,7 +28,7 @@ Installation
28
28
  Insert this line into your Gemfile:
29
29
 
30
30
  group :production, :staging do
31
- gem 'sprockets-redirect'
31
+ gem "sprockets-redirect"
32
32
  end
33
33
 
34
34
 
@@ -64,7 +64,15 @@ These configurations are configured via an option hash:
64
64
  * `:digests` - Set a hash used for file name lookup. This will be default to Rails' manifest at `Rails.configuration.assets.digests`.
65
65
  * `:prefix` - Set a path prefix of your assets file. This will be default to `Rails.configuration.assets.prefix` (usually at `/assets`.)
66
66
  * `:manifest` - Set a path to your own manifest file to use for lookup. This will override both `:digest` hash and `Sprockets::Redirect.manifest` setting.
67
- * `:asset_host` - Set the name of the host to use when serving assets. This is useful if you want your server to redirect to assets that are hosted on a CDN.
67
+ * `:asset_host` - Set the name of the host to use when serving assets. This is useful if you want your server to redirect to assets that are hosted on a CDN. You can also passing a `Proc` object which will be called on every asset requests to determine the host for that request:
68
+
69
+ config.middleware.swap Sprockets::Redirect,
70
+ Sprockets::Redirect,
71
+ :asset_host => Proc.new do |request|
72
+ if request.path =~ /\.min\.(js|css)\z/
73
+ "cdn.example.com"
74
+ end
75
+ end
68
76
 
69
77
  You can swap out the middleware inserted automatically by the gem by using `config.middleware.swap` in your configuration file:
70
78
 
@@ -76,7 +84,7 @@ Contributing
76
84
 
77
85
  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.
78
86
 
79
- 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
87
+ Also, you should run `appraisal rake` to run the test against multiple versions of Ruby. We're currently testing against latest patch version of Rails 3.1, 3.2, 4.0, 4.1, 4.2, and 5.0.0 beta.
80
88
 
81
89
 
82
90
  License
@@ -4,7 +4,10 @@ module Sprockets
4
4
  class RedirectRailtie < ::Rails::Railtie
5
5
  initializer "insert_sprockets_redirect_middleware" do |app|
6
6
  if !::Rails.configuration.assets.compile && ::Rails.configuration.assets.digest
7
- app.middleware.insert 0, Sprockets::Redirect, ::Rails.application.assets,
7
+ app.middleware.insert 0,
8
+ Sprockets::Redirect,
9
+ ::Rails.application.assets ||
10
+ Sprockets::Railtie.build_manifest(::Rails.application).assets,
8
11
  :prefix => ::Rails.configuration.assets.prefix,
9
12
  :asset_host => ::Rails.configuration.action_controller.asset_host
10
13
  end
@@ -69,21 +69,40 @@ module Sprockets
69
69
  end
70
70
 
71
71
  def digest_path
72
- @environment[logical_path].digest_path
72
+ if @environment[logical_path].respond_to?(:digest_path)
73
+ @environment[logical_path].digest_path
74
+ else
75
+ @environment[logical_path]
76
+ end
73
77
  end
74
78
 
75
79
  # Sends a redirect header back to browser
76
80
  def redirect_to_digest_version(env)
77
- url = URI(@asset_host || @request.url)
81
+ url = URI(computed_asset_host || @request.url)
78
82
  url.path = "#{@prefix}/#{digest_path}"
79
83
 
80
84
  headers = { 'Location' => url.to_s,
81
85
  'Content-Type' => Rack::Mime.mime_type(::File.extname(digest_path)),
82
86
  'Pragma' => 'no-cache',
83
87
  'Cache-Control' => 'no-cache; max-age=0' }
88
+
84
89
  [self.class.redirect_status, headers, [redirect_message(url.to_s)]]
85
90
  end
86
91
 
92
+ def computed_asset_host
93
+ if @asset_host.respond_to?(:call)
94
+ host = @asset_host.call(@request)
95
+ else
96
+ host = @asset_host
97
+ end
98
+
99
+ if host.nil? || host =~ %r(^https?://)
100
+ host
101
+ else
102
+ "#{@request.scheme}://#{host}"
103
+ end
104
+ end
105
+
87
106
  # Create a default redirect message
88
107
  def redirect_message(location)
89
108
  %Q(Redirecting to <a href="#{location}">#{location}</a>)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprockets-redirect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Prem Sichanugrist
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-30 00:00:00.000000000 Z
11
+ date: 2016-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.0.beta2
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0.beta2
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -122,10 +122,24 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: test-unit
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  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.
140
+ Rack middleware which will look up your assets manifest file and redirect a
141
+ request with no digest in the file name to the version with digest in the
142
+ file name.
129
143
  email: s@sikac.hu
130
144
  executables: []
131
145
  extensions: []
@@ -137,7 +151,8 @@ files:
137
151
  - lib/sprockets-redirect.rb
138
152
  - lib/sprockets/redirect.rb
139
153
  homepage: https://github.com/sikachu/sprockets-redirect
140
- licenses: []
154
+ licenses:
155
+ - MIT
141
156
  metadata: {}
142
157
  post_install_message:
143
158
  rdoc_options: []
@@ -155,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
170
  version: '0'
156
171
  requirements: []
157
172
  rubyforge_project:
158
- rubygems_version: 2.4.5
173
+ rubygems_version: 2.5.1
159
174
  signing_key:
160
175
  specification_version: 4
161
176
  summary: Redirect assets with no digest request to a filename with digest version.