click 0.0.2 → 0.0.3
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.
- data/lib/click/clicker.rb +4 -2
- data/lib/click/database.rb +7 -5
- data/lib/click/indeterminable.rb +4 -0
- data/lib/click/version.rb +1 -1
- data/spec/clicker_spec.rb +29 -0
- metadata +2 -1
data/lib/click/clicker.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'click/indeterminable'
|
2
|
+
|
1
3
|
module Click
|
2
4
|
class Clicker
|
3
5
|
def click!
|
@@ -9,9 +11,9 @@ module Click
|
|
9
11
|
ObjectSpace.each_object do |object|
|
10
12
|
begin
|
11
13
|
klass = object.class
|
12
|
-
|
14
|
+
klass = Click::Indeterminable unless klass.is_a?(Class)
|
13
15
|
rescue NoMethodError
|
14
|
-
|
16
|
+
klass = Click::Indeterminable
|
15
17
|
end
|
16
18
|
|
17
19
|
@state[klass] += 1
|
data/lib/click/database.rb
CHANGED
@@ -19,12 +19,14 @@ module Click
|
|
19
19
|
private
|
20
20
|
def _with_db(db)
|
21
21
|
ensure_tables!(db)
|
22
|
-
|
23
|
-
require 'click/database/models'
|
22
|
+
assign_db_to_models(db)
|
24
23
|
yield db
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
end
|
25
|
+
|
26
|
+
def assign_db_to_models(db)
|
27
|
+
require 'click/database/models'
|
28
|
+
Click::Database::Models::Snapshot.db = db
|
29
|
+
Click::Database::Models::ObjectCount.db = db
|
28
30
|
end
|
29
31
|
|
30
32
|
def ensure_tables!(db)
|
data/lib/click/version.rb
CHANGED
data/spec/clicker_spec.rb
CHANGED
@@ -31,6 +31,35 @@ describe Click::Clicker do
|
|
31
31
|
clicker.instance_count(Symbol)
|
32
32
|
}.by_at_least(difference)
|
33
33
|
end
|
34
|
+
|
35
|
+
it 'counts BasicObjects as indeterminable' do
|
36
|
+
difference = 100
|
37
|
+
stuff = []
|
38
|
+
|
39
|
+
expect {
|
40
|
+
difference.times { |i| stuff << BasicObject.new }
|
41
|
+
}.to change {
|
42
|
+
clicker.click!
|
43
|
+
clicker.instance_count(Click::Indeterminable)
|
44
|
+
}.by_at_least(difference)
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'counts objects that have overridden #class as indeterminable' do
|
48
|
+
difference = 100
|
49
|
+
stuff = []
|
50
|
+
klass = Class.new do
|
51
|
+
def class
|
52
|
+
nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
expect {
|
57
|
+
difference.times { |i| stuff << klass.new }
|
58
|
+
}.to change {
|
59
|
+
clicker.click!
|
60
|
+
clicker.instance_count(Click::Indeterminable)
|
61
|
+
}.by_at_least(difference)
|
62
|
+
end
|
34
63
|
end
|
35
64
|
|
36
65
|
describe '#object_counts' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: click
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -131,6 +131,7 @@ files:
|
|
131
131
|
- lib/click/database/models/object_count.rb
|
132
132
|
- lib/click/database/models/snapshot.rb
|
133
133
|
- lib/click/database/writer.rb
|
134
|
+
- lib/click/indeterminable.rb
|
134
135
|
- lib/click/observer.rb
|
135
136
|
- lib/click/version.rb
|
136
137
|
- spec/click_spec.rb
|