job_notifier 1.2.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +104 -0
  3. data/.circleci/setup-rubygems.sh +3 -0
  4. data/.rubocop.yml +76 -605
  5. data/.ruby-version +1 -1
  6. data/CHANGELOG.md +31 -2
  7. data/Gemfile.lock +191 -127
  8. data/README.md +18 -6
  9. data/app/assets/javascripts/job_notifier/notifier.js +4 -0
  10. data/app/models/job_notifier/job.rb +3 -2
  11. data/job_notifier.gemspec +9 -5
  12. data/lib/generators/job_notifier/install/templates/initializer.rb +4 -0
  13. data/lib/job_notifier.rb +6 -1
  14. data/lib/job_notifier/engine.rb +10 -4
  15. data/lib/job_notifier/error.rb +5 -5
  16. data/lib/job_notifier/logger.rb +1 -0
  17. data/lib/job_notifier/notifier.rb +6 -6
  18. data/lib/job_notifier/version.rb +1 -1
  19. data/spec/dummy/Rakefile +1 -1
  20. data/spec/dummy/app/assets/config/manifest.js +3 -0
  21. data/spec/dummy/app/assets/stylesheets/application.css +3 -3
  22. data/spec/dummy/app/channels/application_cable/channel.rb +4 -0
  23. data/spec/dummy/app/channels/application_cable/connection.rb +4 -0
  24. data/spec/dummy/app/controllers/application_controller.rb +0 -3
  25. data/spec/dummy/app/javascript/packs/application.js +15 -0
  26. data/spec/dummy/app/jobs/application_job.rb +7 -0
  27. data/spec/dummy/app/mailers/application_mailer.rb +4 -0
  28. data/spec/dummy/app/models/application_record.rb +3 -0
  29. data/spec/dummy/app/views/layouts/application.html.erb +10 -9
  30. data/spec/dummy/app/views/layouts/mailer.html.erb +13 -0
  31. data/spec/dummy/app/views/layouts/mailer.text.erb +1 -0
  32. data/spec/dummy/bin/rails +3 -3
  33. data/spec/dummy/bin/rake +2 -2
  34. data/spec/dummy/bin/setup +18 -14
  35. data/spec/dummy/config.ru +3 -1
  36. data/spec/dummy/config/application.rb +12 -21
  37. data/spec/dummy/config/boot.rb +3 -3
  38. data/spec/dummy/config/cable.yml +10 -0
  39. data/spec/dummy/config/database.yml +2 -2
  40. data/spec/dummy/config/environment.rb +1 -1
  41. data/spec/dummy/config/environments/development.rb +49 -14
  42. data/spec/dummy/config/environments/production.rb +63 -22
  43. data/spec/dummy/config/environments/test.rb +29 -12
  44. data/spec/dummy/config/initializers/application_controller_renderer.rb +8 -0
  45. data/spec/dummy/config/initializers/assets.rb +4 -3
  46. data/spec/dummy/config/initializers/backtrace_silencers.rb +4 -3
  47. data/spec/dummy/config/initializers/content_security_policy.rb +28 -0
  48. data/spec/dummy/config/initializers/cookies_serializer.rb +2 -0
  49. data/spec/dummy/config/initializers/filter_parameter_logging.rb +3 -1
  50. data/spec/dummy/config/initializers/job_notifier.rb +4 -0
  51. data/spec/dummy/config/initializers/permissions_policy.rb +11 -0
  52. data/spec/dummy/config/initializers/wrap_parameters.rb +2 -2
  53. data/spec/dummy/config/locales/en.yml +11 -1
  54. data/spec/dummy/config/puma.rb +43 -0
  55. data/spec/dummy/config/routes.rb +0 -1
  56. data/spec/dummy/config/storage.yml +34 -0
  57. data/spec/dummy/public/404.html +6 -6
  58. data/spec/dummy/public/422.html +6 -6
  59. data/spec/dummy/public/500.html +6 -6
  60. data/spec/dummy/public/apple-touch-icon-precomposed.png +0 -0
  61. data/spec/dummy/public/apple-touch-icon.png +0 -0
  62. data/spec/factories/job_notifier_jobs.rb +4 -4
  63. data/spec/lib/job_notifier/notifier_spec.rb +24 -7
  64. data/spec/rails_helper.rb +2 -2
  65. data/spec/spec_helper.rb +2 -0
  66. metadata +98 -26
  67. data/.travis.yml +0 -14
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.3
1
+ 2.7
data/CHANGELOG.md CHANGED
@@ -1,12 +1,41 @@
1
1
  # Change Log
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
+ ### v2.0.0
5
+ ##### Changed
6
+
7
+ - Replace travis with CircleCI.
8
+ - Update Dependencies to play nice with Rails 6.
9
+
10
+ ### v1.5.0
11
+
12
+ ##### Added
13
+
14
+ - Allow jobs without owner.
15
+
16
+ ### v1.4.0
17
+
18
+ ##### Changed
19
+
20
+ - Use update_attributes instead of update_columns to change update_at attribute.
21
+
22
+ ### v1.3.0
23
+
24
+ ##### Added
25
+
26
+ - Add silenced_log config option to disable silencer gem.
27
+
28
+ ### v1.2.4
29
+
30
+ ##### Fixed
31
+
32
+ - Check if /jobs endpoint returns response root.
4
33
 
5
34
  ### v1.2.3
6
35
 
7
36
  ##### Changed
8
37
 
9
- - Avoid raising error with undefined verify_authenticity_token method
38
+ - Avoid raising error with undefined verify_authenticity_token method.
10
39
 
11
40
  ### v1.2.2
12
41
 
@@ -67,4 +96,4 @@ This project adheres to [Semantic Versioning](http://semver.org/).
67
96
 
68
97
  ### v0.1.0
69
98
 
70
- * Initial release.
99
+ - Initial release.
data/Gemfile.lock CHANGED
@@ -1,168 +1,232 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- job_notifier (1.2.3)
4
+ job_notifier (2.0.0)
5
5
  colorize (>= 0.7.7)
6
6
  enumerize (>= 1.0)
7
- rails (>= 4.2.0)
7
+ rails (>= 6.0)
8
8
  silencer (= 1.0.0.rc3)
9
9
 
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actionmailer (4.2.8)
14
- actionpack (= 4.2.8)
15
- actionview (= 4.2.8)
16
- activejob (= 4.2.8)
13
+ actioncable (6.1.3.2)
14
+ actionpack (= 6.1.3.2)
15
+ activesupport (= 6.1.3.2)
16
+ nio4r (~> 2.0)
17
+ websocket-driver (>= 0.6.1)
18
+ actionmailbox (6.1.3.2)
19
+ actionpack (= 6.1.3.2)
20
+ activejob (= 6.1.3.2)
21
+ activerecord (= 6.1.3.2)
22
+ activestorage (= 6.1.3.2)
23
+ activesupport (= 6.1.3.2)
24
+ mail (>= 2.7.1)
25
+ actionmailer (6.1.3.2)
26
+ actionpack (= 6.1.3.2)
27
+ actionview (= 6.1.3.2)
28
+ activejob (= 6.1.3.2)
29
+ activesupport (= 6.1.3.2)
17
30
  mail (~> 2.5, >= 2.5.4)
18
- rails-dom-testing (~> 1.0, >= 1.0.5)
19
- actionpack (4.2.8)
20
- actionview (= 4.2.8)
21
- activesupport (= 4.2.8)
22
- rack (~> 1.6)
23
- rack-test (~> 0.6.2)
24
- rails-dom-testing (~> 1.0, >= 1.0.5)
25
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
26
- actionview (4.2.8)
27
- activesupport (= 4.2.8)
31
+ rails-dom-testing (~> 2.0)
32
+ actionpack (6.1.3.2)
33
+ actionview (= 6.1.3.2)
34
+ activesupport (= 6.1.3.2)
35
+ rack (~> 2.0, >= 2.0.9)
36
+ rack-test (>= 0.6.3)
37
+ rails-dom-testing (~> 2.0)
38
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
39
+ actiontext (6.1.3.2)
40
+ actionpack (= 6.1.3.2)
41
+ activerecord (= 6.1.3.2)
42
+ activestorage (= 6.1.3.2)
43
+ activesupport (= 6.1.3.2)
44
+ nokogiri (>= 1.8.5)
45
+ actionview (6.1.3.2)
46
+ activesupport (= 6.1.3.2)
28
47
  builder (~> 3.1)
29
- erubis (~> 2.7.0)
30
- rails-dom-testing (~> 1.0, >= 1.0.5)
31
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
32
- activejob (4.2.8)
33
- activesupport (= 4.2.8)
34
- globalid (>= 0.3.0)
35
- activemodel (4.2.8)
36
- activesupport (= 4.2.8)
37
- builder (~> 3.1)
38
- activerecord (4.2.8)
39
- activemodel (= 4.2.8)
40
- activesupport (= 4.2.8)
41
- arel (~> 6.0)
42
- activesupport (4.2.8)
43
- i18n (~> 0.7)
44
- minitest (~> 5.1)
45
- thread_safe (~> 0.3, >= 0.3.4)
46
- tzinfo (~> 1.1)
47
- arel (6.0.4)
48
- builder (3.2.3)
49
- coderay (1.1.1)
48
+ erubi (~> 1.4)
49
+ rails-dom-testing (~> 2.0)
50
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
51
+ activejob (6.1.3.2)
52
+ activesupport (= 6.1.3.2)
53
+ globalid (>= 0.3.6)
54
+ activemodel (6.1.3.2)
55
+ activesupport (= 6.1.3.2)
56
+ activerecord (6.1.3.2)
57
+ activemodel (= 6.1.3.2)
58
+ activesupport (= 6.1.3.2)
59
+ activestorage (6.1.3.2)
60
+ actionpack (= 6.1.3.2)
61
+ activejob (= 6.1.3.2)
62
+ activerecord (= 6.1.3.2)
63
+ activesupport (= 6.1.3.2)
64
+ marcel (~> 1.0.0)
65
+ mini_mime (~> 1.0.2)
66
+ activesupport (6.1.3.2)
67
+ concurrent-ruby (~> 1.0, >= 1.0.2)
68
+ i18n (>= 1.6, < 2)
69
+ minitest (>= 5.1)
70
+ tzinfo (~> 2.0)
71
+ zeitwerk (~> 2.3)
72
+ ast (2.4.2)
73
+ builder (3.2.4)
74
+ coderay (1.1.3)
50
75
  colorize (0.8.1)
51
- concurrent-ruby (1.0.5)
52
- coveralls (0.8.19)
76
+ concurrent-ruby (1.1.9)
77
+ coveralls (0.8.23)
53
78
  json (>= 1.8, < 3)
54
- simplecov (~> 0.12.0)
79
+ simplecov (~> 0.16.1)
55
80
  term-ansicolor (~> 1.3)
56
- thor (~> 0.19.1)
81
+ thor (>= 0.19.4, < 2.0)
57
82
  tins (~> 1.6)
58
- diff-lcs (1.3)
59
- docile (1.1.5)
60
- enumerize (2.1.2)
83
+ crass (1.0.6)
84
+ diff-lcs (1.4.4)
85
+ docile (1.4.0)
86
+ enumerize (2.4.0)
61
87
  activesupport (>= 3.2)
62
- erubis (2.7.0)
63
- factory_girl (4.5.0)
64
- activesupport (>= 3.0.0)
65
- factory_girl_rails (4.6.0)
66
- factory_girl (~> 4.5.0)
67
- railties (>= 3.0.0)
68
- globalid (0.4.0)
88
+ erubi (1.10.0)
89
+ factory_bot (6.2.0)
90
+ activesupport (>= 5.0.0)
91
+ factory_bot_rails (6.2.0)
92
+ factory_bot (~> 6.2.0)
93
+ railties (>= 5.0.0)
94
+ globalid (0.4.2)
69
95
  activesupport (>= 4.2.0)
70
- i18n (0.8.1)
71
- json (2.0.3)
72
- loofah (2.0.3)
96
+ i18n (1.8.10)
97
+ concurrent-ruby (~> 1.0)
98
+ json (2.5.1)
99
+ loofah (2.10.0)
100
+ crass (~> 1.0.2)
73
101
  nokogiri (>= 1.5.9)
74
- mail (2.6.5)
75
- mime-types (>= 1.16, < 4)
76
- method_source (0.8.2)
77
- mime-types (3.1)
78
- mime-types-data (~> 3.2015)
79
- mime-types-data (3.2016.0521)
80
- mini_portile2 (2.1.0)
81
- minitest (5.10.1)
82
- nokogiri (1.7.1)
83
- mini_portile2 (~> 2.1.0)
84
- pry (0.10.4)
85
- coderay (~> 1.1.0)
86
- method_source (~> 0.8.1)
87
- slop (~> 3.4)
88
- rack (1.6.5)
89
- rack-test (0.6.3)
90
- rack (>= 1.0)
91
- rails (4.2.8)
92
- actionmailer (= 4.2.8)
93
- actionpack (= 4.2.8)
94
- actionview (= 4.2.8)
95
- activejob (= 4.2.8)
96
- activemodel (= 4.2.8)
97
- activerecord (= 4.2.8)
98
- activesupport (= 4.2.8)
99
- bundler (>= 1.3.0, < 2.0)
100
- railties (= 4.2.8)
101
- sprockets-rails
102
- rails-deprecated_sanitizer (1.0.3)
103
- activesupport (>= 4.2.0.alpha)
104
- rails-dom-testing (1.0.8)
105
- activesupport (>= 4.2.0.beta, < 5.0)
106
- nokogiri (~> 1.6)
107
- rails-deprecated_sanitizer (>= 1.0.1)
108
- rails-html-sanitizer (1.0.3)
109
- loofah (~> 2.0)
110
- railties (4.2.8)
111
- actionpack (= 4.2.8)
112
- activesupport (= 4.2.8)
102
+ mail (2.7.1)
103
+ mini_mime (>= 0.1.1)
104
+ marcel (1.0.1)
105
+ method_source (1.0.0)
106
+ mini_mime (1.0.3)
107
+ minitest (5.14.4)
108
+ nio4r (2.5.7)
109
+ nokogiri (1.11.7-x86_64-darwin)
110
+ racc (~> 1.4)
111
+ nokogiri (1.11.7-x86_64-linux)
112
+ racc (~> 1.4)
113
+ parallel (1.20.1)
114
+ parser (3.0.1.1)
115
+ ast (~> 2.4.1)
116
+ pry (0.14.1)
117
+ coderay (~> 1.1)
118
+ method_source (~> 1.0)
119
+ racc (1.5.2)
120
+ rack (2.2.3)
121
+ rack-test (1.1.0)
122
+ rack (>= 1.0, < 3)
123
+ rails (6.1.3.2)
124
+ actioncable (= 6.1.3.2)
125
+ actionmailbox (= 6.1.3.2)
126
+ actionmailer (= 6.1.3.2)
127
+ actionpack (= 6.1.3.2)
128
+ actiontext (= 6.1.3.2)
129
+ actionview (= 6.1.3.2)
130
+ activejob (= 6.1.3.2)
131
+ activemodel (= 6.1.3.2)
132
+ activerecord (= 6.1.3.2)
133
+ activestorage (= 6.1.3.2)
134
+ activesupport (= 6.1.3.2)
135
+ bundler (>= 1.15.0)
136
+ railties (= 6.1.3.2)
137
+ sprockets-rails (>= 2.0.0)
138
+ rails-dom-testing (2.0.3)
139
+ activesupport (>= 4.2.0)
140
+ nokogiri (>= 1.6)
141
+ rails-html-sanitizer (1.3.0)
142
+ loofah (~> 2.3)
143
+ railties (6.1.3.2)
144
+ actionpack (= 6.1.3.2)
145
+ activesupport (= 6.1.3.2)
146
+ method_source
113
147
  rake (>= 0.8.7)
114
- thor (>= 0.18.1, < 2.0)
115
- rake (12.0.0)
116
- rspec-core (3.4.4)
117
- rspec-support (~> 3.4.0)
118
- rspec-expectations (3.4.0)
148
+ thor (~> 1.0)
149
+ rainbow (3.0.0)
150
+ rake (13.0.3)
151
+ regexp_parser (2.1.1)
152
+ rexml (3.2.5)
153
+ rspec-core (3.10.1)
154
+ rspec-support (~> 3.10.0)
155
+ rspec-expectations (3.10.1)
119
156
  diff-lcs (>= 1.2.0, < 2.0)
120
- rspec-support (~> 3.4.0)
121
- rspec-mocks (3.4.1)
157
+ rspec-support (~> 3.10.0)
158
+ rspec-mocks (3.10.2)
122
159
  diff-lcs (>= 1.2.0, < 2.0)
123
- rspec-support (~> 3.4.0)
124
- rspec-rails (3.4.2)
125
- actionpack (>= 3.0, < 4.3)
126
- activesupport (>= 3.0, < 4.3)
127
- railties (>= 3.0, < 4.3)
128
- rspec-core (~> 3.4.0)
129
- rspec-expectations (~> 3.4.0)
130
- rspec-mocks (~> 3.4.0)
131
- rspec-support (~> 3.4.0)
132
- rspec-support (3.4.1)
160
+ rspec-support (~> 3.10.0)
161
+ rspec-rails (5.0.1)
162
+ actionpack (>= 5.2)
163
+ activesupport (>= 5.2)
164
+ railties (>= 5.2)
165
+ rspec-core (~> 3.10)
166
+ rspec-expectations (~> 3.10)
167
+ rspec-mocks (~> 3.10)
168
+ rspec-support (~> 3.10)
169
+ rspec-support (3.10.2)
170
+ rspec_junit_formatter (0.4.1)
171
+ rspec-core (>= 2, < 4, != 2.12.0)
172
+ rubocop (1.17.0)
173
+ parallel (~> 1.10)
174
+ parser (>= 3.0.0.0)
175
+ rainbow (>= 2.2.2, < 4.0)
176
+ regexp_parser (>= 1.8, < 3.0)
177
+ rexml
178
+ rubocop-ast (>= 1.7.0, < 2.0)
179
+ ruby-progressbar (~> 1.7)
180
+ unicode-display_width (>= 1.4.0, < 3.0)
181
+ rubocop-ast (1.7.0)
182
+ parser (>= 3.0.1.1)
183
+ rubocop-rails (2.10.1)
184
+ activesupport (>= 4.2.0)
185
+ rack (>= 1.1)
186
+ rubocop (>= 1.7.0, < 2.0)
187
+ ruby-progressbar (1.11.0)
133
188
  silencer (1.0.0.rc3)
134
- simplecov (0.12.0)
135
- docile (~> 1.1.0)
189
+ simplecov (0.16.1)
190
+ docile (~> 1.1)
136
191
  json (>= 1.8, < 3)
137
192
  simplecov-html (~> 0.10.0)
138
- simplecov-html (0.10.0)
139
- slop (3.6.0)
140
- sprockets (3.7.1)
193
+ simplecov-html (0.10.2)
194
+ sprockets (4.0.2)
141
195
  concurrent-ruby (~> 1.0)
142
196
  rack (> 1, < 3)
143
- sprockets-rails (3.2.0)
197
+ sprockets-rails (3.2.2)
144
198
  actionpack (>= 4.0)
145
199
  activesupport (>= 4.0)
146
200
  sprockets (>= 3.0.0)
147
- sqlite3 (1.3.13)
148
- term-ansicolor (1.4.1)
201
+ sqlite3 (1.4.2)
202
+ sync (0.5.0)
203
+ term-ansicolor (1.7.1)
149
204
  tins (~> 1.0)
150
- thor (0.19.4)
151
- thread_safe (0.3.6)
152
- tins (1.13.2)
153
- tzinfo (1.2.3)
154
- thread_safe (~> 0.1)
205
+ thor (1.1.0)
206
+ tins (1.29.1)
207
+ sync
208
+ tzinfo (2.0.4)
209
+ concurrent-ruby (~> 1.0)
210
+ unicode-display_width (2.0.0)
211
+ websocket-driver (0.7.5)
212
+ websocket-extensions (>= 0.1.0)
213
+ websocket-extensions (0.1.5)
214
+ zeitwerk (2.4.2)
155
215
 
156
216
  PLATFORMS
157
- ruby
217
+ x86_64-darwin-20
218
+ x86_64-linux
158
219
 
159
220
  DEPENDENCIES
160
221
  coveralls
161
- factory_girl_rails (~> 4.6.0)
222
+ factory_bot_rails
162
223
  job_notifier!
163
224
  pry
164
- rspec-rails (~> 3.4.0)
225
+ rspec-rails
226
+ rspec_junit_formatter
227
+ rubocop (~> 1.9)
228
+ rubocop-rails
165
229
  sqlite3
166
230
 
167
231
  BUNDLED WITH
168
- 1.14.6
232
+ 2.2.15
data/README.md CHANGED
@@ -1,18 +1,21 @@
1
- # Job Notifier [![Gem Version](https://badge.fury.io/rb/job_notifier.svg)](https://badge.fury.io/rb/job_notifier) [![Build Status](https://travis-ci.org/platanus/paperclip_attributes.svg?branch=master)](https://travis-ci.org/platanus/paperclip_attributes) [![Coverage Status](https://coveralls.io/repos/github/platanus/job_notifier/badge.svg)](https://coveralls.io/github/platanus/job_notifier)
1
+ # Job Notifier
2
+ [![Gem Version](https://badge.fury.io/rb/job_notifier.svg)](https://badge.fury.io/rb/job_notifier)
3
+ [![Build Status](https://travis-ci.org/platanus/paperclip_attributes.svg?branch=master)](https://travis-ci.org/platanus/paperclip_attributes)
4
+ [![Coverage Status](https://coveralls.io/repos/github/platanus/job_notifier/badge.svg)](https://coveralls.io/github/platanus/job_notifier)
2
5
 
3
6
  It's a Rails engine built on top of [Active Job](https://github.com/rails/activejob) in order to **improve user experience related to background processes**. To achieve this goal, the gem allows us to:
4
7
 
5
- 1. **Relate jobs with entities**
8
+ - **Relate jobs with entities**
6
9
 
7
10
  Using [Active Job](https://github.com/rails/activejob), you can perform background jobs but, you can not relate them with, for example, a logged user. Job Notifier allows you to connect an entity with a job easily.
8
11
 
9
- 1. **Persist job results**
12
+ - **Persist job results**
10
13
 
11
14
  Using [Active Job](https://github.com/rails/activejob), you can run jobs in background but, you are not be able to store the result of those jobs. This is a desired behavior if you, for example, want to provide validation feedback to users.
12
15
 
13
- 1. **Notify users when their jobs change state.**
16
+ - **Notify users when their jobs change state.**
14
17
 
15
- Using [Active Job](https://github.com/rails/activejob), you can run jobs in background but, you lose a real time response. To bring a solution to this issue, Job Notifier, through polling technique, gives you a way to know what's happening with your jobs.
18
+ Using [Active Job](https://github.com/rails/activejob), you can run jobs in background but, you lose a real time response. To bring a solution to this issue, Job Notifier, through polling technique, gives you a way to know what's happening with your jobs.
16
19
 
17
20
  ## Installation
18
21
 
@@ -93,7 +96,7 @@ JobNotifier.onNotify = function(data) {
93
96
  Now, you are be able to get feedback of your jobs but, you don't have any! so, the **Third** step is to define a job.
94
97
 
95
98
  ```ruby
96
- class MyJob < ActiveJob::Base
99
+ class MyJob < ApplicationJob
97
100
  def perform_with_feedback(param1, param2)
98
101
  MyService.run(param1, param2)
99
102
  end
@@ -144,6 +147,15 @@ If you are building an API or your client app is not part of the project you hav
144
147
  You can get the identifier executing in server side something like this: `@current_user.job_identifier` (Remember, I'm assuming you have a `@current_user` instance of `User` class that includes the `JobNotifier::Identifier` mixin).
145
148
 
146
149
  The root url is your server url (where Job Notifier gem was installed).
150
+ ## Publishing
151
+
152
+ On master/main branch...
153
+
154
+ 1. Change `VERSION` in `lib/job_notifier/version.rb`.
155
+ 2. Change `Unreleased` title to current version in `CHANGELOG.md`.
156
+ 3. Commit new release. For example: `Releasing v0.1.0`.
157
+ 4. Create tag. For example: `git tag v0.1.0`.
158
+ 5. Push tag. For example: `git push origin v0.1.0`.
147
159
 
148
160
  ## Contributing
149
161