roda-sprockets 1.1.0 → 2.0.0rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +26 -4
- data/examples/opal-doc/app.rb +2 -3
- data/examples/opal-exception/Gemfile +2 -1
- data/examples/opal-exception/app.rb +3 -3
- data/examples/sass/app.rb +2 -3
- data/lib/roda/plugins/sprockets.rb +14 -2
- data/lib/roda/plugins/sprockets_task.rb +1 -5
- data/roda-sprockets.gemspec +1 -1
- data/spec/examples_spec.rb +17 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 508fedb44f1daee79f32b2ef1746fb5a266aa771465dc44b42a9d2de03787d6a
|
4
|
+
data.tar.gz: 15678eedb2c7d2aa7d5e8c1136dd2b16c77d4336514e689875488a7ec593e934
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eac697f7e01b05019e19a48704088910ceb1451ad2d6e40dccfc3ee8d8c67ef3b301d61876ca6089b4ce8454f19a1b02afbe3065abd812fdd804017188ddd838
|
7
|
+
data.tar.gz: c25b68ac51d50b091f398a5d98780f15987c20643535e289ed034d60929229ca0af556545dd6268981c83921dd763080c1a572306e5ef009161c37c20b57716c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
v2.0.0
|
2
|
+
|
3
|
+
- :debug argument now defaults to true, if RACK_ENV is development, false
|
4
|
+
otherwise - also false in rake tasks (#10)
|
5
|
+
- add sprockets_env class method, so you can shorten code like
|
6
|
+
`App.sprockets_options[:sprockets]` to just `App.sprockets_env` (#11)
|
7
|
+
|
1
8
|
v1.1.0
|
2
9
|
|
3
10
|
- Fix the Rack::Lint issue (#1)
|
data/README.md
CHANGED
@@ -23,12 +23,11 @@ And then execute:
|
|
23
23
|
class App < Roda
|
24
24
|
plugin :sprockets, precompile: %w(site.js site.css),
|
25
25
|
opal: true,
|
26
|
-
debug: true
|
27
26
|
plugin :public
|
28
27
|
|
29
28
|
route do |r|
|
30
29
|
r.public
|
31
|
-
r.sprockets
|
30
|
+
r.sprockets if ENV['RACK_ENV'] == 'development'
|
32
31
|
end
|
33
32
|
end
|
34
33
|
```
|
@@ -53,11 +52,13 @@ end
|
|
53
52
|
plugin takes files + `path_prefix`)
|
54
53
|
* `path_prefix` - a Roda prefix of your assets directory. By default: `/assets`
|
55
54
|
* `protocol` - either :http (default) or :https.
|
56
|
-
* `css_compressor`, `js_compressor` - pick a compressor of your choice
|
55
|
+
* `css_compressor`, `js_compressor` - pick a compressor of your choice (respected
|
56
|
+
only if `debug` is false)
|
57
57
|
* `host` - for hosting your assets on a different server
|
58
58
|
* `digest` (bool) - digest your assets for unique filenames, default: true
|
59
59
|
* `opal` (bool) - Opal support, default: false
|
60
|
-
* `debug` (bool) - debug mode, default:
|
60
|
+
* `debug` (bool) - debug mode, default: true if RACK_ENV is development,
|
61
|
+
false otherwise (in rake tasks it's false too)
|
61
62
|
* `cache` - a `Sprockets::Cache` instance, default: nil (no cache)
|
62
63
|
|
63
64
|
### Templates:
|
@@ -142,6 +143,27 @@ Roda::RodaPlugins::Sprockets::Task.define!(App)
|
|
142
143
|
|
143
144
|
And launch: `rake assets:precompile` or `rake assets:clean`
|
144
145
|
|
146
|
+
### Sprockets extended configuration:
|
147
|
+
|
148
|
+
You can configure your environment directly by accessing a method `sprockets_env`
|
149
|
+
(which is a `Sprockets::Environment`) on your `App` class.
|
150
|
+
|
151
|
+
For instance, to enable Brotli with [sprockets-exporters_pack](https://github.com/hansottowirtz/sprockets-exporters_pack)
|
152
|
+
you will need to either add this code inside your `App` class:
|
153
|
+
|
154
|
+
```ruby
|
155
|
+
sprockets_env.register_exporter %w(text/css application/javascript image/svg+xml), Sprockets::ExportersPack::BrotliExporter
|
156
|
+
```
|
157
|
+
|
158
|
+
Or at some other point:
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
App.sprockets_env.register_exporter %w(text/css application/javascript image/svg+xml), Sprockets::ExportersPack::BrotliExporter
|
162
|
+
```
|
163
|
+
|
164
|
+
Do note, that some extensions, like for example [opal-optimizer](https://github.com/hmdne/opal-optimizer)
|
165
|
+
won't need any configuration at all beside `require "opal/optimizer/sprockets"`.
|
166
|
+
|
145
167
|
## Contributing
|
146
168
|
|
147
169
|
1. Fork it ( https://github.com/hmdne/roda-sprockets/fork )
|
data/examples/opal-doc/app.rb
CHANGED
@@ -3,13 +3,12 @@ require 'roda'
|
|
3
3
|
class App < Roda
|
4
4
|
plugin :sprockets, precompile: %w(application.js),
|
5
5
|
prefix: %w(app/),
|
6
|
-
opal: true
|
7
|
-
debug: ENV['RACK_ENV'] != 'production'
|
6
|
+
opal: true
|
8
7
|
plugin :public
|
9
8
|
|
10
9
|
route do |r|
|
11
10
|
r.public
|
12
|
-
r.sprockets if ENV['RACK_ENV']
|
11
|
+
r.sprockets if ENV['RACK_ENV'] == 'development'
|
13
12
|
|
14
13
|
r.root do
|
15
14
|
<<~END
|
@@ -3,13 +3,13 @@ require 'roda'
|
|
3
3
|
class App < Roda
|
4
4
|
plugin :sprockets, precompile: %w(application.js),
|
5
5
|
prefix: %w(app/),
|
6
|
-
|
7
|
-
|
6
|
+
js_compressor: :uglify,
|
7
|
+
opal: true
|
8
8
|
plugin :public
|
9
9
|
|
10
10
|
route do |r|
|
11
11
|
r.public
|
12
|
-
r.sprockets if ENV['RACK_ENV']
|
12
|
+
r.sprockets if ENV['RACK_ENV'] == 'development'
|
13
13
|
|
14
14
|
r.root do
|
15
15
|
<<~END
|
data/examples/sass/app.rb
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
require 'roda'
|
2
2
|
|
3
3
|
class App < Roda
|
4
|
-
plugin :sprockets, precompile: %w(application.css)
|
5
|
-
debug: ENV['RACK_ENV'] != 'production'
|
4
|
+
plugin :sprockets, precompile: %w(application.css)
|
6
5
|
plugin :public
|
7
6
|
|
8
7
|
route do |r|
|
9
8
|
r.public
|
10
|
-
r.sprockets if ENV['RACK_ENV']
|
9
|
+
r.sprockets if ENV['RACK_ENV'] == 'development'
|
11
10
|
|
12
11
|
r.root do
|
13
12
|
<<~END
|
@@ -18,7 +18,7 @@ class Roda
|
|
18
18
|
host: nil,
|
19
19
|
digest: true,
|
20
20
|
opal: false,
|
21
|
-
debug:
|
21
|
+
debug: nil,
|
22
22
|
cache: nil,
|
23
23
|
}.freeze
|
24
24
|
|
@@ -35,6 +35,14 @@ class Roda
|
|
35
35
|
options[:root] = app.opts[:root] || Dir.pwd
|
36
36
|
end
|
37
37
|
|
38
|
+
if options[:debug].nil?
|
39
|
+
if ENV['RACK_ENV'] == 'development'
|
40
|
+
options[:debug] = true
|
41
|
+
else
|
42
|
+
options[:debug] = false
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
38
46
|
# opal-sprockets registers engines when required, but if we create Sprockets::Environment before
|
39
47
|
# requiring that, they don't get registered
|
40
48
|
require 'opal/sprockets' if options[:opal]
|
@@ -81,7 +89,7 @@ class Roda
|
|
81
89
|
|
82
90
|
unless options[:debug]
|
83
91
|
options[:sprockets].css_compressor = options[:css_compressor] unless options[:css_compressor].nil?
|
84
|
-
options[:sprockets].js_compressor = options[:js_compressor] unless options[:js_compressor].nil?
|
92
|
+
options[:sprockets].js_compressor = options[:js_compressor] unless options[:js_compressor].nil?
|
85
93
|
|
86
94
|
options[:sprockets_helpers].manifest = ::Sprockets::Manifest.new(options[:sprockets], options[:public_path])
|
87
95
|
options[:sprockets_helpers].protocol = options[:protocol]
|
@@ -94,6 +102,10 @@ class Roda
|
|
94
102
|
opts[:sprockets]
|
95
103
|
end
|
96
104
|
|
105
|
+
def sprockets_env
|
106
|
+
sprockets_options[:sprockets]
|
107
|
+
end
|
108
|
+
|
97
109
|
def sprockets_regexp
|
98
110
|
%r{#{sprockets_options[:sprockets_helpers].prefix[1..-1]}/(.*)}
|
99
111
|
end
|
data/roda-sprockets.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = "roda-sprockets"
|
7
|
-
spec.version = '
|
7
|
+
spec.version = '2.0.0rc1'
|
8
8
|
spec.authors = ["cj", "hmdne"]
|
9
9
|
spec.email = ["cjlazell@gmail.com"]
|
10
10
|
spec.summary = %q{Use sprockets to serve assets in roda.}
|
data/spec/examples_spec.rb
CHANGED
@@ -38,9 +38,18 @@ RSpec.describe "Example" do
|
|
38
38
|
when "opal-exception"
|
39
39
|
error.should_not be_nil
|
40
40
|
functions = error.stack_trace["callFrames"].map { |i| i["functionName"] }
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
if debug
|
42
|
+
functions.should include "$$a"
|
43
|
+
functions.should include "$$b"
|
44
|
+
functions.should include "$$c"
|
45
|
+
else
|
46
|
+
# We minify this example, so functions should be mangled
|
47
|
+
functions.should_not include "$$a"
|
48
|
+
functions.should_not include "$$b"
|
49
|
+
functions.should_not include "$$c"
|
50
|
+
end
|
51
|
+
# Nevertheless, "Opal.modules.application" should stay unmangled.
|
52
|
+
functions.should include "Opal.modules.application"
|
44
53
|
# How can we now test that source maps work? The browser doesn't help us...
|
45
54
|
when "sass"
|
46
55
|
browser.evaluate("window.getComputedStyle(document.body).backgroundColor").should be == "rgb(0, 128, 0)"
|
@@ -75,7 +84,7 @@ RSpec.describe "Example" do
|
|
75
84
|
rescue Ferrum::JavaScriptError => e
|
76
85
|
instance_exec(browser, true, e, &example_specific)
|
77
86
|
ensure
|
78
|
-
browser.quit
|
87
|
+
browser.quit if browser
|
79
88
|
end
|
80
89
|
ensure
|
81
90
|
sigterm(pid)
|
@@ -87,8 +96,6 @@ RSpec.describe "Example" do
|
|
87
96
|
it "works in production mode" do
|
88
97
|
Dir.chdir example do
|
89
98
|
Bundler.with_unbundled_env do
|
90
|
-
ENV['RACK_ENV'] = 'production'
|
91
|
-
|
92
99
|
if ENV.key? 'CI'
|
93
100
|
system("bundle config --local path #{__dir__+"/../vendor/bundle"}")
|
94
101
|
end
|
@@ -100,6 +107,8 @@ RSpec.describe "Example" do
|
|
100
107
|
system("bundle exec rake assets:precompile").should be true
|
101
108
|
Dir.children(example + "/public/assets").length.should be == 3
|
102
109
|
|
110
|
+
ENV['RACK_ENV'] = 'production'
|
111
|
+
|
103
112
|
begin
|
104
113
|
port = free_port
|
105
114
|
pid = spawn("bundle exec rackup -p#{port}")
|
@@ -112,9 +121,9 @@ RSpec.describe "Example" do
|
|
112
121
|
|
113
122
|
instance_exec(browser, false, nil, &example_specific)
|
114
123
|
rescue Ferrum::JavaScriptError => e
|
115
|
-
instance_exec(browser,
|
124
|
+
instance_exec(browser, false, e, &example_specific)
|
116
125
|
ensure
|
117
|
-
browser.quit
|
126
|
+
browser.quit if browser
|
118
127
|
end
|
119
128
|
ensure
|
120
129
|
system("bundle exec rake assets:clean").should be true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roda-sprockets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cj
|
@@ -144,9 +144,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
144
144
|
version: '0'
|
145
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- - "
|
147
|
+
- - ">"
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version:
|
149
|
+
version: 1.3.1
|
150
150
|
requirements: []
|
151
151
|
rubygems_version: 3.2.22
|
152
152
|
signing_key:
|