rs-webpack-rails 0.10.1 → 0.11.0

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
- 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.