faucet_pipeline_rails 0.2.0 → 1.0.0.rc0
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 +53 -56
- data/lib/faucet_pipeline_rails/manifest.rb +11 -11
- data/lib/faucet_pipeline_rails/railtie.rb +5 -2
- data/lib/faucet_pipeline_rails/version.rb +1 -1
- metadata +4 -5
- data/lib/faucet_pipeline_rails/compute_asset_path.rb +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 869fc10676e02209e7ee30a2e6d023f924cbc560
|
4
|
+
data.tar.gz: c9db37a4d16c020c135afc738e0e651a7a3cb60b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 409d051793c04bbb82846a9aed6468c9e4e9be8f07aafa7d62e7a19352a1ad11fe7dbc1a9d642ede67e3d372bf46aad5ca53ff0cd17a053b01aa765fc1bc3c6f
|
7
|
+
data.tar.gz: b2a2a0bb416238b53c2b1c813dd9bea212e83ce14215dd1fa401f1259d4d3b343be932b8e597b6cdad413d8053e34fbdd8bc2a7678c544a24139cc90da3fde45
|
data/README.md
CHANGED
@@ -20,18 +20,12 @@ So let's say you have a JavaScript file called `application.js` (for example in
|
|
20
20
|
`public/assets/javascripts`) from that file. When you use `stylesheet_link_tag
|
21
21
|
'public/assets/javascripts/application.js'`, you expect that the resulting HTML
|
22
22
|
points to the file containing the hash in its filename. To do that,
|
23
|
-
`faucet-pipeline` generates a manifest
|
24
|
-
|
25
|
-
|
26
|
-
file should look like this:
|
27
|
-
|
28
|
-
```json
|
29
|
-
{
|
30
|
-
"application.js": "/assets/javascripts/application-03118e77692b637cfc0f55bb27fef087.js"
|
31
|
-
}
|
32
|
-
```
|
23
|
+
`faucet-pipeline` generates a manifest file. In the case of using it with this
|
24
|
+
Gem, it needs to save it as `public/assets/manifest.json` (to change this, see
|
25
|
+
the Configuration section)
|
33
26
|
|
34
|
-
And that's it. This gem will take care of the rest. The resulting HTML will
|
27
|
+
And that's it. This gem will take care of the rest. The resulting HTML will
|
28
|
+
look like this:
|
35
29
|
|
36
30
|
```html
|
37
31
|
<!-- ... -->
|
@@ -65,75 +59,78 @@ Or install it yourself as:
|
|
65
59
|
$ gem install faucet_pipeline_rails
|
66
60
|
```
|
67
61
|
|
62
|
+
After this, you can ditch sprockets (aka the classic Rails asset pipeline)
|
63
|
+
for good. If you're on an existing Rails app, change the top of your
|
64
|
+
`config/application.rb` from `require 'rails/all'` to:
|
65
|
+
|
66
|
+
```ruby
|
67
|
+
# Pick the frameworks you want:
|
68
|
+
require "active_model/railtie"
|
69
|
+
require "active_job/railtie"
|
70
|
+
require "active_record/railtie"
|
71
|
+
require "action_controller/railtie"
|
72
|
+
require "action_mailer/railtie"
|
73
|
+
require "action_view/railtie"
|
74
|
+
require "action_cable/engine"
|
75
|
+
# require "sprockets/railtie" # Disable sprockets
|
76
|
+
require "rails/test_unit/railtie"
|
77
|
+
```
|
78
|
+
|
79
|
+
Make sure you customize this to your actual needs. The main takeaway here is
|
80
|
+
to not require `"sprockets/railtie"` anymore.
|
81
|
+
|
82
|
+
For fresh apps, you can just skip sprockets with:
|
83
|
+
|
84
|
+
rails new --skip-sprockets
|
85
|
+
|
68
86
|
## Configuration
|
69
87
|
|
70
88
|
By default this gem assumes that your manifest files can be found in
|
71
|
-
`public/assets/
|
89
|
+
`public/assets/manifest.json`. This is a nice starting point for a
|
90
|
+
`faucet.config.js`:
|
72
91
|
|
73
92
|
```js
|
74
|
-
let jsConfig = {
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
},
|
79
|
-
bundles: [{
|
80
|
-
entryPoint: "./app/assets/javascripts/application.js",
|
81
|
-
target: "public/assets/javascripts/application.js",
|
82
|
-
externals: {}
|
83
|
-
}]
|
84
|
-
};
|
93
|
+
let jsConfig = [{
|
94
|
+
entryPoint: "./app/assets/javascripts/application.js",
|
95
|
+
target: "./public/assets/javascripts/application.js"
|
96
|
+
}];
|
85
97
|
|
86
|
-
let sassConfig = {
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
},
|
91
|
-
assets: [
|
92
|
-
"public/assets/manifests/static.json"
|
93
|
-
],
|
94
|
-
prefixes: {
|
95
|
-
browsers: [ "last 2 versions" ]
|
96
|
-
},
|
97
|
-
bundles: [{
|
98
|
-
entryPoint: "app/assets/stylesheets/application.scss",
|
99
|
-
target: "public/assets/stylesheets/application.css"
|
100
|
-
}]
|
101
|
-
};
|
98
|
+
let sassConfig = [{
|
99
|
+
entryPoint: "./app/assets/stylesheets/application.scss",
|
100
|
+
target: "./public/assets/stylesheets/application.css"
|
101
|
+
}];
|
102
102
|
|
103
|
-
let staticConfig = {
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
},
|
108
|
-
bundles: [{
|
109
|
-
source: "app/assets/images",
|
110
|
-
target: "public/assets/static"
|
111
|
-
}]
|
112
|
-
}
|
103
|
+
let staticConfig = [{
|
104
|
+
source: "./app/assets/images",
|
105
|
+
target: "./public/assets/images"
|
106
|
+
}];
|
113
107
|
|
114
108
|
module.exports = {
|
115
109
|
js: jsConfig,
|
116
110
|
sass: sassConfig,
|
117
111
|
static: staticConfig,
|
118
|
-
watchDirs: ["app/assets"]
|
112
|
+
watchDirs: ["app/assets"],
|
113
|
+
manifest: {
|
114
|
+
file: "./public/assets/manifest.json",
|
115
|
+
webRoot: "./public"
|
116
|
+
}
|
119
117
|
};
|
120
118
|
```
|
121
119
|
|
122
120
|
In this case, your `application.html.erb` would contain lines like these:
|
123
121
|
|
124
122
|
```erb
|
125
|
-
<%= stylesheet_link_tag 'public/assets/
|
126
|
-
<%= javascript_include_tag 'public/assets/
|
123
|
+
<%= stylesheet_link_tag 'public/assets/application.css', media: 'all', 'data-turbolinks-track': 'reload' %>
|
124
|
+
<%= javascript_include_tag 'public/assets/application.js', 'data-turbolinks-track': 'reload' %>
|
127
125
|
```
|
128
126
|
|
129
|
-
You can change the path to the manifest
|
130
|
-
configuration:
|
127
|
+
You can change the path to the manifest file with the following configuration:
|
131
128
|
|
132
129
|
```ruby
|
133
|
-
config.x.faucet_pipeline.
|
130
|
+
config.x.faucet_pipeline.manifest_path = File.join("my", "own", "manifests", "path.json")
|
134
131
|
```
|
135
132
|
|
136
|
-
The `
|
133
|
+
The `manifest_path` is relative to your Rails Root.
|
137
134
|
|
138
135
|
## Development
|
139
136
|
|
@@ -1,9 +1,8 @@
|
|
1
|
+
require "singleton"
|
2
|
+
|
1
3
|
module FaucetPipelineRails
|
2
4
|
class Manifest
|
3
|
-
|
4
|
-
@manifests_path = manifests_path
|
5
|
-
@type = type
|
6
|
-
end
|
5
|
+
include Singleton
|
7
6
|
|
8
7
|
def fetch(asset_name)
|
9
8
|
parsed_manifest.fetch(asset_name)
|
@@ -16,21 +15,22 @@ module FaucetPipelineRails
|
|
16
15
|
def parsed_manifest
|
17
16
|
JSON.parse(unparsed_manifest)
|
18
17
|
rescue JSON::ParserError
|
19
|
-
raise "The manifest file '#{
|
18
|
+
raise "The manifest file '#{relative_manifest_path}' is invalid JSON"
|
20
19
|
end
|
21
20
|
|
22
21
|
def unparsed_manifest
|
23
|
-
File.read(
|
22
|
+
File.read(manifest_path)
|
24
23
|
rescue Errno::ENOENT
|
25
|
-
raise "The manifest file '#{
|
24
|
+
raise "The manifest file '#{relative_manifest_path}' is missing"
|
26
25
|
end
|
27
26
|
|
28
|
-
def
|
29
|
-
File.join(Rails.root,
|
27
|
+
def manifest_path
|
28
|
+
File.join(Rails.root, relative_manifest_path)
|
30
29
|
end
|
31
30
|
|
32
|
-
def
|
33
|
-
|
31
|
+
def relative_manifest_path
|
32
|
+
Rails.configuration.x.faucet_pipeline.manifest_path ||
|
33
|
+
File.join("public", "assets", "manifest.json")
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -1,9 +1,12 @@
|
|
1
|
-
require "faucet_pipeline_rails/
|
1
|
+
require "faucet_pipeline_rails/manifest"
|
2
2
|
|
3
3
|
module FaucetPipelineRails
|
4
4
|
class Railtie < Rails::Railtie
|
5
5
|
ActiveSupport.on_load(:action_view) do
|
6
|
-
|
6
|
+
# Overwrite `compute_asset_path` with our own implementation
|
7
|
+
define_method(:compute_asset_path) do |source, _|
|
8
|
+
Manifest.instance.fetch(source)
|
9
|
+
end
|
7
10
|
end
|
8
11
|
end
|
9
12
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faucet_pipeline_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.rc0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lucas Dohmen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -63,7 +63,6 @@ files:
|
|
63
63
|
- README.md
|
64
64
|
- Rakefile
|
65
65
|
- lib/faucet_pipeline_rails.rb
|
66
|
-
- lib/faucet_pipeline_rails/compute_asset_path.rb
|
67
66
|
- lib/faucet_pipeline_rails/manifest.rb
|
68
67
|
- lib/faucet_pipeline_rails/railtie.rb
|
69
68
|
- lib/faucet_pipeline_rails/version.rb
|
@@ -82,9 +81,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
82
81
|
version: '0'
|
83
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
83
|
requirements:
|
85
|
-
- - "
|
84
|
+
- - ">"
|
86
85
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
86
|
+
version: 1.3.1
|
88
87
|
requirements: []
|
89
88
|
rubyforge_project:
|
90
89
|
rubygems_version: 2.6.13
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require "faucet_pipeline_rails/manifest"
|
2
|
-
|
3
|
-
module FaucetPipelineRails
|
4
|
-
module ComputeAssetPath
|
5
|
-
MANIFEST_FOR_TYPE = {
|
6
|
-
image: "static",
|
7
|
-
stylesheet: "stylesheet",
|
8
|
-
javascript: "javascript"
|
9
|
-
}
|
10
|
-
|
11
|
-
def compute_asset_path(source, options = {})
|
12
|
-
if MANIFEST_FOR_TYPE.has_key? options[:type]
|
13
|
-
manifest = Manifest.new(manifests_path, MANIFEST_FOR_TYPE[options[:type]])
|
14
|
-
manifest.fetch(source)
|
15
|
-
else
|
16
|
-
source
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def manifests_path
|
21
|
-
Rails.configuration.x.faucet_pipeline.manifests_path ||
|
22
|
-
File.join("public", "assets", "manifests")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|