rs-webpack-rails 0.10.1 → 0.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3649168564e37274197850c72071c34cb504b0f5
4
- data.tar.gz: 9d2367078966e3c225e94c322732989707b41688
2
+ SHA256:
3
+ metadata.gz: 84005ce365273d06f62a49fc524b22d219cdb8679acc9a1a8cedea13a44eafa3
4
+ data.tar.gz: c13b5532de784b2c5613a043de393f604b04be2fa917ab907065eea0f14baf36
5
5
  SHA512:
6
- metadata.gz: 6777863a317d3c1ad5802a8d2b7bea66f0ac5dea0b964eef4236359cbb373cba2e73b33080f783bc194634b39a802c6cb69376f41090f826992d8d49759ea002
7
- data.tar.gz: 882b5ec72d52d81631eb7851493933af10a18b1ee8ea6c3ea1473cbd433d67450a4725c60238dc175629e7350bdec62bc2b6337f026aad5a39cfdd71a9ceacdf
6
+ metadata.gz: a413049f82bcac932ca55ad650df44a74374e137e2957f4d9234bcb92e11748ae56a1fd3b1107a229e13b9594be3af67fdbe0bee173911bdf966965103313f2e
7
+ data.tar.gz: 1738fd5127cafcc02145cbc6ed8990a2570ba27613863549f2a9c1f66be7ed83273d906a1d6d997255239ae944c0ba272f8e940b937c84bdb10cbcf9907f477c
data/README.md CHANGED
@@ -12,7 +12,6 @@ gem 'rs-webpack-rails'
12
12
 
13
13
  Create webpack config at config/webpack.config.js (see example)
14
14
 
15
-
16
15
  #### Usage with manifest plugin:
17
16
 
18
17
  ```
@@ -27,6 +26,17 @@ new ManifestPlugin({
27
26
  }),
28
27
  ```
29
28
 
29
+ ### Capistrano integration
30
+ ```
31
+ # Capfile
32
+ require 'capistrano/webpack'
33
+ ```
34
+ that's it. Based on capistrano-rails with proper manifest management & rollback.
35
+
36
+ ### NOTE:
37
+ If using "capistrano/rails/assets", it should be BEFORE this as it calls yarn:install
38
+ If not using it, use [capistrano-yarn](https://github.com/ManifoldScholar/capistrano-yarn)
39
+
30
40
  # rs-webpack-rails
31
41
 
32
42
  **rs-webpack-rails** gives you tools to integrate Webpack in to an existing Ruby on Rails application.
@@ -0,0 +1,9 @@
1
+ namespace :deploy do
2
+ task :webpack_set_rails_env do
3
+ set :webpack_rails_env, (fetch(:rails_env) || fetch(:stage))
4
+ end
5
+ end
6
+
7
+ Capistrano::DSL.stages.each do |stage|
8
+ after stage, 'deploy:webpack_set_rails_env'
9
+ end
@@ -0,0 +1,115 @@
1
+ # based on https://github.com/capistrano/rails/blob/master/lib/capistrano/tasks/assets.rake
2
+
3
+ load File.expand_path("../set_rails_env.rake", __FILE__)
4
+
5
+ module Capistrano
6
+ class FileNotFound < StandardError
7
+ end
8
+ end
9
+
10
+ namespace :deploy do
11
+ desc 'Normalize webpack asset timestamps'
12
+ task :normalize_webpack_assets => [:set_rails_env] do
13
+ on release_roles(fetch(:assets_roles)) do
14
+ assets = Array(fetch(:normalize_asset_timestamps, []))
15
+ if assets.any?
16
+ within release_path do
17
+ execute :find, "#{assets.join(' ')} -exec touch -t #{asset_timestamp} {} ';'; true"
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ desc 'Compile webpack assets'
24
+ task :compile_webpack_assets => [:webpack_set_rails_env] do
25
+ invoke 'deploy:webpack:precompile'
26
+ invoke 'deploy:webpack:backup_manifest'
27
+ end
28
+
29
+ desc 'Rollback webpack assets'
30
+ task :rollback_webpack_assets => [:set_rails_env] do
31
+ begin
32
+ invoke 'deploy:webpack:restore_manifest'
33
+ rescue Capistrano::FileNotFound
34
+ invoke 'deploy:compile_webpack_assets'
35
+ end
36
+ end
37
+
38
+ after 'deploy:updated', 'deploy:compile_webpack_assets'
39
+ after 'deploy:updated', 'deploy:normalize_webpack_assets'
40
+ after 'deploy:reverted', 'deploy:rollback_webpack_assets'
41
+
42
+ namespace :webpack do
43
+ task :precompile do
44
+ on release_roles(fetch(:webpack_roles)) do
45
+ within release_path do
46
+ with rails_env: fetch(:rails_env), rails_groups: fetch(:rails_assets_groups) do
47
+ execute :rake, "webpack:compile"
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ task :backup_manifest do
54
+ on release_roles(fetch(:webpack_roles)) do
55
+ within release_path do
56
+ backup_path = release_path.join('webpack_manifest_backup')
57
+
58
+ execute :mkdir, '-p', backup_path
59
+ execute :cp,
60
+ detect_manifest_path,
61
+ backup_path
62
+ end
63
+ end
64
+ end
65
+
66
+ task :restore_manifest do
67
+ on release_roles(fetch(:webpack_roles)) do
68
+ within release_path do
69
+ target = detect_manifest_path
70
+ source = release_path.join('webpack_manifest_backup', File.basename(target))
71
+ if test "[[ -f #{source} && -f #{target} ]]"
72
+ execute :cp, source, target
73
+ else
74
+ msg = 'Rails assets manifest file (or backup file) not found.'
75
+ warn msg
76
+ fail Capistrano::FileNotFound, msg
77
+ end
78
+ end
79
+ end
80
+ end
81
+
82
+ def detect_manifest_path
83
+ %w(
84
+ manifest.json
85
+ ).each do |pattern|
86
+ candidate = release_path.join('public', fetch(:webpack_prefix), pattern)
87
+ return capture(:ls, candidate).strip.gsub(/(\r|\n)/,' ') if test(:ls, candidate)
88
+ end
89
+ msg = 'Webpack assets manifest file not found.'
90
+ warn msg
91
+ fail Capistrano::FileNotFound, msg
92
+ end
93
+ end
94
+ end
95
+
96
+ # we can't set linked_dirs in load:defaults,
97
+ # as assets_prefix will always have a default value
98
+ namespace :deploy do
99
+ task :set_linked_dirs do
100
+ linked_dirs = fetch(:linked_dirs, [])
101
+ unless linked_dirs.include?('public')
102
+ linked_dirs << "public/#{fetch(:webpack_prefix)}"
103
+ set :linked_dirs, linked_dirs.uniq
104
+ end
105
+ end
106
+ end
107
+
108
+ after 'deploy:set_rails_env', 'deploy:set_linked_dirs'
109
+
110
+ namespace :load do
111
+ task :defaults do
112
+ set :webpack_roles, fetch(:webpack_roles, [:web])
113
+ set :webpack_prefix, fetch(:webpack_prefix, 'webpack')
114
+ end
115
+ end
@@ -0,0 +1 @@
1
+ load File.expand_path("../tasks/webpack.rake", __FILE__)
@@ -1,6 +1,6 @@
1
1
  module Webpack
2
2
  # :nodoc:
3
3
  module Rails
4
- VERSION = "0.10.1"
4
+ VERSION = "0.11.0"
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,43 +1,127 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rs-webpack-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Pearson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-27 00:00:00.000000000 Z
11
+ date: 2018-03-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: railties
14
+ name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.2.0
20
- type: :runtime
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: 3.2.0
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rails
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: 3.2.0
47
+ version: 5.0.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 5.0.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: webmock
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
34
90
  type: :development
35
91
  prerelease: false
36
92
  version_requirements: !ruby/object:Gem::Requirement
37
93
  requirements:
38
94
  - - ">="
39
95
  - !ruby/object:Gem::Version
40
- version: 3.2.0
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: railties
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 5.0.0
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 5.0.0
41
125
  description: Simple webpack and rails intergration.
42
126
  email:
43
127
  - mipearson@gmail.com
@@ -55,6 +139,9 @@ files:
55
139
  - example/webpack.config.js
56
140
  - example/webpack/application.js
57
141
  - example/yarn.lock
142
+ - lib/capistrano/tasks/set_rails_env.rake
143
+ - lib/capistrano/tasks/webpack.rake
144
+ - lib/capistrano/webpack.rb
58
145
  - lib/generators/webpack_rails/install_generator.rb
59
146
  - lib/rs-webpack-rails.rb
60
147
  - lib/tasks/webpack.rake
@@ -84,7 +171,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
171
  version: '0'
85
172
  requirements: []
86
173
  rubyforge_project:
87
- rubygems_version: 2.6.14
174
+ rubygems_version: 2.7.6
88
175
  signing_key:
89
176
  specification_version: 4
90
177
  summary: Simple webpack and rails intergration.