rack-manifest 0.1.2 → 0.1.3
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/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
|