deploy_pin 1.3.2 → 1.3.3

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