ready-for-migration 0.1.1 → 0.1.2

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.

Potentially problematic release.


This version of ready-for-migration might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0594c87355e8056fb15067e0aab39c234d56f603e10377f86fde0b65d48e3fdf'
4
- data.tar.gz: c140de4c6b325e2655bffb64abdc3fc3b6eb95cc85ae49053679275baad3e78c
3
+ metadata.gz: a0e753e4def466810e67b02c098ca3f4a4ac7e9fc4ef83daed81848086513dc7
4
+ data.tar.gz: 65d5db0fd19fb6f5e9edee9e690b1def89afbbe6a1ef3d03ac46e2832ee3d11a
5
5
  SHA512:
6
- metadata.gz: affa9b3b0aa6def18e31f46876232f96b6497b7c48528fa13f9059950a1a063606ba053d6996da3beec1e2cf51743ae72cdcbb7ee571787655a740229a9ae6fb
7
- data.tar.gz: 3fee0628bb2f9192fb508986dfcb346c519e3ab08b989cbca07442fc0285366c8ba4d69f8b7ede426f404fe45de6d9330f527ba0a13f70a1dca8d9b854a16ecd
6
+ metadata.gz: 807d107595256c81270caa89b215705b174120d3c6692c2e01dbaeb568fd9fab0e8d7d04e6c145be3414bc3342e9b0358e3430b2df4e5c722db261d7b6c0b6f1
7
+ data.tar.gz: 93bbe8c21236760096827b77da10ded3e3ee93959821be52f350faa953ab956ffab8b402204136dd100f340e9d07383fc881c222f5edb5a87a10887fc83c12cd
@@ -0,0 +1,98 @@
1
+ require 'active_support/cache/file_store'
2
+
3
+ module Ready
4
+ module For
5
+ module Migration
6
+ module HealthActionInspectable
7
+
8
+ def self.cache
9
+ @cache ||= ActiveSupport::Cache::MemoryStore.new
10
+ end
11
+
12
+ def readiness
13
+ if params.has_key?(:status)
14
+ case
15
+ when params.has_key?(:after)
16
+ perform_inspection_with_status_and_after
17
+ when params.has_key?(:sleep)
18
+ perform_inspection_with_status_and_sleep
19
+ when params.has_key?(:random)
20
+ perform_inspection_with_status_and_random
21
+ else
22
+ perform_inspection_with_status
23
+ end
24
+ elsif params.has_key?(:sleep)
25
+ perform_inspection_with_sleep
26
+ end
27
+
28
+ super unless performed?
29
+ end
30
+
31
+ private
32
+
33
+ def get_status_value
34
+ raw = params.dig(:status)
35
+ status = raw.to_i if raw && /^\d{3}$/.match?(raw)
36
+ status
37
+ end
38
+
39
+ def get_after_value
40
+ raw = params.dig(:after)
41
+ value = raw.to_i if raw && /^\d+$/.match?(raw)
42
+ value
43
+ end
44
+
45
+ def get_random_value
46
+ raw = params.dig(:random)
47
+ value = raw.to_i if raw && /^\d+$/.match?(raw)
48
+ value
49
+ end
50
+
51
+ def get_sleep_value
52
+ raw = params.dig(:sleep)
53
+ value = raw.to_i if raw && /^\d+$/.match?(raw)
54
+ value
55
+ end
56
+
57
+ def perform_inspection_with_status_and_after
58
+ return unless status = get_status_value
59
+ return unless value = get_after_value
60
+
61
+ first_access_time = Ready::For::Migration::HealthActionInspectable.cache.fetch(:first_access_time) { Time.now }
62
+ if first_access_time + value < Time.now
63
+ head status
64
+ end
65
+ end
66
+
67
+ def perform_inspection_with_status_and_sleep
68
+ return unless status = get_status_value
69
+ return unless value = get_sleep_value
70
+
71
+ sleep value
72
+ head status
73
+ end
74
+
75
+ def perform_inspection_with_status_and_random
76
+ return unless status = get_status_value
77
+ return unless value = get_random_value
78
+
79
+ if value == 1 || rand(value - 1) == 0
80
+ head status
81
+ end
82
+ end
83
+
84
+ def perform_inspection_with_status
85
+ return unless status = get_status_value
86
+ head status
87
+ end
88
+
89
+ def perform_inspection_with_sleep
90
+ return unless value = get_sleep_value
91
+
92
+ sleep value
93
+ end
94
+
95
+ end
96
+ end
97
+ end
98
+ end
@@ -2,6 +2,7 @@ module Ready
2
2
  module For
3
3
  module Migration
4
4
  class HealthController < ::ActionController::Base
5
+ prepend HealthActionInspectable
5
6
 
6
7
  def readiness
7
8
  if ApplicationRecord.connection.migration_context.needs_migration?
@@ -2,6 +2,10 @@ module Ready
2
2
  module For
3
3
  module Migration
4
4
  class Engine < ::Rails::Engine
5
+
6
+ initializer 'ready-for-migration.initialize_cache' do
7
+ Ready::For::Migration::HealthActionInspectable.cache.write(:first_access_time, Time.now)
8
+ end
5
9
  end
6
10
  end
7
11
  end
@@ -1,7 +1,7 @@
1
1
  module Ready
2
2
  module For
3
3
  module Migration
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ready-for-migration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - bizside-developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-28 00:00:00.000000000 Z
11
+ date: 2023-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -60,6 +60,7 @@ files:
60
60
  - MIT-LICENSE
61
61
  - README.md
62
62
  - Rakefile
63
+ - app/controllers/concerns/ready/for/migration/health_action_inspectable.rb
63
64
  - app/controllers/ready/for/migration/health_controller.rb
64
65
  - config/routes.rb
65
66
  - lib/ready/for/migration.rb
@@ -84,8 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
85
  - !ruby/object:Gem::Version
85
86
  version: '0'
86
87
  requirements: []
87
- rubyforge_project:
88
- rubygems_version: 2.7.6.2
88
+ rubygems_version: 3.1.6
89
89
  signing_key:
90
90
  specification_version: 4
91
91
  summary: ready for migration