quick_count 0.0.6 → 0.1.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 +5 -5
- data/CHANGELOG.md +5 -0
- data/{MIT-LICENSE → LICENSE} +1 -1
- data/README.md +1 -1
- data/lib/count_estimate/active_record.rb +13 -0
- data/lib/quick_count/active_record.rb +18 -0
- data/lib/quick_count/railtie.rb +2 -2
- data/lib/quick_count/version.rb +1 -1
- data/lib/quick_count.rb +2 -2
- metadata +11 -39
- data/.gitignore +0 -75
- data/.travis.yml +0 -29
- data/Gemfile +0 -19
- data/Rakefile +0 -6
- data/gemfiles/activerecord-4.0.Gemfile +0 -3
- data/gemfiles/activerecord-4.1.Gemfile +0 -3
- data/gemfiles/activerecord-4.2.Gemfile +0 -3
- data/gemfiles/activerecord-5.0.Gemfile +0 -3
- data/gemfiles/activerecord-5.1.Gemfile +0 -3
- data/lib/count_estimate/active_record/relation.rb +0 -15
- data/lib/quick_count/active_record/base.rb +0 -20
- data/quick_count.gemspec +0 -43
- data/spec/quick_count_spec.rb +0 -18
- data/spec/spec_helper.rb +0 -29
- data/spec/support/rails/app/models/post.rb +0 -3
- data/spec/support/rails/app/models/user.rb +0 -3
- data/spec/support/rails/config/database.yml +0 -5
- data/spec/support/rails/config/routes.rb +0 -3
- data/spec/support/rails/db/schema.rb +0 -14
- data/spec/support/rails/log/.gitignore +0 -1
- data/spec/support/rails/public/favicon.ico +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: f66820d33c95c3c038829d7fc456850301d5514f
|
4
|
+
data.tar.gz: 4117c911a066b29f324bc7dc8ad4e093a70ada3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f1b35c2ff31bc1c80ae3a31472b08b12047a9951253a3030dbeac450d3e633500e3a56bd09d9f63195ffcdb474c451b5209df80975d03a70feee6d3ae24c4ef
|
7
|
+
data.tar.gz: 23b26e62eaf837bc6f999531f0d123c1c1501a7cea95993363ff1939240ecc9186572943bcd2a633065d7956cc584919c09c5142b1765d1b7588b790ac1e594a
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
# QuickCount
|
2
2
|
|
3
|
+
## 0.1.0 _(June 22nd 2018)_
|
4
|
+
- Unlock `pg` gem (allow for > 0.2.x)
|
5
|
+
- Cleaned up gemspec and what it bundles in the gem
|
6
|
+
- Cleaned up some files/module names
|
7
|
+
|
3
8
|
## 0.0.6 _(March 17th 2018)_
|
4
9
|
- Improved accuracy of `quick_count` by an average of 2.16%
|
5
10
|
- Configurable threshold
|
data/{MIT-LICENSE → LICENSE}
RENAMED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
[](https://travis-ci.org/TwilightCoders/quick_count)
|
3
3
|
[](https://codeclimate.com/github/TwilightCoders/quick_count/maintainability)
|
4
4
|
[](https://codeclimate.com/github/TwilightCoders/quick_count/coverage)
|
5
|
-
[](https://depfu.com/github/TwilightCoders/quick_count)
|
6
6
|
|
7
7
|
# QuickCount
|
8
8
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module CountEstimate
|
4
|
+
module ActiveRecord
|
5
|
+
|
6
|
+
def count_estimate
|
7
|
+
my_statement = ::ActiveRecord::Base.connection.quote(to_sql)
|
8
|
+
result = ::ActiveRecord::Base.connection.execute("SELECT count_estimate(#{my_statement})")
|
9
|
+
result[0]["count_estimate"].to_i
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module QuickCount
|
4
|
+
module ActiveRecord
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
|
9
|
+
def quick_count(threshold: nil)
|
10
|
+
threshold = threshold ? ", #{threshold}" : nil
|
11
|
+
result = ::ActiveRecord::Base.connection.execute("SELECT quick_count('#{table_name}'#{threshold})")
|
12
|
+
result[0]["quick_count"].to_i
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
data/lib/quick_count/railtie.rb
CHANGED
data/lib/quick_count/version.rb
CHANGED
data/lib/quick_count.rb
CHANGED
@@ -9,8 +9,8 @@ module QuickCount
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.load
|
12
|
-
::ActiveRecord::Base.send :include, QuickCount::ActiveRecord
|
13
|
-
::ActiveRecord::Relation.send :include, CountEstimate::ActiveRecord
|
12
|
+
::ActiveRecord::Base.send :include, QuickCount::ActiveRecord
|
13
|
+
::ActiveRecord::Relation.send :include, CountEstimate::ActiveRecord
|
14
14
|
end
|
15
15
|
|
16
16
|
def self.install(threshold: 500000, schema: 'public')
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quick_count
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dale Stevens
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
19
|
+
version: '0.20'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '0.20'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activerecord
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,33 +128,14 @@ executables: []
|
|
128
128
|
extensions: []
|
129
129
|
extra_rdoc_files: []
|
130
130
|
files:
|
131
|
-
- ".gitignore"
|
132
|
-
- ".travis.yml"
|
133
131
|
- CHANGELOG.md
|
134
|
-
-
|
135
|
-
- MIT-LICENSE
|
132
|
+
- LICENSE
|
136
133
|
- README.md
|
137
|
-
-
|
138
|
-
- gemfiles/activerecord-4.0.Gemfile
|
139
|
-
- gemfiles/activerecord-4.1.Gemfile
|
140
|
-
- gemfiles/activerecord-4.2.Gemfile
|
141
|
-
- gemfiles/activerecord-5.0.Gemfile
|
142
|
-
- gemfiles/activerecord-5.1.Gemfile
|
143
|
-
- lib/count_estimate/active_record/relation.rb
|
134
|
+
- lib/count_estimate/active_record.rb
|
144
135
|
- lib/quick_count.rb
|
145
|
-
- lib/quick_count/active_record
|
136
|
+
- lib/quick_count/active_record.rb
|
146
137
|
- lib/quick_count/railtie.rb
|
147
138
|
- lib/quick_count/version.rb
|
148
|
-
- quick_count.gemspec
|
149
|
-
- spec/quick_count_spec.rb
|
150
|
-
- spec/spec_helper.rb
|
151
|
-
- spec/support/rails/app/models/post.rb
|
152
|
-
- spec/support/rails/app/models/user.rb
|
153
|
-
- spec/support/rails/config/database.yml
|
154
|
-
- spec/support/rails/config/routes.rb
|
155
|
-
- spec/support/rails/db/schema.rb
|
156
|
-
- spec/support/rails/log/.gitignore
|
157
|
-
- spec/support/rails/public/favicon.ico
|
158
139
|
homepage: https://github.com/TwilightCoders/quick_count
|
159
140
|
licenses:
|
160
141
|
- MIT
|
@@ -177,17 +158,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
158
|
version: '0'
|
178
159
|
requirements: []
|
179
160
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.
|
161
|
+
rubygems_version: 2.6.14.1
|
181
162
|
signing_key:
|
182
163
|
specification_version: 4
|
183
164
|
summary: Quickly get an accurate count estimation for large tables.
|
184
|
-
test_files:
|
185
|
-
- spec/quick_count_spec.rb
|
186
|
-
- spec/spec_helper.rb
|
187
|
-
- spec/support/rails/app/models/post.rb
|
188
|
-
- spec/support/rails/app/models/user.rb
|
189
|
-
- spec/support/rails/config/database.yml
|
190
|
-
- spec/support/rails/config/routes.rb
|
191
|
-
- spec/support/rails/db/schema.rb
|
192
|
-
- spec/support/rails/log/.gitignore
|
193
|
-
- spec/support/rails/public/favicon.ico
|
165
|
+
test_files: []
|
data/.gitignore
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
# See http://help.github.com/ignore-files/ for more about ignoring files.
|
2
|
-
#
|
3
|
-
# If you find yourself ignoring temporary files generated by your text editor
|
4
|
-
# or operating system, you probably want to add a global ignore instead:
|
5
|
-
# git config --global core.excludesfile ~/.gitignore_global
|
6
|
-
|
7
|
-
# Database config and secrets
|
8
|
-
/config/database.yml
|
9
|
-
/config/secrets.yml
|
10
|
-
|
11
|
-
# Ignore bundler config
|
12
|
-
/.bundle
|
13
|
-
|
14
|
-
# Ignore the default SQLite database.
|
15
|
-
/db/*.sqlite3
|
16
|
-
|
17
|
-
# Ignore all logfiles and tempfiles.
|
18
|
-
/log/*.log
|
19
|
-
/tmp
|
20
|
-
/db/structure.sql
|
21
|
-
/doc/app/*
|
22
|
-
/vendor/cldr/*
|
23
|
-
/public/uploads/*
|
24
|
-
/public/photo/*
|
25
|
-
/public/test/*
|
26
|
-
/test/assets/*
|
27
|
-
/spec/assets/*
|
28
|
-
/public/assets/**
|
29
|
-
.powenv
|
30
|
-
.rvmrc
|
31
|
-
.env
|
32
|
-
.ruby-version
|
33
|
-
|
34
|
-
# Compiled source #
|
35
|
-
###################
|
36
|
-
/pkg
|
37
|
-
*.com
|
38
|
-
*.class
|
39
|
-
*.dll
|
40
|
-
*.exe
|
41
|
-
*.o
|
42
|
-
*.so
|
43
|
-
|
44
|
-
# Packages #
|
45
|
-
############
|
46
|
-
# it's better to unpack these files and commit the raw source
|
47
|
-
# git has its own built in compression methods
|
48
|
-
*.7z
|
49
|
-
*.dmg
|
50
|
-
*.gz
|
51
|
-
*.iso
|
52
|
-
*.jar
|
53
|
-
*.rar
|
54
|
-
*.tar
|
55
|
-
*.zip
|
56
|
-
|
57
|
-
# Logs and databases #
|
58
|
-
######################
|
59
|
-
*.log
|
60
|
-
*.sql
|
61
|
-
*.sqlite
|
62
|
-
|
63
|
-
# OS generated files #
|
64
|
-
######################
|
65
|
-
.DS_Store
|
66
|
-
.DS_Store?
|
67
|
-
._*
|
68
|
-
.Spotlight-V100
|
69
|
-
.Trashes
|
70
|
-
Icon?
|
71
|
-
ehthumbs.db
|
72
|
-
Thumbs.db
|
73
|
-
/Gemfile.lock
|
74
|
-
/coverage
|
75
|
-
/.editorconfig
|
data/.travis.yml
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
|
3
|
-
sudo: false
|
4
|
-
|
5
|
-
cache: bundler
|
6
|
-
|
7
|
-
before_script:
|
8
|
-
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
9
|
-
- chmod +x ./cc-test-reporter
|
10
|
-
- ./cc-test-reporter before-build
|
11
|
-
|
12
|
-
script:
|
13
|
-
- bundle exec rspec
|
14
|
-
|
15
|
-
after_script:
|
16
|
-
- ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
|
17
|
-
|
18
|
-
addons:
|
19
|
-
postgresql: "9.3"
|
20
|
-
|
21
|
-
rvm:
|
22
|
-
- 2.5
|
23
|
-
- 2.4
|
24
|
-
- 2.3
|
25
|
-
|
26
|
-
gemfile:
|
27
|
-
- gemfiles/activerecord-5.1.Gemfile
|
28
|
-
- gemfiles/activerecord-5.0.Gemfile
|
29
|
-
- gemfiles/activerecord-4.2.Gemfile
|
data/Gemfile
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gemspec
|
4
|
-
|
5
|
-
group :test do
|
6
|
-
|
7
|
-
# Generates coverage stats of specs
|
8
|
-
gem 'simplecov'
|
9
|
-
|
10
|
-
# Publishes coverage to codeclimate
|
11
|
-
gem 'codeclimate-test-reporter'
|
12
|
-
|
13
|
-
gem 'rspec'
|
14
|
-
|
15
|
-
gem 'database_cleaner'
|
16
|
-
|
17
|
-
gem 'combustion'
|
18
|
-
|
19
|
-
end
|
data/Rakefile
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module CountEstimate
|
4
|
-
module ActiveRecord
|
5
|
-
module Relation
|
6
|
-
|
7
|
-
def count_estimate
|
8
|
-
my_statement = ::ActiveRecord::Base.connection.quote(to_sql)
|
9
|
-
result = ::ActiveRecord::Base.connection.execute("SELECT count_estimate(#{my_statement})")
|
10
|
-
result[0]["count_estimate"].to_i
|
11
|
-
end
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module QuickCount
|
4
|
-
module ActiveRecord
|
5
|
-
module Base
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
module ClassMethods
|
9
|
-
|
10
|
-
def quick_count(threshold: nil)
|
11
|
-
threshold = threshold ? ", #{threshold}" : nil
|
12
|
-
result = ::ActiveRecord::Base.connection.execute("SELECT quick_count('#{table_name}'#{threshold})")
|
13
|
-
result[0]["quick_count"].to_i
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
data/quick_count.gemspec
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'quick_count/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = 'quick_count'
|
8
|
-
spec.version = QuickCount::VERSION
|
9
|
-
spec.authors = ['Dale Stevens']
|
10
|
-
spec.email = ['dale@twilightcoders.net']
|
11
|
-
|
12
|
-
spec.summary = 'Quickly get an accurate count estimation for large tables.'
|
13
|
-
spec.description = 'Installs two database functions, `quick_count` and `count_estimate` for getting count estimations on large tables'
|
14
|
-
spec.homepage = "https://github.com/TwilightCoders/quick_count"
|
15
|
-
spec.license = 'MIT'
|
16
|
-
|
17
|
-
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
|
-
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
|
-
if spec.respond_to?(:metadata)
|
20
|
-
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
21
|
-
else
|
22
|
-
raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
|
23
|
-
end
|
24
|
-
|
25
|
-
spec.files = `git ls-files -z`.split("\x0")
|
26
|
-
spec.bindir = 'bin'
|
27
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
28
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
29
|
-
spec.require_paths = ['lib', 'spec']
|
30
|
-
|
31
|
-
rails_versions = ['>= 4', '< 6']
|
32
|
-
spec.required_ruby_version = '>= 2.0'
|
33
|
-
|
34
|
-
spec.add_runtime_dependency 'pg', '~> 0'
|
35
|
-
spec.add_runtime_dependency 'activerecord', rails_versions
|
36
|
-
spec.add_runtime_dependency 'railties', rails_versions
|
37
|
-
|
38
|
-
spec.add_development_dependency 'pry-byebug', '~> 3'
|
39
|
-
spec.add_development_dependency 'bundler', '~> 1.3'
|
40
|
-
spec.add_development_dependency 'rake', '~> 12.0'
|
41
|
-
spec.add_development_dependency 'combustion', '~> 0.7'
|
42
|
-
|
43
|
-
end
|
data/spec/quick_count_spec.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe QuickCount do
|
4
|
-
it "is present in models" do
|
5
|
-
expect(Post).to respond_to(:quick_count)
|
6
|
-
expect(Post.all).to respond_to(:count_estimate)
|
7
|
-
end
|
8
|
-
|
9
|
-
it "returns the correct count" do
|
10
|
-
expect(Post.quick_count).to be(0)
|
11
|
-
expect(Post.all.count_estimate).to be > 0
|
12
|
-
end
|
13
|
-
|
14
|
-
it "root has the right value" do
|
15
|
-
expect(QuickCount.root).not_to be_nil
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
ENV['RAILS_ENV'] = 'test'
|
2
|
-
|
3
|
-
require 'database_cleaner'
|
4
|
-
require 'combustion'
|
5
|
-
|
6
|
-
require 'simplecov'
|
7
|
-
SimpleCov.start do
|
8
|
-
add_filter 'spec'
|
9
|
-
end
|
10
|
-
|
11
|
-
Combustion.path = 'spec/support/rails'
|
12
|
-
Combustion.initialize! :active_record
|
13
|
-
|
14
|
-
schema = "quick_count"
|
15
|
-
|
16
|
-
RSpec.configure do |config|
|
17
|
-
config.order = "random"
|
18
|
-
|
19
|
-
config.before(:suite) do
|
20
|
-
ActiveRecord::Base.connection.execute("CREATE SCHEMA #{schema}")
|
21
|
-
QuickCount.install(schema: schema)
|
22
|
-
end
|
23
|
-
|
24
|
-
config.after(:suite) do
|
25
|
-
QuickCount.uninstall(schema: schema)
|
26
|
-
ActiveRecord::Base.connection.execute("DROP SCHEMA #{schema}")
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
*.log
|
File without changes
|