deploy_pin 1.3.2 → 1.3.3

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
2
  SHA256:
3
- metadata.gz: 0133c82dd0826300585629d58af3f3e10a58b481e7c65a589a834fd0d7d79bdd
4
- data.tar.gz: 220af2e000347c6835673f664f3413d3775cba0d3f1ccb9778cd324fcce1f08a
3
+ metadata.gz: dd55cf51dd48871190b26b687e0e43ca56a460b5f38b26b65f48549c5e0e4c01
4
+ data.tar.gz: 814a4adaaaa6c967e715ea38ac264b76e5f2292ed79a9df5ecbaec3b8e804c99
5
5
  SHA512:
6
- metadata.gz: 602e2f80e418e91e0d0045b5f5635c001d221217566581df4eea11b499dcd974b188b5de5adc7b37452c156f2c00d35b8238e4bc80a6d50ba2c962d48df7952f
7
- data.tar.gz: 202f198bb6197464495d7b418a568022b2869bf8800c959ffc09310db7a7335c16bd902652cda7b5ee2a734335bb88e35722f278f84005683935b29e6a0c9651
6
+ metadata.gz: ac2cc4f44f70d66807b46369c2b9a942ef07eaaab858ed988c6e9dfebd4e02c0f0495fa9e5989f7204300a55150d5c8e3cbbaa10e33c9a7d6a77d16a18ce4c00
7
+ data.tar.gz: 37f7a702ae8d696c002a3b4af04b77e590ed20f9c81920d39ede0ec0d942b2c8ed82c7a439a08bb7a94d6d3e9fb5f531405dc796ec819248417750980afde7d4
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
 
@@ -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.3'
5
5
  end
@@ -3,8 +3,8 @@
3
3
  class DeployPin::TaskGenerator < Rails::Generators::Base
4
4
  class_option :parallel, type: :boolean
5
5
  argument :title, required: true
6
- class_option :group, aliases: "-g", default: DeployPin.fallback_group
7
- class_option :author, aliases: "-a"
6
+ class_option :group, aliases: '-g', default: DeployPin.fallback_group
7
+ class_option :author, aliases: '-a'
8
8
 
9
9
  source_root File.expand_path('templates', __dir__)
10
10
 
@@ -16,7 +16,7 @@ class DeployPin::TaskGenerator < Rails::Generators::Base
16
16
  'task.rb.erb'
17
17
  end
18
18
 
19
- @author = options[:author] || ENV["USER"]
19
+ @author = options[:author] || ENV['USER']
20
20
  @group = options[:group]
21
21
  @uuid = Time.now.strftime('%Y%m%d%H%M%S')
22
22
  template template_file, "#{DeployPin.tasks_path}/#{@uuid}_#{title}.rb"
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.3
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-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize
@@ -150,6 +150,34 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: simplecov
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-review
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'
153
181
  description: pin some task around deployment to execute them during deployment circle
154
182
  email:
155
183
  - skcc321@gmail.com