faucet_pipeline_rails 1.0.0.rc0 → 1.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 869fc10676e02209e7ee30a2e6d023f924cbc560
4
- data.tar.gz: c9db37a4d16c020c135afc738e0e651a7a3cb60b
3
+ metadata.gz: 82f6b20abd70b0ea93f17dae2277531b6dda7b6c
4
+ data.tar.gz: 4036e53601582fc1f6eb435ebba0943f08d4c55b
5
5
  SHA512:
6
- metadata.gz: 409d051793c04bbb82846a9aed6468c9e4e9be8f07aafa7d62e7a19352a1ad11fe7dbc1a9d642ede67e3d372bf46aad5ca53ff0cd17a053b01aa765fc1bc3c6f
7
- data.tar.gz: b2a2a0bb416238b53c2b1c813dd9bea212e83ce14215dd1fa401f1259d4d3b343be932b8e597b6cdad413d8053e34fbdd8bc2a7678c544a24139cc90da3fde45
6
+ metadata.gz: 619f4e6bb2956cfb3cb5665cc03a4bc00380ebea0b2d1bb55ba470d18c45ff7257acfa62d477c9dbabe67eac7c6279a9d26cecea72068c84631875f125d5764f
7
+ data.tar.gz: 59baa88114aca729e561adb917b7dbdd74f11b1af5678add07363ea6ff0db8676c7b75ec66339c9bbccbf352d061068c0d11be2901dd69d9a6e4139c009425b3
data/README.md CHANGED
@@ -18,11 +18,10 @@ So let's say you have a JavaScript file called `application.js` (for example in
18
18
  `app/assets/javascripts`) and `faucet-pipeline` generates a file called
19
19
  `application-03118e77692b637cfc0f55bb27fef087.js` (for example in
20
20
  `public/assets/javascripts`) from that file. When you use `stylesheet_link_tag
21
- 'public/assets/javascripts/application.js'`, you expect that the resulting HTML
22
- points to the file containing the hash in its filename. To do that,
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)
21
+ 'application.css'`, you expect that the resulting HTML points to the file
22
+ containing the hash in its filename. To do that, `faucet-pipeline` generates a
23
+ manifest file. In the case of using it with this Gem, it needs to save it as
24
+ `public/assets/manifest.json` (to change this, see the Configuration section)
26
25
 
27
26
  And that's it. This gem will take care of the rest. The resulting HTML will
28
27
  look like this:
@@ -53,14 +52,8 @@ And then execute:
53
52
  $ bundle
54
53
  ```
55
54
 
56
- Or install it yourself as:
57
-
58
- ```
59
- $ gem install faucet_pipeline_rails
60
- ```
61
-
62
55
  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
56
+ for good. If you're on an existing Rails app, change the top of your
64
57
  `config/application.rb` from `require 'rails/all'` to:
65
58
 
66
59
  ```ruby
@@ -83,54 +76,57 @@ For fresh apps, you can just skip sprockets with:
83
76
 
84
77
  rails new --skip-sprockets
85
78
 
79
+ You also need to install `faucet-pipeline`.
80
+ [Here are the instructions](http://www.faucet-pipeline.org)
81
+
86
82
  ## Configuration
87
83
 
88
- By default this gem assumes that your manifest files can be found in
89
- `public/assets/manifest.json`. This is a nice starting point for a
90
- `faucet.config.js`:
84
+ This is a nice starting point for a `faucet.config.js`:
91
85
 
92
86
  ```js
93
- let jsConfig = [{
94
- entryPoint: "./app/assets/javascripts/application.js",
95
- target: "./public/assets/javascripts/application.js"
96
- }];
97
-
98
- let sassConfig = [{
99
- entryPoint: "./app/assets/stylesheets/application.scss",
100
- target: "./public/assets/stylesheets/application.css"
101
- }];
102
-
103
- let staticConfig = [{
104
- source: "./app/assets/images",
105
- target: "./public/assets/images"
106
- }];
107
-
108
87
  module.exports = {
109
- js: jsConfig,
110
- sass: sassConfig,
111
- static: staticConfig,
112
- watchDirs: ["app/assets"],
88
+ js: [{
89
+ source: "./app/assets/javascripts/application.js",
90
+ target: "./public/assets/javascripts/application.js"
91
+ }],
92
+ sass: [{
93
+ source: "./app/assets/stylesheets/application.scss",
94
+ target: "./public/assets/stylesheets/application.css"
95
+ }],
96
+ static: [{
97
+ source: "./app/assets/images",
98
+ target: "./public/assets/images"
99
+ }],
113
100
  manifest: {
114
101
  file: "./public/assets/manifest.json",
102
+ key: "short",
115
103
  webRoot: "./public"
116
- }
104
+ },
105
+ watchDirs: ["./app/assets"]
117
106
  };
118
107
  ```
119
108
 
120
109
  In this case, your `application.html.erb` would contain lines like these:
121
110
 
122
111
  ```erb
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' %>
112
+ <%= stylesheet_link_tag 'application.css', media: 'all', 'data-turbolinks-track': 'reload' %>
113
+ <%= javascript_include_tag 'application.js', 'data-turbolinks-track': 'reload' %>
125
114
  ```
126
115
 
127
- You can change the path to the manifest file with the following configuration:
116
+ By default this gem assumes that your manifest files can be found in
117
+ `public/assets/manifest.json`. You can change the path to the manifest
118
+ file with the following configuration:
128
119
 
129
120
  ```ruby
130
- config.x.faucet_pipeline.manifest_path = File.join("my", "own", "manifests", "path.json")
121
+ config.faucet_pipeline.manifest_path = Rails.root.join("manifest.json")
131
122
  ```
132
123
 
133
- The `manifest_path` is relative to your Rails Root.
124
+ Note that `manifest_path` is an absolute path.
125
+
126
+ This gem also provides a Rake task `assets:precompile` that runs faucet with the
127
+ `--compact --fingerprint` options. It can therefore be used as a drop-in replacement
128
+ for the task provided by the Rails asset pipeline. It only works if you install
129
+ your NPM dependencies to the default location (your app's `node_modules` folder).
134
130
 
135
131
  ## Development
136
132
 
@@ -5,32 +5,32 @@ module FaucetPipelineRails
5
5
  include Singleton
6
6
 
7
7
  def fetch(asset_name)
8
- parsed_manifest.fetch(asset_name)
8
+ manifest.fetch(asset_name)
9
9
  rescue KeyError
10
10
  raise "The asset '#{asset_name}' was not in the manifest"
11
11
  end
12
12
 
13
13
  private
14
14
 
15
+ def manifest
16
+ return parsed_manifest unless Rails.env.production?
17
+ @manifest ||= parsed_manifest
18
+ end
19
+
15
20
  def parsed_manifest
16
21
  JSON.parse(unparsed_manifest)
17
22
  rescue JSON::ParserError
18
- raise "The manifest file '#{relative_manifest_path}' is invalid JSON"
23
+ raise "The manifest file '#{manifest_path}' is invalid JSON"
19
24
  end
20
25
 
21
26
  def unparsed_manifest
22
27
  File.read(manifest_path)
23
28
  rescue Errno::ENOENT
24
- raise "The manifest file '#{relative_manifest_path}' is missing"
29
+ raise "The manifest file '#{manifest_path}' is missing"
25
30
  end
26
31
 
27
32
  def manifest_path
28
- File.join(Rails.root, relative_manifest_path)
29
- end
30
-
31
- def relative_manifest_path
32
- Rails.configuration.x.faucet_pipeline.manifest_path ||
33
- File.join("public", "assets", "manifest.json")
33
+ Rails.configuration.faucet_pipeline.manifest_path
34
34
  end
35
35
  end
36
36
  end
@@ -8,5 +8,19 @@ module FaucetPipelineRails
8
8
  Manifest.instance.fetch(source)
9
9
  end
10
10
  end
11
+
12
+ initializer "faucet_pipeline.configure_manifest_path" do |app|
13
+ config.faucet_pipeline = ActiveSupport::OrderedOptions.new
14
+ config.faucet_pipeline.manifest_path = app.root.join("public", "assets", "manifest.json")
15
+ end
16
+
17
+ rake_tasks do
18
+ namespace :assets do
19
+ desc "Compile assets via faucet-pipeline"
20
+ task :precompile do
21
+ sh "./node_modules/.bin/faucet --compact --fingerprint"
22
+ end
23
+ end
24
+ end
11
25
  end
12
26
  end
@@ -1,3 +1,3 @@
1
1
  module FaucetPipelineRails
2
- VERSION = "1.0.0.rc0"
2
+ VERSION = "1.0.0.rc1"
3
3
  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: 1.0.0.rc0
4
+ version: 1.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Dohmen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-23 00:00:00.000000000 Z
11
+ date: 2018-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -86,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  version: 1.3.1
87
87
  requirements: []
88
88
  rubyforge_project:
89
- rubygems_version: 2.6.13
89
+ rubygems_version: 2.6.14
90
90
  signing_key:
91
91
  specification_version: 4
92
92
  summary: Use Rails with faucet-pipeline