asset_access_control 0.0.1
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.
- data/.gitignore +5 -0
- data/.rspec +2 -0
- data/CHANGELOG.md +37 -0
- data/Gemfile +4 -0
- data/README.md +111 -0
- data/Rakefile +1 -0
- data/asset_access_control.gemspec +24 -0
- data/bin/autospec +16 -0
- data/bin/htmldiff +16 -0
- data/bin/ldiff +16 -0
- data/bin/rackup +16 -0
- data/bin/rspec +16 -0
- data/lib/asset_access_control/middleware.rb +47 -0
- data/lib/asset_access_control/railtie.rb +13 -0
- data/lib/asset_access_control/version.rb +3 -0
- data/lib/asset_access_control.rb +5 -0
- data/spec/middleware_spec.rb +88 -0
- data/spec/spec_helper.rb +5 -0
- metadata +102 -0
data/.rspec
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
### master
|
2
|
+
|
3
|
+
### 0.1.1 / 2012-01-18
|
4
|
+
|
5
|
+
[full changelog](https://github.com/rubymaverick/font_assets/compare/v0.1.0...v0.1.1)
|
6
|
+
|
7
|
+
Bug Fixes
|
8
|
+
|
9
|
+
* Fix Rack::File#empty? call in middleware causing an exception.
|
10
|
+
|
11
|
+
### 0.1.0 / 2012-01-18
|
12
|
+
|
13
|
+
[full changelog](https://github.com/rubymaverick/font_assets/compare/v0.0.2...v0.1.0)
|
14
|
+
|
15
|
+
Enhancements
|
16
|
+
|
17
|
+
* Refactor MIME type settings into a local object.
|
18
|
+
* Add RSpec specs on the middleware and mime type handler.
|
19
|
+
* Update the README with more detail and examples.
|
20
|
+
* Fixed a typo in "ttf" in the middleware.
|
21
|
+
* Removed duplicate Railtie definition.
|
22
|
+
|
23
|
+
Bug Fixes
|
24
|
+
|
25
|
+
* Fix MIME types not being properly set in recent versions of Rack (starting in [Rack 1.3.0](https://github.com/rack/rack/commit/469518f7d971ba99fc335cf546d605d2364c81aa))
|
26
|
+
|
27
|
+
### 0.0.2 / 2011-12-15
|
28
|
+
|
29
|
+
[full changelog](https://github.com/rubymaverick/font_assets/compare/v0.0.1...v0.0.2)
|
30
|
+
|
31
|
+
Enhancements
|
32
|
+
|
33
|
+
* Make MIME setting more future-compatible by optionally setting it.
|
34
|
+
|
35
|
+
### 0.0.1 / 2011-12-15
|
36
|
+
|
37
|
+
Initial release.
|
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
Font Assets
|
2
|
+
=============
|
3
|
+
|
4
|
+
This little gem helps serve font-face assets in Rails 3.1. It really does these
|
5
|
+
two things:
|
6
|
+
|
7
|
+
* Responds with "proper" mime types for woff, eot, tff, and svg font files, and
|
8
|
+
* Sets Access-Control-Allow-Origin response headers for font assets, which Firefox requires for cross domain fonts.
|
9
|
+
|
10
|
+
In addition, it will also respond to the pre-flight OPTIONS requests made by
|
11
|
+
supporting browsers (Firefox).
|
12
|
+
|
13
|
+
Install
|
14
|
+
-------
|
15
|
+
|
16
|
+
Add `font_assets` to your Gemfile:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem 'font_assets'
|
20
|
+
```
|
21
|
+
|
22
|
+
|
23
|
+
Usage
|
24
|
+
-----
|
25
|
+
|
26
|
+
By default, in a Rails application, this gem should Just Work™. However, the
|
27
|
+
default settings allow any requesting site to use the linked fonts, due to the
|
28
|
+
Allowed Origin being '*', by default. This is only useful for browsers which
|
29
|
+
support this feature (Firefox), but restricting it to certain domains may be
|
30
|
+
beneficial.
|
31
|
+
|
32
|
+
Set the origin domain that will get set in the `Access-Control-Allow-Origin`
|
33
|
+
header:
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
# in config/environments/production.rb
|
37
|
+
config.font_assets.origin = 'http://codeschool.com'
|
38
|
+
```
|
39
|
+
|
40
|
+
The origin domain must match the domain of the site serving the page that is
|
41
|
+
requesting the font, not the host of the font. For example, if you are using a
|
42
|
+
CDN to serve your assets (like CloudFront), and the full path to the font asset
|
43
|
+
is `http://d3rd6rvl24noqd.cloudfront.net/assets/fonts/Pacifico-webfont-734f1436e605566ae2f1c132905e28b2.woff`,
|
44
|
+
but the URI the user is visiting is `http://coffeescript.codeschool.com/level/1`,
|
45
|
+
you'd want to set the origin header to this:
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
config.font_assets.origin = 'http://coffeescript.codeschool.com'
|
49
|
+
```
|
50
|
+
|
51
|
+
An Example Response
|
52
|
+
-------------------
|
53
|
+
|
54
|
+
Below is an example response for a .woff font asset on a Rails 3.1 application
|
55
|
+
running behind several proxies and caches (including CloudFront):
|
56
|
+
|
57
|
+
```
|
58
|
+
$ curl -i http://d1tijy5l7mg5kk.cloudfront.net/assets/ubuntu/Ubuntu-Bold-webfont-4bcb5239bfd34be67bc07901959fc6e1.woff
|
59
|
+
HTTP/1.0 200 OK
|
60
|
+
Server: nginx
|
61
|
+
Date: Sat, 14 Jan 2012 19:45:19 GMT
|
62
|
+
Content-Type: application/x-font-woff
|
63
|
+
Last-Modified: Sat, 14 Jan 2012 16:58:14 GMT
|
64
|
+
Cache-Control: public, max-age=31557600
|
65
|
+
Access-Control-Allow-Origin: http://www.codeschool.com
|
66
|
+
Access-Control-Allow-Methods: GET
|
67
|
+
Access-Control-Allow-Headers: x-requested-with
|
68
|
+
Access-Control-Max-Age: 3628800
|
69
|
+
X-Content-Digest: 66049433125f563329c4178848643536f76459e5
|
70
|
+
X-Rack-Cache: fresh
|
71
|
+
Content-Length: 17440
|
72
|
+
X-Varnish: 311344447
|
73
|
+
Age: 289983
|
74
|
+
X-Cache: Hit from cloudfront
|
75
|
+
X-Amz-Cf-Id: 9yzifs_hIQF_MxPLwSR8zck3eZVXJ8LFKpMUpXnu2SmMuEmyrUbHdQ==,Lbh9kfjr0YRm77seSmOSQ6oFkUEMabvtFStJLhTOy9BfGrIXVneoKQ==
|
76
|
+
Via: 1.1 varnish, 1.0 2815dd16e8c2a0074b81a6148bd8aa3a.cloudfront.net:11180 (CloudFront), 1.0 f9e7403ca14431787835521769ace98a.cloudfront.net:11180 (CloudFront)
|
77
|
+
Connection: close
|
78
|
+
```
|
79
|
+
|
80
|
+
In it, you can see where this middleware has injected the `Content-Type` and
|
81
|
+
`Access-Control-*` headers into the response.
|
82
|
+
|
83
|
+
And below is an example OPTIONS request response:
|
84
|
+
|
85
|
+
```
|
86
|
+
$ curl -i -X OPTIONS http://www.codeschool.com/
|
87
|
+
HTTP/1.1 200 OK
|
88
|
+
Server: nginx
|
89
|
+
Date: Wed, 18 Jan 2012 04:13:25 GMT
|
90
|
+
Connection: keep-alive
|
91
|
+
Access-Control-Allow-Origin: http://www.codeschool.com
|
92
|
+
Access-Control-Allow-Methods: GET
|
93
|
+
Access-Control-Allow-Headers: x-requested-with
|
94
|
+
Access-Control-Max-Age: 3628800
|
95
|
+
Vary: Accept-Encoding
|
96
|
+
X-Rack-Cache: invalidate, pass
|
97
|
+
Content-Length: 0
|
98
|
+
```
|
99
|
+
|
100
|
+
License
|
101
|
+
-------
|
102
|
+
|
103
|
+
Font Assets is released under the MIT license.
|
104
|
+
|
105
|
+
Contributors
|
106
|
+
------------
|
107
|
+
|
108
|
+
* [Nathanial Bibler](https://github.com/nbibler)
|
109
|
+
* [Eric Allam](https://github.com/rubymaverick)
|
110
|
+
* [Ryan Montgomery](https://github.com/rmontgomery429)
|
111
|
+
* [Jack Foy](https://github.com/jfoy)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
# -*- encoding: utf-8 -*-
|
3
|
+
$:.push File.expand_path("../lib", __FILE__)
|
4
|
+
require "asset_access_control/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "asset_access_control"
|
8
|
+
s.version = AssetAccessControl::VERSION
|
9
|
+
s.authors = ["Eric Allam"]
|
10
|
+
s.email = ["rubymaverick@gmail.com"]
|
11
|
+
s.homepage = "https://github.com/rubymaverick/asset_access_control"
|
12
|
+
s.summary = %q{Set Access Control headers on asset requests in Rails 3.1}
|
13
|
+
s.description = %q{Set Access Control headers on asset requests in Rails 3.1}
|
14
|
+
|
15
|
+
s.rubyforge_project = "asset_access_control"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_dependency "rack"
|
23
|
+
s.add_development_dependency "rspec", "~>2.0"
|
24
|
+
end
|
data/bin/autospec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'autospec' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('rspec-core', 'autospec')
|
data/bin/htmldiff
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'htmldiff' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('diff-lcs', 'htmldiff')
|
data/bin/ldiff
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'ldiff' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('diff-lcs', 'ldiff')
|
data/bin/rackup
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'rackup' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('rack', 'rackup')
|
data/bin/rspec
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# This file was generated by Bundler.
|
4
|
+
#
|
5
|
+
# The application 'rspec' is installed as part of a gem, and
|
6
|
+
# this file is here to facilitate running it.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'pathname'
|
10
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
+
Pathname.new(__FILE__).realpath)
|
12
|
+
|
13
|
+
require 'rubygems'
|
14
|
+
require 'bundler/setup'
|
15
|
+
|
16
|
+
load Gem.bin_path('rspec-core', 'rspec')
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'rack'
|
2
|
+
|
3
|
+
module AssetAccessControl
|
4
|
+
class Middleware
|
5
|
+
|
6
|
+
def initialize(app, origin)
|
7
|
+
@app = app
|
8
|
+
@origin = origin
|
9
|
+
end
|
10
|
+
|
11
|
+
def access_control_headers
|
12
|
+
{
|
13
|
+
"Access-Control-Allow-Origin" => @origin,
|
14
|
+
"Access-Control-Allow-Methods" => "GET",
|
15
|
+
"Access-Control-Allow-Headers" => "x-requested-with",
|
16
|
+
"Access-Control-Max-Age" => "3628800"
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def call(env)
|
21
|
+
# intercept the "preflight" request
|
22
|
+
if env["REQUEST_METHOD"] == "OPTIONS"
|
23
|
+
return [200, access_control_headers, []]
|
24
|
+
else
|
25
|
+
code, headers, body = @app.call(env)
|
26
|
+
set_headers! headers, body, env["PATH_INFO"]
|
27
|
+
[code, headers, body]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def extension(path)
|
34
|
+
"." + path.split("?").first.split(".").last
|
35
|
+
end
|
36
|
+
|
37
|
+
def asset?(path)
|
38
|
+
%w(.css .js).include? extension(path)
|
39
|
+
end
|
40
|
+
|
41
|
+
def set_headers!(headers, body, path)
|
42
|
+
if ext = extension(path) and asset?(ext)
|
43
|
+
headers.merge!(access_control_headers)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'asset_access_control/middleware'
|
2
|
+
|
3
|
+
module AssetAccessControl
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
config.asset_access_control = ActiveSupport::OrderedOptions.new
|
6
|
+
|
7
|
+
initializer "asset_access_control.configure_rails_initialization" do |app|
|
8
|
+
config.asset_access_control.origin ||= "*"
|
9
|
+
|
10
|
+
app.middleware.insert_before 'Rack::Lock', AssetAccessControl::Middleware, config.asset_access_control.origin
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'asset_access_control/middleware'
|
3
|
+
|
4
|
+
describe AssetAccessControl::Middleware do
|
5
|
+
it 'passes all Rack::Lint checks' do
|
6
|
+
app = Rack::Lint.new(load_app)
|
7
|
+
request app, '/'
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'for GET requests' do
|
11
|
+
context 'to a css asset' do
|
12
|
+
let(:app) { load_app 'http://test.origin' }
|
13
|
+
let(:response) { request app, '/test.css' }
|
14
|
+
|
15
|
+
context 'the response headers' do
|
16
|
+
subject { response[1] }
|
17
|
+
|
18
|
+
its(["Access-Control-Allow-Headers"]) { should == "x-requested-with" }
|
19
|
+
its(["Access-Control-Max-Age"]) { should == "3628800" }
|
20
|
+
its(['Access-Control-Allow-Methods']) { should == 'GET' }
|
21
|
+
its(['Access-Control-Allow-Origin']) { should == 'http://test.origin' }
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'to a js asset' do
|
26
|
+
let(:app) { load_app 'http://test.origin' }
|
27
|
+
let(:response) { request app, '/test.js' }
|
28
|
+
|
29
|
+
context 'the response headers' do
|
30
|
+
subject { response[1] }
|
31
|
+
|
32
|
+
its(["Access-Control-Allow-Headers"]) { should == "x-requested-with" }
|
33
|
+
its(["Access-Control-Max-Age"]) { should == "3628800" }
|
34
|
+
its(['Access-Control-Allow-Methods']) { should == 'GET' }
|
35
|
+
its(['Access-Control-Allow-Origin']) { should == 'http://test.origin' }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'to a non asset' do
|
40
|
+
let(:app) { load_app }
|
41
|
+
let(:response) { request app, '/' }
|
42
|
+
|
43
|
+
context 'the response headers' do
|
44
|
+
subject { response[1] }
|
45
|
+
|
46
|
+
its(["Access-Control-Allow-Headers"]) { should be_nil }
|
47
|
+
its(["Access-Control-Max-Age"]) { should be_nil }
|
48
|
+
its(['Access-Control-Allow-Methods']) { should be_nil }
|
49
|
+
its(['Access-Control-Allow-Origin']) { should be_nil }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'for OPTIONS requests' do
|
55
|
+
let(:app) { load_app 'http://test.options' }
|
56
|
+
let(:response) { request app, '/test.css', :method => 'OPTIONS' }
|
57
|
+
|
58
|
+
context 'the response headers' do
|
59
|
+
subject { response[1] }
|
60
|
+
|
61
|
+
its(["Access-Control-Allow-Headers"]) { should == "x-requested-with" }
|
62
|
+
its(["Access-Control-Max-Age"]) { should == "3628800" }
|
63
|
+
its(['Access-Control-Allow-Methods']) { should == 'GET' }
|
64
|
+
its(['Access-Control-Allow-Origin']) { should == 'http://test.options' }
|
65
|
+
end
|
66
|
+
|
67
|
+
context 'the response body' do
|
68
|
+
subject { response[2] }
|
69
|
+
it { should be_empty }
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
|
77
|
+
def load_app(origin = 'http://test.local')
|
78
|
+
described_class.new(inner_app, origin)
|
79
|
+
end
|
80
|
+
|
81
|
+
def inner_app
|
82
|
+
lambda { |env| [200, {'Content-Type' => 'text/plain'}, 'Success'] }
|
83
|
+
end
|
84
|
+
|
85
|
+
def request(app, path, options = {})
|
86
|
+
app.call Rack::MockRequest.env_for(path, options)
|
87
|
+
end
|
88
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: asset_access_control
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Eric Allam
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-11-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rack
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '2.0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '2.0'
|
46
|
+
description: Set Access Control headers on asset requests in Rails 3.1
|
47
|
+
email:
|
48
|
+
- rubymaverick@gmail.com
|
49
|
+
executables:
|
50
|
+
- autospec
|
51
|
+
- htmldiff
|
52
|
+
- ldiff
|
53
|
+
- rackup
|
54
|
+
- rspec
|
55
|
+
extensions: []
|
56
|
+
extra_rdoc_files: []
|
57
|
+
files:
|
58
|
+
- .gitignore
|
59
|
+
- .rspec
|
60
|
+
- CHANGELOG.md
|
61
|
+
- Gemfile
|
62
|
+
- README.md
|
63
|
+
- Rakefile
|
64
|
+
- asset_access_control.gemspec
|
65
|
+
- bin/autospec
|
66
|
+
- bin/htmldiff
|
67
|
+
- bin/ldiff
|
68
|
+
- bin/rackup
|
69
|
+
- bin/rspec
|
70
|
+
- lib/asset_access_control.rb
|
71
|
+
- lib/asset_access_control/middleware.rb
|
72
|
+
- lib/asset_access_control/railtie.rb
|
73
|
+
- lib/asset_access_control/version.rb
|
74
|
+
- spec/middleware_spec.rb
|
75
|
+
- spec/spec_helper.rb
|
76
|
+
homepage: https://github.com/rubymaverick/asset_access_control
|
77
|
+
licenses: []
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options: []
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
requirements: []
|
95
|
+
rubyforge_project: asset_access_control
|
96
|
+
rubygems_version: 1.8.24
|
97
|
+
signing_key:
|
98
|
+
specification_version: 3
|
99
|
+
summary: Set Access Control headers on asset requests in Rails 3.1
|
100
|
+
test_files:
|
101
|
+
- spec/middleware_spec.rb
|
102
|
+
- spec/spec_helper.rb
|