uncruft 0.1.0 → 0.2.0

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: 872b086c546d40b77f15ad5151c489ed5252650933a973cb6d8c4c8875c6e34c
4
- data.tar.gz: dc4827ef98f9074dfb8fd69cc2f9b65a5c748ede3c8c170cf05e941c8118f438
3
+ metadata.gz: 0574a8f06a56e8a78866055e1a06e190dbd98925c956deaf66c035f20f4fda7b
4
+ data.tar.gz: c4a7eeeb9cfb6bf8d565a81c798b9688f5307a97ba597187063c2914e054101d
5
5
  SHA512:
6
- metadata.gz: dc79959ad5e277af441da4078096c364fe0d2da1b1dcc4edf669a0c8531a26a6412d185c424aedabe204a1699d34abdfa251de919f83ad74add09c37c5632bf8
7
- data.tar.gz: dec28f5ebf6cbfffa6c5c4d1b0afbd5b363fce562c6dfed8c62b374d064ac9d47e5382ed1b7c486098edfb1c089058bafb52ba517a202328b698f6d2200d2d09
6
+ metadata.gz: 1fe67350e730b54703a2267a3f8513684cc94840d8a81085b081d45a1f73bd9db1e4adb9c6a9e32980815f002ef1f27aa178090c6e4b80713f3cd507a6db52e9
7
+ data.tar.gz: fd800818c479fdac5e7b286eae6248f19b35a2f75ae8de946a2d850db91c968dc9d6c7a7e0d9049eff1059a990d1244f0035bfb750c2fdc78bfd879aac914960
data/README.md CHANGED
@@ -39,6 +39,29 @@ You can also incrementally add new warnings to the ignorefile as you encounter t
39
39
  RECORD_DEPRECATIONS=1 rspec path/to/my/failing/spec.rb
40
40
  ```
41
41
 
42
+ ## Deprecating Attributes and Methods
43
+
44
+ If you would like to deprecate an attribute by applying a `ActiveSupport::Deprecation` warning on the deprecated attribute's getters and setters then look no further, we have a tool for that! Simply include `Uncruft::Deprecatable` in your class, identify the attribute you would like deprecated and provide a message you would like applied to the deprecation warning.
45
+
46
+ ```ruby
47
+ class Customer
48
+ include Uncruft::Deprecatable
49
+
50
+ attr_accessor :first_name
51
+
52
+ def initialize(first_name)
53
+ @first_name = first_name
54
+ end
55
+
56
+ deprecate_attribute(:first_name,
57
+ message: "Please stop using first_name it is deprecated, please use legal_first_name instead!")
58
+ end
59
+ ```
60
+
61
+ Within the `Uncruft::Deprecatable` module there is also a `.deprecate_method` method that can be used to apply a deprecation warning to an identified method, much like the `deprecate_attribute` method described above.
62
+
63
+ From there you can use Uncruft's deprecation recording tools to generate ingorefiles and manage your deprecation backlog in an organized manner.
64
+
42
65
  ## How to Contribute
43
66
 
44
67
  We would love for you to contribute! Anything that benefits the majority of users—from a documentation fix to an entirely new feature—is encouraged.
@@ -1,6 +1,7 @@
1
1
  require 'uncruft/version'
2
2
  require 'uncruft/railtie'
3
3
  require 'uncruft/deprecation_handler'
4
+ require 'uncruft/deprecatable'
4
5
  require 'uncruft/warning'
5
6
 
6
7
  module Uncruft
@@ -0,0 +1,25 @@
1
+ module Uncruft
2
+ module Deprecatable
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def deprecate_attribute(attribute, message:)
7
+ deprecate_method attribute, message: message
8
+ deprecate_method :"#{attribute}=", message: message
9
+ end
10
+
11
+ def deprecate_method(method, message:)
12
+ prepended_method = Module.new
13
+
14
+ prepended_method.module_eval do
15
+ define_method method do |*args, &block|
16
+ ActiveSupport::Deprecation.warn(message)
17
+ super(*args, &block)
18
+ end
19
+ end
20
+
21
+ prepend prepended_method
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,3 +1,3 @@
1
1
  module Uncruft
2
- VERSION = '0.1.0'.freeze
2
+ VERSION = '0.2.0'.freeze
3
3
  end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Uncruft::Deprecatable do
4
+ let(:my_name) { "Jess" }
5
+
6
+ subject { klass.new }
7
+
8
+ describe '.deprecate_attribute' do
9
+ let(:klass) do
10
+ Class.new do
11
+ include Uncruft::Deprecatable
12
+
13
+ attr_accessor :first_name
14
+
15
+ deprecate_attribute(:first_name,
16
+ message: "Please stop using this attribute!")
17
+ end
18
+ end
19
+
20
+ it 'applies deprecation warning when setting deprecated attribute' do
21
+ expect(ActiveSupport::Deprecation).to receive(:warn).once
22
+ .with("Please stop using this attribute!")
23
+
24
+ expect(subject.first_name = my_name).to eq my_name
25
+ end
26
+
27
+ it 'applies deprecation warning when getting deprecated attribute' do
28
+ subject.instance_variable_set(:@first_name, my_name)
29
+
30
+ expect(ActiveSupport::Deprecation).to receive(:warn)
31
+ .with("Please stop using this attribute!")
32
+
33
+ expect(subject.first_name).to eq my_name
34
+ end
35
+ end
36
+
37
+ describe '.deprecate_method' do
38
+ let(:klass) do
39
+ Class.new do
40
+ include Uncruft::Deprecatable
41
+
42
+ def legacy_method
43
+ "Hello Old World!"
44
+ end
45
+
46
+ deprecate_method(:legacy_method,
47
+ message: "Please stop using this method!")
48
+ end
49
+ end
50
+
51
+ it 'applies deprecation warning when calling the deprecated method' do
52
+ expect(ActiveSupport::Deprecation).to receive(:warn)
53
+ .with("Please stop using this method!")
54
+
55
+ expect(subject.legacy_method).to eq "Hello Old World!"
56
+ end
57
+ end
58
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uncruft
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Griffith
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-21 00:00:00.000000000 Z
12
+ date: 2020-08-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
@@ -107,6 +107,7 @@ files:
107
107
  - README.md
108
108
  - Rakefile
109
109
  - lib/uncruft.rb
110
+ - lib/uncruft/deprecatable.rb
110
111
  - lib/uncruft/deprecation_handler.rb
111
112
  - lib/uncruft/railtie.rb
112
113
  - lib/uncruft/version.rb
@@ -116,6 +117,7 @@ files:
116
117
  - spec/examples.txt
117
118
  - spec/spec_helper.rb
118
119
  - spec/support/rails_root.rb
120
+ - spec/uncruft/deprecatable_spec.rb
119
121
  - spec/uncruft/deprecation_handler_spec.rb
120
122
  - spec/uncruft/railtie_spec.rb
121
123
  - spec/uncruft/warning_spec.rb
@@ -150,6 +152,7 @@ test_files:
150
152
  - spec/examples.txt
151
153
  - spec/uncruft/railtie_spec.rb
152
154
  - spec/uncruft/warning_spec.rb
155
+ - spec/uncruft/deprecatable_spec.rb
153
156
  - spec/uncruft/deprecation_handler_spec.rb
154
157
  - spec/support/rails_root.rb
155
158
  - spec/uncruft_spec.rb