rack-manifest 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +9 -8
- data/example/Gemfile.lock +1 -1
- data/example/config/manifest.yml +7 -7
- data/example/config.ru +1 -1
- data/lib/rack/manifest/sprockets.rb +17 -0
- data/lib/rack/manifest/version.rb +1 -1
- data/lib/rack/manifest.rb +42 -16
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2795a5909d3982a7fa52c2a20134d98fde8a159
|
4
|
+
data.tar.gz: 9b442a844641207709a202ad38ef44d26157fea1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d768b0be298236f7b31af6b1e9545ba3bac5f73c259df6319b8bdb3f6337bbebdb5207fd1b27aadb5f1addd929ace6d09b60eb32c63eac499feefeb449ae556
|
7
|
+
data.tar.gz: 5874b0b22c9a93149434705b7a3d225b5434651f93bf042256fc2c87fc28316c535a286ff40cd714152ece9caf3ed7494167a58331171ddc849773161899abcb
|
data/README.md
CHANGED
@@ -14,17 +14,18 @@ gem 'rack-manifest'
|
|
14
14
|
## Usage
|
15
15
|
|
16
16
|
### Rails
|
17
|
-
Set your manifest.yml file like this one into your `config` directory.
|
17
|
+
* Set your manifest.yml file like this one into your `config` directory.
|
18
|
+
* ERB format and asset path helpers are available.
|
18
19
|
|
19
20
|
```yaml
|
20
|
-
name:
|
21
|
-
short_name:
|
21
|
+
name: Rack Manifest
|
22
|
+
short_name: Manifest
|
22
23
|
icons:
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
start_url:
|
27
|
-
display:
|
24
|
+
- src: <%= image_path('icon.png') %>
|
25
|
+
sizes: 512x512
|
26
|
+
type: image/png
|
27
|
+
start_url: /
|
28
|
+
display: standalone
|
28
29
|
```
|
29
30
|
|
30
31
|
## License
|
data/example/Gemfile.lock
CHANGED
data/example/config/manifest.yml
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
name:
|
2
|
-
short_name:
|
1
|
+
name: Rack Manifest
|
2
|
+
short_name: Manifest
|
3
3
|
icons:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
start_url:
|
8
|
-
display:
|
4
|
+
- src: <%= 'images/icon.png' %>
|
5
|
+
sizes: 512x512
|
6
|
+
type: image/png
|
7
|
+
start_url: /
|
8
|
+
display: standalone
|
data/example/config.ru
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'sprockets/cache'
|
2
|
+
require 'sprockets/erb_processor'
|
3
|
+
|
4
|
+
module Rack::Manifest::Sprockets
|
5
|
+
def load_yaml path
|
6
|
+
input = {
|
7
|
+
environment: Rails.application.assets,
|
8
|
+
filename: 'manifest.yml.erb',
|
9
|
+
content_type: 'text/yaml',
|
10
|
+
data: File.read(path),
|
11
|
+
metadata: {},
|
12
|
+
cache: Sprockets::Cache.new
|
13
|
+
}
|
14
|
+
result = Sprockets::ERBProcessor.call(input)
|
15
|
+
YAML.load(result[:data])
|
16
|
+
end
|
17
|
+
end
|
data/lib/rack/manifest.rb
CHANGED
@@ -1,27 +1,53 @@
|
|
1
|
-
require 'yaml'
|
2
1
|
require 'json'
|
2
|
+
require 'erb'
|
3
|
+
require 'action_view/helpers/asset_url_helper'
|
4
|
+
require 'rack/request'
|
3
5
|
require 'rack/manifest/version'
|
4
6
|
require 'rack/manifest/rails' if defined?(Rails::Railtie)
|
7
|
+
require 'rack/manifest/sprockets' if defined?(Sprockets) && defined?(Rails)
|
5
8
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
9
|
+
class Rack::Manifest
|
10
|
+
FILE_PATH = './config/manifest.yml'
|
11
|
+
|
12
|
+
if defined?(Sprockets) && defined?(Rails)
|
13
|
+
include Rack::Manifest::Sprockets
|
14
|
+
else
|
15
|
+
def load_yaml path
|
16
|
+
YAML.load(ERB.new(File.read(path)).result)
|
10
17
|
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def initialize(app)
|
21
|
+
@app = app
|
22
|
+
end
|
11
23
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
[
|
17
|
-
|
18
|
-
{'Content-Type' => 'application/json'},
|
19
|
-
[json]
|
20
|
-
]
|
21
|
-
else
|
22
|
-
@app.call(env)
|
24
|
+
def call(env)
|
25
|
+
if env['PATH_INFO'] == '/manifest.json'
|
26
|
+
headers = {}
|
27
|
+
if env.has_key?('HTTP_IF_MODIFIED_SINCE')
|
28
|
+
fetched_date = env['HTTP_IF_MODIFIED_SINCE']
|
29
|
+
return [304, headers, []] if get_modified_time(FILE_PATH) == fetched_date
|
23
30
|
end
|
31
|
+
manifest = load_yaml(FILE_PATH)
|
32
|
+
json = JSON.generate(manifest)
|
33
|
+
[
|
34
|
+
200,
|
35
|
+
headers.merge({
|
36
|
+
'Content-Type' => 'application/json',
|
37
|
+
'Last-Modified' => get_modified_time(FILE_PATH),
|
38
|
+
'Content-Length' => json.length.to_s
|
39
|
+
}),
|
40
|
+
[json]
|
41
|
+
]
|
42
|
+
else
|
43
|
+
@app.call(env)
|
24
44
|
end
|
25
45
|
end
|
46
|
+
|
47
|
+
private
|
48
|
+
def get_modified_time(path)
|
49
|
+
time = File.mtime(path)
|
50
|
+
time.strftime('%a, %d %b %Y %H:%M:%S GMT')
|
51
|
+
end
|
26
52
|
end
|
27
53
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-manifest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- syumai
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- example/config/manifest.yml
|
87
87
|
- lib/rack/manifest.rb
|
88
88
|
- lib/rack/manifest/rails.rb
|
89
|
+
- lib/rack/manifest/sprockets.rb
|
89
90
|
- lib/rack/manifest/version.rb
|
90
91
|
- rack-manifest.gemspec
|
91
92
|
homepage: https://github.com/syumai/rack-manifest
|