deploy_pin 1.3.2 → 1.3.4

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
  SHA256:
3
- metadata.gz: 0133c82dd0826300585629d58af3f3e10a58b481e7c65a589a834fd0d7d79bdd
4
- data.tar.gz: 220af2e000347c6835673f664f3413d3775cba0d3f1ccb9778cd324fcce1f08a
3
+ metadata.gz: 64b7fc8e444888aebbf7bb08e4df2b259544a07fbef796cdda49412344b2dccd
4
+ data.tar.gz: 05ced857a7699b580554dd7a2a416c7b71950da11da3857a5ce5fd5167be0f9d
5
5
  SHA512:
6
- metadata.gz: 602e2f80e418e91e0d0045b5f5635c001d221217566581df4eea11b499dcd974b188b5de5adc7b37452c156f2c00d35b8238e4bc80a6d50ba2c962d48df7952f
7
- data.tar.gz: 202f198bb6197464495d7b418a568022b2869bf8800c959ffc09310db7a7335c16bd902652cda7b5ee2a734335bb88e35722f278f84005683935b29e6a0c9651
6
+ metadata.gz: fb7b9da496971cdb3906d9f298eb3e5587205106c28f7352d492a49d13db7ef37b5f6706d3fff7d1130573ae3ac73f9a662fbc58bf072e823ee9fe6d79873df5
7
+ data.tar.gz: 68c448505f328bcaa1a7367e14d32feb785354f7fdf993b2d97d2c4194a612aead8fd28b08a3042dbe85c89dc9838f9205317aa4abd8d682b0efaad19358c3c8
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/deploy_pin.svg)](https://badge.fury.io/rb/deploy_pin)
2
2
  ![](https://ruby-gem-downloads-badge.herokuapp.com/deploy_pin)
3
3
  ![example workflow](https://github.com/skcc321/deploy_pin/actions/workflows/verify.yml/badge.svg)
4
- [![Maintainability](https://api.codeclimate.com/v1/badges/c0a9ca97c1f9c0478ffc/maintainability)](https://codeclimate.com/github/skcc321/deploy_pin/maintainability)
5
- [![Test Coverage](https://api.codeclimate.com/v1/badges/c0a9ca97c1f9c0478ffc/test_coverage)](https://codeclimate.com/github/skcc321/deploy_pin/test_coverage)
6
4
 
7
5
  # DeployPin
8
6
 
@@ -105,6 +103,45 @@ and run migration
105
103
  rake db:migrate
106
104
  ```
107
105
 
106
+ ## Database Timeout
107
+ By default, deploy_pin will run all the non-parallel tasks under a database statement timeout.
108
+ A default value must be defined in the deploy_pin initializer. Ex.:
109
+ ```ruby
110
+ # config/initializers/deploy_pin.rb
111
+ DeployPin.setup do
112
+ statement_timeout 0.2.second # 200 ms
113
+ end
114
+ ```
115
+
116
+ In order to not use the default value, it's required to use explicitly in the task, like:
117
+ ```ruby
118
+ # Some deploy_pin task
119
+ # 20190401135040:I
120
+ # task_title: Execute some query with timeout
121
+
122
+ # === task code goes down here ===
123
+ DeployPin::Database::execute_with_timeout do
124
+ ActiveRecord::Base.connection.execute("select * from shipments;")
125
+ end
126
+ ```
127
+
128
+ To know more about the params, please check the documentation [here](lib/deploy_pin/database.rb).
129
+
130
+ ### Parallel
131
+ To run parallel tasks using timeout, it's required to use the parallel wrapper, which mimics parallel interface,
132
+ but adding the timeout option.
133
+
134
+ In a deploy_pin task, instead of using `Parallel.each(1..2, in_processes: 2)`, use:
135
+ ```ruby
136
+ parallel_each(1..2, in_processes: 2, timeout: 0.3.seconds) do |i|
137
+ # ActiveRecord::Base.connection_pool.with_connection it's already include in the parallel wrapper.
138
+ puts "Item: #{i}, Worker: #{Parallel.worker_number}"
139
+ ActiveRecord::Base.connection.execute("<some db query>")
140
+ end
141
+ ```
142
+
143
+ Check the documentation [here](lib/deploy_pin/parallel_wrapper.rb).
144
+
108
145
  ## Contributing
109
146
  Contribution directions go here.
110
147
 
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class DeployPin::ApplicationRecord < ActiveRecord::Base
4
- self.abstract_class = true
3
+ module DeployPin
4
+ class ApplicationRecord < ActiveRecord::Base
5
+ self.abstract_class = true
6
+ end
5
7
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class DeployPin::Record < DeployPin::ApplicationRecord
4
- self.table_name = 'deploy_pins'
3
+ module DeployPin
4
+ class Record < DeployPin::ApplicationRecord
5
+ self.table_name = 'deploy_pins'
6
+ end
5
7
  end
@@ -50,6 +50,7 @@ module DeployPin
50
50
  end
51
51
 
52
52
  private
53
+
53
54
  # :reek:UtilityFunction
54
55
  def files
55
56
  Dir["#{DeployPin.tasks_path}/*.rb"]
@@ -7,6 +7,8 @@ module DeployPin
7
7
 
8
8
  extend self
9
9
 
10
+ def dummy_method; end
11
+
10
12
  # Run a block under a sql maximum timeout.
11
13
  #
12
14
  # A default timeout will be get from DeployPin.setup
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DeployPin
4
- VERSION = '1.3.2'
4
+ VERSION = '1.3.4'
5
5
  end
@@ -1,21 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class DeployPin::InstallGenerator < Rails::Generators::Base
4
- include Rails::Generators::Migration
3
+ module DeployPin
4
+ class InstallGenerator < Rails::Generators::Base
5
+ include Rails::Generators::Migration
5
6
 
6
- source_root File.expand_path('templates', __dir__)
7
- desc 'Add the migration & initializer for DeployPin'
7
+ source_root File.expand_path('templates', __dir__)
8
+ desc 'Add the migration & initializer for DeployPin'
8
9
 
9
- def self.next_migration_number(path)
10
- next_migration_number = current_migration_number(path) + 1
11
- ActiveRecord::Migration.next_migration_number(next_migration_number)
12
- end
10
+ def self.next_migration_number(path)
11
+ next_migration_number = current_migration_number(path) + 1
12
+ ActiveRecord::Migration.next_migration_number(next_migration_number)
13
+ end
13
14
 
14
- def copy_migrations
15
- migration_template 'create_deploy_pins.rb', 'db/migrate/create_deploy_pins.rb'
16
- end
15
+ def copy_migrations
16
+ migration_template 'create_deploy_pins.rb', 'db/migrate/create_deploy_pins.rb'
17
+ end
17
18
 
18
- def copy_initializer
19
- template 'deploy_pin.rb', 'config/initializers/deploy_pin.rb'
19
+ def copy_initializer
20
+ template 'deploy_pin.rb', 'config/initializers/deploy_pin.rb'
21
+ end
20
22
  end
21
23
  end
@@ -1,24 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class DeployPin::TaskGenerator < Rails::Generators::Base
4
- class_option :parallel, type: :boolean
5
- argument :title, required: true
6
- class_option :group, aliases: "-g", default: DeployPin.fallback_group
7
- class_option :author, aliases: "-a"
3
+ module DeployPin
4
+ class TaskGenerator < Rails::Generators::Base
5
+ class_option :parallel, type: :boolean
6
+ argument :title, required: true
7
+ class_option :group, aliases: '-g', default: DeployPin.fallback_group
8
+ class_option :author, aliases: '-a'
8
9
 
9
- source_root File.expand_path('templates', __dir__)
10
+ source_root File.expand_path('templates', __dir__)
10
11
 
11
- desc 'This generator creates deploy_pin task at lib/deploy_pin/'
12
- def create_task_file
13
- template_file = if options[:parallel]
14
- 'parallel_task.rb.erb'
15
- else
16
- 'task.rb.erb'
17
- end
12
+ desc 'This generator creates deploy_pin task at lib/deploy_pin/'
13
+ def create_task_file
14
+ template_file = if options[:parallel]
15
+ 'parallel_task.rb.erb'
16
+ else
17
+ 'task.rb.erb'
18
+ end
18
19
 
19
- @author = options[:author] || ENV["USER"]
20
- @group = options[:group]
21
- @uuid = Time.now.strftime('%Y%m%d%H%M%S')
22
- template template_file, "#{DeployPin.tasks_path}/#{@uuid}_#{title}.rb"
20
+ @author = options[:author] || ENV['USER']
21
+ @group = options[:group]
22
+ @uuid = Time.now.strftime('%Y%m%d%H%M%S')
23
+ template template_file, "#{DeployPin.tasks_path}/#{@uuid}_#{title}.rb"
24
+ end
23
25
  end
24
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deploy_pin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Viktor Sych
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-08-26 00:00:00.000000000 Z
11
+ date: 2023-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -150,6 +150,48 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop-minitest
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: simplecov
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ - !ruby/object:Gem::Dependency
182
+ name: simplecov-review
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ">="
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
153
195
  description: pin some task around deployment to execute them during deployment circle
154
196
  email:
155
197
  - skcc321@gmail.com
@@ -193,7 +235,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
193
235
  requirements:
194
236
  - - ">="
195
237
  - !ruby/object:Gem::Version
196
- version: '0'
238
+ version: '3.0'
197
239
  required_rubygems_version: !ruby/object:Gem::Requirement
198
240
  requirements:
199
241
  - - ">="