rack-zippy 2.0.2 → 3.0.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.
- data/CHANGELOG.md +3 -0
- data/README.md +17 -1
- data/lib/rack-zippy.rb +5 -3
- data/lib/rack-zippy/configuration.rb +37 -0
- data/lib/rack-zippy/serveable_file.rb +1 -1
- data/lib/rack-zippy/version.rb +1 -1
- data/test/asset_server_test.rb +1 -5
- data/test/configuration_test.rb +62 -0
- data/test/serveable_file_test.rb +8 -1
- metadata +7 -4
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -85,6 +85,21 @@ Any files given the `max_age_fallback` would have the following `Cache-Control`
|
|
|
85
85
|
Cache-Control: public, max-age=600
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
+
### Configuration
|
|
89
|
+
|
|
90
|
+
#### static_extensions
|
|
91
|
+
|
|
92
|
+
rack-zippy handles only files with whitelisted extensions. Default extensions list:
|
|
93
|
+
`css js html htm txt ico png jpg jpeg gif pdf svg zip gz eps psd ai woff woff2 ttf eot otf swf`
|
|
94
|
+
|
|
95
|
+
You can modify this list:
|
|
96
|
+
|
|
97
|
+
```ruby
|
|
98
|
+
Rack::Zippy.configure do |config|
|
|
99
|
+
config.static_extensions << 'csv'
|
|
100
|
+
end
|
|
101
|
+
```
|
|
102
|
+
|
|
88
103
|
## Troubleshooting
|
|
89
104
|
|
|
90
105
|
##### 'assert_index': No such middleware to insert before: ActionDispatch::Static (RuntimeError)
|
|
@@ -139,13 +154,14 @@ Cleanup time! When you’re finished testing, delete the local override and set
|
|
|
139
154
|
- Eliot Sykes https://eliotsykes.com
|
|
140
155
|
- Kieran Topping https://github.com/ktopping
|
|
141
156
|
- Luke Wendling https://github.com/lukewendling
|
|
142
|
-
|
|
157
|
+
- Anton Petrunich https://github.com/solenko
|
|
143
158
|
|
|
144
159
|
## Releasing a new gem
|
|
145
160
|
|
|
146
161
|
1. Update pre-release version to the release version in `lib/rack-zippy/version.rb`, e.g. `1.0.1.pre` becomes `1.0.1`
|
|
147
162
|
2. Update `CHANGELOG.md` version and date. Update Contributors in `README.md`.
|
|
148
163
|
3. Tests pass? (`rake test`)
|
|
164
|
+
4. Commit and push changes to origin.
|
|
149
165
|
4. Build the gem (`rake build`)
|
|
150
166
|
5. Release on rubygems.org (`rake release`)
|
|
151
167
|
6. Update version to the next pre-release version in `lib/rack-zippy/version.rb`, e.g. `1.0.1` becomes `1.0.2.pre`.
|
data/lib/rack-zippy.rb
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
require 'rack-zippy/version'
|
|
2
2
|
require 'rack-zippy/asset_compiler'
|
|
3
3
|
require 'rack-zippy/serveable_file'
|
|
4
|
+
require 'rack-zippy/configuration'
|
|
4
5
|
|
|
5
6
|
module Rack
|
|
6
7
|
module Zippy
|
|
8
|
+
extend Configuration
|
|
9
|
+
|
|
10
|
+
define_setting :static_extensions, %w(css js html htm txt ico png jpg jpeg gif pdf svg zip gz eps psd ai woff woff2 ttf eot otf swf)
|
|
7
11
|
|
|
8
12
|
PRECOMPILED_ASSETS_SUBDIR_REGEX = /\A\/assets(?:\/|\z)/
|
|
9
13
|
|
|
10
14
|
class AssetServer
|
|
11
15
|
|
|
12
|
-
# Font extensions: woff, woff2, ttf, eot, otf
|
|
13
|
-
STATIC_EXTENSION_REGEX = /\.(?:css|js|html|htm|txt|ico|png|jpg|jpeg|gif|pdf|svg|zip|gz|eps|psd|ai|woff|woff2|ttf|eot|otf|swf)\z/i
|
|
14
|
-
|
|
15
16
|
HTTP_STATUS_CODE_OK = 200
|
|
16
17
|
|
|
17
18
|
def initialize(app, asset_root=nil, options={})
|
|
@@ -46,6 +47,7 @@ module Rack
|
|
|
46
47
|
|
|
47
48
|
serveable_file = ServeableFile.find_first(serveable_file_options)
|
|
48
49
|
|
|
50
|
+
|
|
49
51
|
if serveable_file
|
|
50
52
|
return [HTTP_STATUS_CODE_OK, serveable_file.headers, serveable_file.response_body]
|
|
51
53
|
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Rack
|
|
2
|
+
module Zippy
|
|
3
|
+
module Configuration
|
|
4
|
+
def configure
|
|
5
|
+
yield self
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def define_setting(name, default = nil)
|
|
9
|
+
default_copy = begin
|
|
10
|
+
default.dup
|
|
11
|
+
rescue TypeError
|
|
12
|
+
default
|
|
13
|
+
end
|
|
14
|
+
class_variable_set("@@#{name}", default_copy)
|
|
15
|
+
|
|
16
|
+
define_class_method "#{name}=" do |value|
|
|
17
|
+
class_variable_set("@@#{name}", value)
|
|
18
|
+
end
|
|
19
|
+
define_class_method name do
|
|
20
|
+
class_variable_get("@@#{name}")
|
|
21
|
+
end
|
|
22
|
+
define_class_method "reset_#{name}" do
|
|
23
|
+
class_variable_set("@@#{name}", default)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def define_class_method(name, &block)
|
|
30
|
+
(class << self; self; end).instance_eval do
|
|
31
|
+
define_method name, &block
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
data/lib/rack-zippy/version.rb
CHANGED
data/test/asset_server_test.rb
CHANGED
|
@@ -39,10 +39,6 @@ module Rack
|
|
|
39
39
|
assert_responds_with_html_file '', 'public/index.html'
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def test_static_extension_regexp_available_in_established_constant_for_monkey_patching
|
|
43
|
-
assert AssetServer.const_defined?(:STATIC_EXTENSION_REGEX)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
42
|
def test_rails_asset_compiler_set_when_rails_environment_detected
|
|
47
43
|
assert_equal RailsAssetCompiler, app.send(:asset_compiler).class
|
|
48
44
|
end
|
|
@@ -346,4 +342,4 @@ module Rack
|
|
|
346
342
|
|
|
347
343
|
end
|
|
348
344
|
end
|
|
349
|
-
end
|
|
345
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require_relative 'test_helper'
|
|
2
|
+
|
|
3
|
+
module Rack
|
|
4
|
+
module Zippy
|
|
5
|
+
class ConfigurationTest < TestCase
|
|
6
|
+
|
|
7
|
+
def setup
|
|
8
|
+
Rack::Zippy.const_set(:ConfiguredClass, Class.new)
|
|
9
|
+
ConfiguredClass.extend Configuration
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def teardown
|
|
13
|
+
Rack::Zippy.send(:remove_const, :ConfiguredClass)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def setting_name
|
|
18
|
+
'test_setting'
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_define_setting_create_setter_method
|
|
22
|
+
ConfiguredClass.define_setting setting_name
|
|
23
|
+
assert ConfiguredClass.respond_to? "#{setting_name}="
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_define_setting_create_getter_method
|
|
27
|
+
ConfiguredClass.define_setting setting_name
|
|
28
|
+
assert ConfiguredClass.respond_to? setting_name
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_define_setting_create_reset_method
|
|
32
|
+
ConfiguredClass.define_setting setting_name
|
|
33
|
+
assert ConfiguredClass.respond_to? "reset_#{setting_name}"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_define_setting_can_handle_not_clonable_default_values
|
|
37
|
+
ConfiguredClass.define_setting setting_name, :singleton_type_instance
|
|
38
|
+
assert_equal ConfiguredClass.test_setting, :singleton_type_instance
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_reset_setting_to_default_value
|
|
42
|
+
ConfiguredClass.define_setting 'test_setting', 'default_value'
|
|
43
|
+
ConfiguredClass.test_setting = 'new_value'
|
|
44
|
+
ConfiguredClass.reset_test_setting
|
|
45
|
+
assert_equal ConfiguredClass.test_setting, 'default_value'
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_setter_store_config_value
|
|
49
|
+
ConfiguredClass.define_setting 'test_setting', 'default_value'
|
|
50
|
+
ConfiguredClass.test_setting = 'new_value'
|
|
51
|
+
assert_equal ConfiguredClass.test_setting, 'new_value'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_reset_setting_if_default_value_passed_by_reference
|
|
55
|
+
ConfiguredClass.define_setting 'test_setting', [1]
|
|
56
|
+
ConfiguredClass.test_setting << 2
|
|
57
|
+
ConfiguredClass.reset_test_setting
|
|
58
|
+
assert_equal ConfiguredClass.test_setting, [1]
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
data/test/serveable_file_test.rb
CHANGED
|
@@ -14,6 +14,7 @@ module Rack
|
|
|
14
14
|
|
|
15
15
|
def teardown
|
|
16
16
|
revert_to_original_working_directory
|
|
17
|
+
Rack::Zippy.reset_static_extensions
|
|
17
18
|
end
|
|
18
19
|
|
|
19
20
|
def test_day_long_cache_headers_for_root_html_requests
|
|
@@ -467,6 +468,12 @@ module Rack
|
|
|
467
468
|
"Should handle flash .swf files"
|
|
468
469
|
end
|
|
469
470
|
|
|
471
|
+
def test_has_static_extension_returns_true_for_configured_extension
|
|
472
|
+
Rack::Zippy.static_extensions << 'csv'
|
|
473
|
+
assert ServeableFile.has_static_extension?('/static-file.csv'),
|
|
474
|
+
"Should handle files with user configured extensions"
|
|
475
|
+
end
|
|
476
|
+
|
|
470
477
|
private
|
|
471
478
|
|
|
472
479
|
def assert_last_modified(headers, expected)
|
|
@@ -484,4 +491,4 @@ module Rack
|
|
|
484
491
|
|
|
485
492
|
end
|
|
486
493
|
end
|
|
487
|
-
end
|
|
494
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rack-zippy
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 3.0.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2015-04-18 00:00:00.000000000 Z
|
|
13
13
|
dependencies: []
|
|
14
14
|
description: Rack middleware for serving static gzipped assets generated by the Rails
|
|
15
15
|
asset pipeline
|
|
@@ -28,10 +28,12 @@ files:
|
|
|
28
28
|
- Rakefile
|
|
29
29
|
- lib/rack-zippy.rb
|
|
30
30
|
- lib/rack-zippy/asset_compiler.rb
|
|
31
|
+
- lib/rack-zippy/configuration.rb
|
|
31
32
|
- lib/rack-zippy/serveable_file.rb
|
|
32
33
|
- lib/rack-zippy/version.rb
|
|
33
34
|
- rack-zippy.gemspec
|
|
34
35
|
- test/asset_server_test.rb
|
|
36
|
+
- test/configuration_test.rb
|
|
35
37
|
- test/null_asset_compiler_test.rb
|
|
36
38
|
- test/public/assets/application.css
|
|
37
39
|
- test/public/assets/application.css.gz
|
|
@@ -65,7 +67,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
65
67
|
version: '0'
|
|
66
68
|
segments:
|
|
67
69
|
- 0
|
|
68
|
-
hash:
|
|
70
|
+
hash: -1760946869363206133
|
|
69
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
70
72
|
none: false
|
|
71
73
|
requirements:
|
|
@@ -74,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
74
76
|
version: '0'
|
|
75
77
|
segments:
|
|
76
78
|
- 0
|
|
77
|
-
hash:
|
|
79
|
+
hash: -1760946869363206133
|
|
78
80
|
requirements: []
|
|
79
81
|
rubyforge_project:
|
|
80
82
|
rubygems_version: 1.8.23.2
|
|
@@ -84,6 +86,7 @@ summary: Rack middleware for serving static gzipped assets generated by the Rail
|
|
|
84
86
|
asset pipeline
|
|
85
87
|
test_files:
|
|
86
88
|
- test/asset_server_test.rb
|
|
89
|
+
- test/configuration_test.rb
|
|
87
90
|
- test/null_asset_compiler_test.rb
|
|
88
91
|
- test/public/assets/application.css
|
|
89
92
|
- test/public/assets/application.css.gz
|