safe_monkey_patching 0.0.5 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -3
  3. data/lib/safe_monkey_patching.rb +27 -14
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb049b9fe1a86ac335d025d222022636d7ecb8e4ef6cc7c25a86c58968090d2a
4
- data.tar.gz: e9f903c2226c3a2750666d2f5dc63afd55d8ea8081a82082b439c3bd51cfbae3
3
+ metadata.gz: 9cc771a21035ae487d38091ccc66b924ced972aac8240d0588c0591979308641
4
+ data.tar.gz: f35f5d81b079a5a53b1735e2e463653b35dc5b7b1b487ea2f918d83a61c4c6cf
5
5
  SHA512:
6
- metadata.gz: bb8e560c538bd800ede19b5ae9f8bc2919ccd48868facd6f562cd326a80b7a409e82d957f53bc8e6ccbb4ed62d253eea041f10f103afe1d084028531e0e4c138
7
- data.tar.gz: 753c0171e3fed5a0246ca5286d62ad59efb76a08844c31c489affbe27b86869f3b563537097e623f80e25177d29cec1a69c94ab8d69d39e2eb736895d30ac32a
6
+ metadata.gz: db1f4770c03d722b98efac8e702defa8bfb7fa2dad4996676c2e8938d49f1c7a8254985330704c52990315abd3775189386377c65f1f2c355d8a869a365edeb8
7
+ data.tar.gz: c0c51109a4a1152a37cf3683b0f81038aaca8b3fe18870d81ef97581e36f4c1cf41ec7ebbef750c332e7d2d339679275f1cecf2858c5807d897ba9db5ece993c
data/README.md CHANGED
@@ -8,7 +8,7 @@ module ActiveJob
8
8
  monkey_patch :deserialize
9
9
 
10
10
  def deserialize(job_data)
11
- ...
11
+ # ...
12
12
  end
13
13
  end
14
14
  end
@@ -27,7 +27,7 @@ a więc, gdy podbijemy railsy i zmieni się kod źródłowy, to `gif diff` nam o
27
27
 
28
28
  ```diff
29
29
 
30
- diff --git a/monkey_patchs.yml b/monkey_patchs.yml
30
+ diff --git a/monkey_patches-old.yml b/monkey_patches-old.yml
31
31
 
32
32
  ActiveJob::Core::ClassMethods:
33
33
  deserialize:
@@ -35,5 +35,11 @@ diff --git a/monkey_patchs.yml b/monkey_patchs.yml
35
35
  + sha1: 131d3acf24768b30a3ccb1052591b1cdb603f0cd
36
36
  ```
37
37
 
38
- Dzięki temu będziemy wiedzieli, że trzeba tam zajrzeć 🥳
38
+ Również pokażą się pliki `monkey_patches-old.yml` i `WRONG_MONKEY_PATCHES.txt`, który pokazuje niekompatybilności z gemów.
39
+
40
+ Aby zaktualizować łatki, to trzeba zcomitować `monkey_patches-old.yml` i będzie :ok:.
41
+
42
+ Dzięki temu gemu nie będzie trzeba pamiętać o przejrzeniu patchów przy podbijaniu gemów 🥳
43
+
44
+
39
45
 
@@ -45,7 +45,7 @@ module SafeMonkeyPatching
45
45
  method_entry = { method.owner.to_s => { method.name.to_s =>
46
46
  { 'sha1' => Digest::SHA1.hexdigest(method.source) } } }
47
47
 
48
- new_database = database.merge(method_entry)
48
+ new_database = database.deep_merge(method_entry)
49
49
  File.open(File.join(gem_path, 'monkey_patches-new.yml'), 'w') do |f|
50
50
  f.puts(new_database.to_yaml)
51
51
  end
@@ -58,28 +58,41 @@ class Object
58
58
  end
59
59
 
60
60
  at_exit do
61
- break unless Rails.env.test?
61
+ generate_file = ENV.key?('MONKEY') || ENV.key?('GITHUB_SHA')
62
+ written = false
63
+
62
64
  SafeMonkeyPatching::Behavior.gems_with_patches.each do |gem_path|
63
65
  old_patches = SafeMonkeyPatching::Behavior.load_store(File.join(gem_path, "monkey_patches-old.yml")).sort.to_h.to_yaml
64
66
  new_patches = SafeMonkeyPatching::Behavior.load_store(File.join(gem_path, "monkey_patches-new.yml")).sort.to_h.to_yaml
65
67
 
66
- File.write(File.join(gem_path, "monkey_patches-old.yml"), old_patches)
67
- File.write(File.join(gem_path, "monkey_patches-new.yml"), new_patches)
68
+ if generate_file
69
+ File.write(File.join(gem_path, "monkey_patches-old.yml"), old_patches)
70
+ File.write(File.join(gem_path, "monkey_patches-new.yml"), new_patches)
68
71
 
69
- FileUtils.mv(File.join(gem_path, "monkey_patches-new.yml"),
70
- File.join(gem_path, "monkey_patches-old.yml"))
72
+ FileUtils.mv(File.join(gem_path, "monkey_patches-new.yml"),
73
+ File.join(gem_path, "monkey_patches-old.yml"))
74
+ end
71
75
 
72
76
  diff = Diffy::Diff.new(old_patches, new_patches)
73
77
 
74
78
  if diff.to_s.size.positive?
75
- $stderr.puts "Wrong monkeypatches! \n But if they are correct, then just commit 'monkey_patches-old.yml'".red.bold
76
- $stderr.puts gem_path
77
- $stderr.puts diff.to_s(:color)
78
-
79
- open(ERROR_LOCATION, 'a') do |f|
80
- f.puts("\n")
81
- f.puts(gem_path)
82
- f.puts(diff.to_s)
79
+ unless written
80
+ written = true
81
+ $stderr.puts
82
+ $stderr.puts "Wrong monkey_patches! Did you changed something?".red.bold
83
+ $stderr.puts "to correct them:"
84
+ $stderr.puts "#{"-".blue.bold} Rerun rspec with variable #{ "MONKEY=1".green }" unless generate_file
85
+ $stderr.puts "#{"-".blue.bold} Commit generated file #{ "monkey_patches-old.yml".green }"
86
+ end
87
+
88
+ if generate_file
89
+ $stderr.puts gem_path
90
+ $stderr.puts diff.to_s(:color)
91
+ open(ERROR_LOCATION, 'a') do |f|
92
+ f.puts("\n")
93
+ f.puts(gem_path)
94
+ f.puts(diff.to_s)
95
+ end
83
96
  end
84
97
  end
85
98
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: safe_monkey_patching
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrzej Bisewski
@@ -51,7 +51,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
51
51
  - !ruby/object:Gem::Version
52
52
  version: '0'
53
53
  requirements: []
54
- rubygems_version: 3.1.6
54
+ rubygems_version: 3.0.9
55
55
  signing_key:
56
56
  specification_version: 4
57
57
  summary: Safe monkey patching