tantot 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 856c9b2b2373579c05f52dd5ab10b2728bf516ec
4
- data.tar.gz: 527e2a10f265490b948a73a108a6ac42b6d02d09
3
+ metadata.gz: a1aca7d8b60134dc22beb994d5d51caabd6b98f9
4
+ data.tar.gz: c561b19426b24a5650ff23b092274f0212b0e1ff
5
5
  SHA512:
6
- metadata.gz: 882fa4b710f08cad5c074fc73f3a9eef94ee3d84fe499347a607e7683826587488aa82b3660f9cf1e877e73c4908dc3158debb5cb1889f69c80ed680677755a2
7
- data.tar.gz: c2a4008e85d2b887c6c08889b09145883450e1e31cfd63129d68a94ac1a19738fb440935113ad2b91cba005e9ad74313acde0a89b3d8e32b873c0374562a8299
6
+ metadata.gz: 382ba5b261e10b733db81f5d24c1900292666d70de3aa17cacbc6238dff566a68d7fd9caf4238f2d4609e0cfed015ac1c20f11c8e5f34af0cc73eb4ff991981e
7
+ data.tar.gz: 1c2799e8e61ae8acecf7c53c38cefbf2b1104bb12e62f7dc6e7884537f732ca3bb5a83255902419ca31103a5a1193db695f5034f2111b04adf861c9c752f2d20
@@ -1,7 +1,8 @@
1
- require 'tantot/collector/base'
2
1
  require 'tantot/collector/watcher'
3
2
  require 'tantot/collector/block'
4
3
 
4
+ COLLECTOR_CLASSES = [Tantot::Collector::Block, Tantot::Collector::Watcher]
5
+
5
6
  module Tantot
6
7
  module Collector
7
8
  class Manager
@@ -62,7 +63,7 @@ module Tantot
62
63
  end
63
64
 
64
65
  def resolve(context)
65
- collector_class = Tantot::Collector::Base.descendants.find {|c| c.manages?(context)}
66
+ collector_class = COLLECTOR_CLASSES.find {|c| c.manages?(context)}
66
67
  return nil unless collector_class
67
68
  @collectors[collector_class] || @collectors[collector_class] = collector_class.new
68
69
  end
@@ -1,6 +1,6 @@
1
1
  module Tantot
2
2
  module Collector
3
- class Block < Base
3
+ class Block
4
4
  def self.manages?(context)
5
5
  context.key?(:block_id)
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Tantot
2
2
  module Collector
3
- class Watcher < Base
3
+ class Watcher
4
4
  def self.manages?(context)
5
5
  context.key?(:watcher)
6
6
  end
@@ -72,7 +72,7 @@ module Tantot
72
72
  if backreference.any?
73
73
  # Call update_index, will follow normal chewy strategy
74
74
  ::Chewy.strategy Tantot.config.chewy_strategy do
75
- Tantot.logger.debug "[Tantot] [Chewy] [update_index] #{reference} (#{backreference.count} objects): #{backreference.inspect}"
75
+ Tantot.logger.debug { "[Tantot] [Chewy] [update_index] #{reference} (#{backreference.count} objects): #{backreference.inspect}" }
76
76
  ::Chewy.derive_type(reference).update_index(backreference, options)
77
77
  end
78
78
  end
@@ -1,3 +1,3 @@
1
1
  module Tantot
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,83 @@
1
+ #/bin/ruby
2
+ require 'bundler'
3
+
4
+ Bundler.require
5
+
6
+ require 'benchmark'
7
+ require 'stackprof'
8
+ require 'active_record'
9
+
10
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
11
+
12
+ Tantot.logger = Logger.new(nil)
13
+ Tantot.logger.level = Logger::ERROR
14
+
15
+ RUNS = 1000
16
+
17
+ def profile(obj)
18
+ puts obj.class.name
19
+ obj.setup
20
+ data = StackProf.run(mode: :cpu) do
21
+ obj.run
22
+ end
23
+ StackProf::Report.new(data).print_text(false, 20)
24
+ end
25
+
26
+ class ProfileRun
27
+ end
28
+
29
+ class BlockRun < ProfileRun
30
+ class BlockRunCity < ActiveRecord::Base
31
+ watch(:name) {|changes| }
32
+ end
33
+
34
+ def setup
35
+ ActiveRecord::Schema.define do
36
+ create_table :block_run_cities do |t|
37
+ t.column :name, :string
38
+ end
39
+ end
40
+ end
41
+
42
+ def run
43
+ RUNS.times do
44
+ city = BlockRunCity.create! name: 'foo'
45
+ city.name = 'bar'
46
+ city.save
47
+ city.destroy
48
+ end
49
+ end
50
+ end
51
+
52
+ class WatcherRun < ProfileRun
53
+ class WatcherRunWatcher
54
+ include Tantot::Watcher
55
+
56
+ def perform(changes)
57
+ end
58
+ end
59
+
60
+ class WatcherRunCity < ActiveRecord::Base
61
+ watch('watcher_run/watcher_run', :name)
62
+ end
63
+
64
+ def setup
65
+ ActiveRecord::Schema.define do
66
+ create_table :watcher_run_cities do |t|
67
+ t.column :name, :string
68
+ end
69
+ end
70
+ end
71
+
72
+ def run
73
+ RUNS.times do
74
+ city = WatcherRunCity.create! name: 'foo'
75
+ city.name = 'bar'
76
+ city.save
77
+ city.destroy
78
+ end
79
+ end
80
+
81
+ end
82
+
83
+ ProfileRun.descendants.each {|runner| profile(runner.new)}
data/tantot.gemspec CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rspec", "~> 3.0"
25
25
  spec.add_development_dependency 'sqlite3'
26
26
  spec.add_development_dependency 'database_cleaner'
27
+ spec.add_development_dependency 'stackprof'
27
28
 
28
29
  spec.add_dependency 'activesupport', '>= 3.2'
29
30
  spec.add_dependency 'activerecord', '>= 3.2'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tantot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - François-Pierre Bouchard
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: stackprof
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: activesupport
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -145,7 +159,6 @@ files:
145
159
  - lib/tantot.rb
146
160
  - lib/tantot/changes.rb
147
161
  - lib/tantot/collector.rb
148
- - lib/tantot/collector/base.rb
149
162
  - lib/tantot/collector/block.rb
150
163
  - lib/tantot/collector/watcher.rb
151
164
  - lib/tantot/config.rb
@@ -164,6 +177,7 @@ files:
164
177
  - lib/tantot/registry.rb
165
178
  - lib/tantot/version.rb
166
179
  - lib/tantot/watcher.rb
180
+ - performance/profile.rb
167
181
  - spec/changes_spec.rb
168
182
  - spec/extensions/chewy_spec.rb
169
183
  - spec/sidekiq_spec.rb
@@ -1,6 +0,0 @@
1
- module Tantot
2
- module Collector
3
- class Base
4
- end
5
- end
6
- end