instance_tracker 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.
- checksums.yaml +14 -6
- data/.ruby-version +1 -1
- data/README.md +28 -6
- data/lib/instance_tracker/trackable.rb +16 -0
- data/lib/instance_tracker/version.rb +1 -1
- data/spec/plugin/trackable_spec.rb +21 -2
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
N2ZkNjc1YzUwMGE1MGRhMGUxMmFkZDExYzk3NDY2MGU3YjU0ODVhYw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZDUzNmI5ODZhNzZkZTk5YTUxZDBhYTdiYmE5ZjJmMDA2ZDYwZGExOA==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NzVhNmNlYjY3ZmI1ZjMxYWI1ZWVkMTgxMzQzNjE5ZDNjMTJiMTZjZmU4MGJm
|
10
|
+
MzliNTM3ZTFlZTZhZjRjNjIwZTJlY2VkZGNjNDRhMjg1MzRmMjNjMjcxZjgw
|
11
|
+
NWVhNjViODc1NjRiZjZlNTBhZTE1YzEwMzIxNWI1NTlkNTZlM2Q=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
Mzc4M2I3ZjkyNzcwYzZhN2EwYWE4M2EzYzI4YjkyNzg5MmU2MDIzMTVhZGQ2
|
14
|
+
NTc3NzE5OGZlMDZiYzIwMGU2ZDhiZmM2ZTM1YWY5NzVmZmQ0MjNhNzIxZjAx
|
15
|
+
ODRjYmViMjVhNTAyYWE3MzdhZGUwNTBiZjI2NDI5MGE2OTQ4ODU=
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
1.9.3-p392
|
data/README.md
CHANGED
@@ -19,24 +19,46 @@ Or install it yourself as:
|
|
19
19
|
## API Summary
|
20
20
|
|
21
21
|
Start by including `InstanceTracker::Trackable` within classes in which
|
22
|
-
you want to track an instance variable
|
23
|
-
|
24
|
-
variable to track.
|
22
|
+
you want to track an instance variable. This should occur after the
|
23
|
+
call to `initialize`.
|
25
24
|
|
26
25
|
```ruby
|
27
26
|
class Foo
|
28
|
-
include InstanceTracker::Trackable
|
29
|
-
track :wrapper
|
30
|
-
|
31
27
|
def initialize(wrapper)
|
32
28
|
@wrapper = wrapper
|
33
29
|
end
|
30
|
+
|
31
|
+
include InstanceTracker::Trackable
|
32
|
+
track :wrapper
|
34
33
|
end
|
35
34
|
```
|
36
35
|
|
36
|
+
This provides the class a `track` class method which allows you to define which
|
37
|
+
instance variable to track.
|
38
|
+
|
39
|
+
|
37
40
|
You are now able to access the `wrapper` by simply calling
|
38
41
|
`trackable_instance` from any instance of your class.
|
39
42
|
|
43
|
+
The included class can also override `after_initialize` (implemented as
|
44
|
+
a simple interface within `InstanceTracker::Trackable`) which will be
|
45
|
+
called as soon as the included class is instantiated.
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
class Foo
|
49
|
+
def initialize(wrapper)
|
50
|
+
@wrapper = wrapper
|
51
|
+
end
|
52
|
+
|
53
|
+
def after_initialize
|
54
|
+
trackable_instance.meaning_of_life = "42"
|
55
|
+
end
|
56
|
+
|
57
|
+
include InstanceTracker::Trackable
|
58
|
+
track :wrapper
|
59
|
+
end
|
60
|
+
```
|
61
|
+
|
40
62
|
## Contributing
|
41
63
|
|
42
64
|
1. Fork it
|
@@ -19,6 +19,22 @@ module InstanceTracker
|
|
19
19
|
|
20
20
|
def included _klass
|
21
21
|
_klass.class_eval do
|
22
|
+
alias_method :initialize_old, :initialize
|
23
|
+
alias_method :after_initialize_old, :after_initialize if method_defined? "after_initialize"
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
initialize_old
|
27
|
+
after_initialize
|
28
|
+
end
|
29
|
+
|
30
|
+
if method_defined? "after_initialize"
|
31
|
+
def after_initialize
|
32
|
+
after_initialize_old
|
33
|
+
end
|
34
|
+
else
|
35
|
+
def after_initialize; end
|
36
|
+
end
|
37
|
+
|
22
38
|
include InstanceMethods
|
23
39
|
extend ClassMethods
|
24
40
|
end
|
@@ -5,12 +5,13 @@ module InstanceTracker
|
|
5
5
|
describe Trackable do
|
6
6
|
|
7
7
|
class SpecHarness
|
8
|
-
include InstanceTracker::Trackable
|
9
|
-
track :context
|
10
8
|
|
11
9
|
def initialize
|
12
10
|
@context = "Foo"
|
13
11
|
end
|
12
|
+
|
13
|
+
include InstanceTracker::Trackable
|
14
|
+
track :context
|
14
15
|
end
|
15
16
|
|
16
17
|
let(:subject) { SpecHarness.new }
|
@@ -20,5 +21,23 @@ module InstanceTracker
|
|
20
21
|
expect(subject.trackable_instance).to eq("Foo")
|
21
22
|
end
|
22
23
|
|
24
|
+
it "should already implement `#after_initialize` to return nil" do
|
25
|
+
expect(subject.after_initialize).to be_nil
|
26
|
+
end
|
27
|
+
|
28
|
+
context "when `#after_initialize` is overriden" do
|
29
|
+
|
30
|
+
it "should call the overriden implementation of `#after_initialize`" do
|
31
|
+
SpecHarness.class_eval do
|
32
|
+
def after_initialize
|
33
|
+
true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
expect(subject.after_initialize).to be
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
23
42
|
end
|
24
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: instance_tracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael de Silva
|
@@ -28,84 +28,84 @@ dependencies:
|
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - '>='
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - '>='
|
38
|
+
- - ! '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - '>='
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - '>='
|
52
|
+
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - '>='
|
59
|
+
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - '>='
|
66
|
+
- - ! '>='
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mocha
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - '>='
|
73
|
+
- - ! '>='
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - '>='
|
80
|
+
- - ! '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: guard-rspec
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - '>='
|
87
|
+
- - ! '>='
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - '>='
|
94
|
+
- - ! '>='
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: yard
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - '>='
|
101
|
+
- - ! '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - '>='
|
108
|
+
- - ! '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0'
|
111
111
|
description: A Simple Ruby DSL for Instance Tracking
|
@@ -139,12 +139,12 @@ require_paths:
|
|
139
139
|
- lib
|
140
140
|
required_ruby_version: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
|
-
- - '>='
|
142
|
+
- - ! '>='
|
143
143
|
- !ruby/object:Gem::Version
|
144
144
|
version: 1.9.3
|
145
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
146
|
requirements:
|
147
|
-
- - '>='
|
147
|
+
- - ! '>='
|
148
148
|
- !ruby/object:Gem::Version
|
149
149
|
version: '0'
|
150
150
|
requirements: []
|