activerecord-postgresql-cursors 0.0.2 → 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 +7 -0
- data/.gitignore +24 -0
- data/Gemfile +26 -0
- data/Guardfile +17 -0
- data/MIT-LICENSE +1 -1
- data/Rakefile +6 -20
- data/activerecord-postgresql-cursors.gemspec +14 -34
- data/lib/{postgresql_cursors_3.rb → active_record/postgresql_cursors/cursors.rb} +23 -15
- data/lib/{postgresql_cursors_2.rb → active_record/postgresql_cursors/cursors_2.rb} +0 -4
- data/lib/active_record/postgresql_cursors/version.rb +7 -0
- data/lib/activerecord-postgresql-cursors.rb +12 -4
- data/test/{cursor_test.rb → cursor_tests.rb} +1 -1
- data/test/database.yml +17 -0
- data/test/test_helper.rb +42 -12
- metadata +48 -49
- data/VERSION +0 -1
- data/init.rb +0 -2
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 125737544b68c64f3db4d3a32e91f56e3ea4d201
|
4
|
+
data.tar.gz: dccba67b44a0d8ae5ea61e85478644a1ec40310e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c0e18fe5f6c5ade1fa0b300179a4663ebff1f606ba86b43a85875d85851c67a8409a14fc5592cb5fc625da2b97032350146710620afdfa0d2c84ccd3290b3724
|
7
|
+
data.tar.gz: 031328e69972374543752345efbb7c4c55bb8feb5f5aab4c9cd028fc809d4da6f180ff3844c991685562c2152ea58dfdf9f9c03cf700f227f274bcde2c5f189f
|
data/.gitignore
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
.*.swp
|
2
|
+
.*.swo
|
3
|
+
*.tmp
|
4
|
+
*.kpf
|
5
|
+
*.komodoproject
|
6
|
+
*~
|
7
|
+
.DS_Store
|
8
|
+
*tmp*
|
9
|
+
pkg/
|
10
|
+
doc/
|
11
|
+
coverage/
|
12
|
+
*.orig
|
13
|
+
*.patch
|
14
|
+
.vimrc_local
|
15
|
+
debug.log
|
16
|
+
*.gem
|
17
|
+
*.rbc
|
18
|
+
.bundle
|
19
|
+
.config
|
20
|
+
.yardoc
|
21
|
+
Gemfile.lock
|
22
|
+
Gemfile.local
|
23
|
+
Guardfile.local
|
24
|
+
test/local_database.yml
|
data/Gemfile
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gemspec
|
4
|
+
|
5
|
+
if RUBY_PLATFORM == "java"
|
6
|
+
gem "activerecord-jdbcpostgresql-adapter"
|
7
|
+
else
|
8
|
+
gem "pg"
|
9
|
+
end
|
10
|
+
|
11
|
+
gem "rdoc", "~> 3.12"
|
12
|
+
gem "rake", "~> 10.0"
|
13
|
+
gem "minitest"
|
14
|
+
gem "minitest-reporters"
|
15
|
+
gem "guard-minitest"
|
16
|
+
gem "simplecov"
|
17
|
+
|
18
|
+
if RbConfig::CONFIG['host_os'] =~ /^darwin/
|
19
|
+
gem "rb-fsevent"
|
20
|
+
gem "growl"
|
21
|
+
end
|
22
|
+
|
23
|
+
if File.exists?('Gemfile.local')
|
24
|
+
instance_eval File.read('Gemfile.local')
|
25
|
+
end
|
26
|
+
|
data/Guardfile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
|
2
|
+
guard 'minitest', :test_folders => 'test', :test_file_patterns => '*_tests.rb' do
|
3
|
+
watch(%r|^test/(.+)_tests\.rb|)
|
4
|
+
|
5
|
+
watch(%r|^lib/(.*)([^/]+)\.rb|) do |m|
|
6
|
+
"test/cursor_tests.rb"
|
7
|
+
end
|
8
|
+
|
9
|
+
watch(%r|^test/test_helper\.rb|) do
|
10
|
+
"test"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
if File.exists?('Guardfile.local')
|
15
|
+
instance_eval File.read('Guardfile.local')
|
16
|
+
end
|
17
|
+
|
data/MIT-LICENSE
CHANGED
data/Rakefile
CHANGED
@@ -5,35 +5,21 @@ require 'rubygems'
|
|
5
5
|
require 'rubygems/package_task'
|
6
6
|
require 'rake/testtask'
|
7
7
|
require 'rdoc/task'
|
8
|
+
require 'bundler/gem_tasks'
|
8
9
|
|
9
|
-
$:.push 'lib'
|
10
|
+
$:.push File.expand_path(File.dirname(__FILE__), 'lib')
|
10
11
|
|
11
|
-
version =
|
12
|
-
|
13
|
-
begin
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
gem.name = "activerecord-postgresql-cursors"
|
17
|
-
gem.summary = "Provides some support for PostgreSQL cursors in ActiveRecord."
|
18
|
-
gem.description = gem.summary
|
19
|
-
gem.email = "code@zoocasa.com"
|
20
|
-
gem.homepage = "http://github.com/zoocasa/activerecord-postgresql-cursors"
|
21
|
-
gem.authors = [ "J Smith" ]
|
22
|
-
end
|
23
|
-
Jeweler::GemcutterTasks.new
|
24
|
-
rescue LoadError
|
25
|
-
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
26
|
-
end
|
12
|
+
version = ActiveRecord::PostgreSQLCursors::VERSION
|
27
13
|
|
28
14
|
desc 'Test PostgreSQL extensions'
|
29
15
|
Rake::TestTask.new(:test) do |t|
|
30
|
-
t.
|
31
|
-
t.verbose =
|
16
|
+
t.test_files = FileList['test/**/*_tests.rb']
|
17
|
+
t.verbose = !!ENV['VERBOSE_TESTS']
|
18
|
+
t.warning = !!ENV['WARNINGS']
|
32
19
|
end
|
33
20
|
|
34
21
|
desc 'Build docs'
|
35
22
|
Rake::RDocTask.new do |t|
|
36
|
-
require 'rdoc'
|
37
23
|
t.title = "ActiveRecord PostgreSQL Cursors #{version}"
|
38
24
|
t.main = 'README.rdoc'
|
39
25
|
t.rdoc_dir = 'doc'
|
@@ -1,45 +1,25 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
1
|
# -*- encoding: utf-8 -*-
|
5
2
|
|
3
|
+
require File.expand_path('../lib/active_record/postgresql_cursors/version', __FILE__)
|
4
|
+
|
6
5
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version =
|
6
|
+
s.name = "activerecord-postgresql-cursors"
|
7
|
+
s.version = ActiveRecord::PostgreSQLCursors::VERSION
|
9
8
|
|
10
9
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.
|
13
|
-
s.
|
14
|
-
s.email =
|
10
|
+
s.authors = ["J Smith"]
|
11
|
+
s.description = "Provides some support for PostgreSQL cursors in ActiveRecord."
|
12
|
+
s.summary = s.description
|
13
|
+
s.email = "code@zoocasa.com"
|
15
14
|
s.extra_rdoc_files = [
|
16
15
|
"README.rdoc"
|
17
16
|
]
|
18
|
-
s.files =
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
"activerecord-postgresql-cursors.gemspec",
|
24
|
-
"init.rb",
|
25
|
-
"lib/activerecord-postgresql-cursors.rb",
|
26
|
-
"lib/postgresql_cursors_2.rb",
|
27
|
-
"lib/postgresql_cursors_3.rb",
|
28
|
-
"test/cursor_test.rb",
|
29
|
-
"test/test_helper.rb"
|
30
|
-
]
|
31
|
-
s.homepage = %q{http://github.com/zoocasa/activerecord-postgresql-cursors}
|
32
|
-
s.require_paths = [%q{lib}]
|
33
|
-
s.rubygems_version = %q{1.8.8}
|
34
|
-
s.summary = %q{Provides some support for PostgreSQL cursors in ActiveRecord.}
|
35
|
-
|
36
|
-
if s.respond_to? :specification_version then
|
37
|
-
s.specification_version = 3
|
17
|
+
s.files = `git ls-files`.split($\)
|
18
|
+
s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
19
|
+
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
20
|
+
s.homepage = "http://github.com/zoocasa/activerecord-postgresql-cursors"
|
21
|
+
s.require_paths = ["lib"]
|
38
22
|
|
39
|
-
|
40
|
-
else
|
41
|
-
end
|
42
|
-
else
|
43
|
-
end
|
23
|
+
s.add_dependency("activerecord", [">= 2.3"])
|
44
24
|
end
|
45
25
|
|
@@ -1,14 +1,4 @@
|
|
1
1
|
|
2
|
-
if ActiveRecord::VERSION::STRING >= '3.1'
|
3
|
-
class ActiveRecord::Associations::JoinDependency
|
4
|
-
include ActiveRecord::PostgreSQLCursors::JoinDependency
|
5
|
-
end
|
6
|
-
else
|
7
|
-
class ActiveRecord::Associations::ClassMethods::JoinDependency
|
8
|
-
include ActiveRecord::PostgreSQLCursors::JoinDependency
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
2
|
module ActiveRecord
|
13
3
|
module CursorExtensions
|
14
4
|
extend ActiveSupport::Concern
|
@@ -51,7 +41,12 @@ module ActiveRecord
|
|
51
41
|
raise CursorsNotSupported, "#{connection.class} doesn't support cursors"
|
52
42
|
end
|
53
43
|
|
54
|
-
relation =
|
44
|
+
relation = if ActiveRecord::VERSION::MAJOR >= 4
|
45
|
+
apply_finder_options(options, silence_deprecation = true)
|
46
|
+
else
|
47
|
+
apply_finder_options(options)
|
48
|
+
end
|
49
|
+
|
55
50
|
including = (relation.eager_load_values + relation.includes_values).uniq
|
56
51
|
|
57
52
|
if including.present?
|
@@ -71,11 +66,20 @@ module ActiveRecord
|
|
71
66
|
end
|
72
67
|
|
73
68
|
class PostgreSQLCursor
|
74
|
-
def
|
69
|
+
def initialize_with_rails(model, cursor_name, relation, join_dependency = nil)
|
75
70
|
@relation = relation
|
76
|
-
|
71
|
+
|
72
|
+
query = if ActiveRecord::VERSION::MAJOR >= 4
|
73
|
+
model.connection.unprepared_statement do
|
74
|
+
relation.to_sql
|
75
|
+
end
|
76
|
+
else
|
77
|
+
relation.to_sql
|
78
|
+
end
|
79
|
+
|
80
|
+
initialize_without_rails(model, cursor_name, query, join_dependency)
|
77
81
|
end
|
78
|
-
alias_method_chain :initialize, :
|
82
|
+
alias_method_chain :initialize, :rails
|
79
83
|
end
|
80
84
|
end
|
81
85
|
|
@@ -85,6 +89,10 @@ end
|
|
85
89
|
|
86
90
|
class ActiveRecord::Base
|
87
91
|
class << self
|
88
|
-
|
92
|
+
if ActiveRecord::VERSION::MAJOR >= 4
|
93
|
+
delegate :cursor, :to => :all
|
94
|
+
else
|
95
|
+
delegate :cursor, :to => :scoped
|
96
|
+
end
|
89
97
|
end
|
90
98
|
end
|
@@ -28,8 +28,6 @@ module ActiveRecord
|
|
28
28
|
class PostgreSQLCursor
|
29
29
|
include Enumerable
|
30
30
|
|
31
|
-
attr_accessor :cursor_name
|
32
|
-
|
33
31
|
def initialize(model, cursor_name, query, join_dependency = nil)
|
34
32
|
@model = model
|
35
33
|
@cursor_name = if cursor_name
|
@@ -100,8 +98,18 @@ module ActiveRecord
|
|
100
98
|
end
|
101
99
|
end
|
102
100
|
|
101
|
+
if ActiveRecord::VERSION::STRING >= '3.1'
|
102
|
+
class ActiveRecord::Associations::JoinDependency
|
103
|
+
include ActiveRecord::PostgreSQLCursors::JoinDependency
|
104
|
+
end
|
105
|
+
else
|
106
|
+
class ActiveRecord::Associations::ClassMethods::JoinDependency
|
107
|
+
include ActiveRecord::PostgreSQLCursors::JoinDependency
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
103
111
|
if ActiveRecord::VERSION::MAJOR >= 3
|
104
|
-
require File.join(File.dirname(__FILE__),
|
112
|
+
require File.join(File.dirname(__FILE__), *%w{ active_record postgresql_cursors cursors })
|
105
113
|
else
|
106
|
-
require File.join(File.dirname(__FILE__),
|
114
|
+
require File.join(File.dirname(__FILE__), *%w{ active_record postgresql_cursors cursors_2 })
|
107
115
|
end
|
data/test/database.yml
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
# To modify the test database parameters, create a new file called
|
3
|
+
# local_database.yml and go nuts with settings. The "jdbc" settings
|
4
|
+
# are merged into the "arunit" settings as JDBC works over a TCP
|
5
|
+
# socket and those sorts of connections generally require some user
|
6
|
+
# credentials.
|
7
|
+
|
8
|
+
arunit:
|
9
|
+
adapter: "postgresql"
|
10
|
+
database: "postgresql_cursors_unit_tests"
|
11
|
+
min_messages: "warning"
|
12
|
+
schema_search_path: "public"
|
13
|
+
|
14
|
+
jdbc:
|
15
|
+
host: "localhost"
|
16
|
+
adapter: "jdbcpostgresql"
|
17
|
+
|
data/test/test_helper.rb
CHANGED
@@ -1,31 +1,56 @@
|
|
1
1
|
|
2
|
-
|
2
|
+
if RUBY_VERSION >= '1.9'
|
3
|
+
require 'simplecov'
|
3
4
|
|
4
|
-
|
5
|
-
|
5
|
+
SimpleCov.command_name('Unit Tests')
|
6
|
+
SimpleCov.start do
|
7
|
+
add_filter '/test/'
|
8
|
+
end
|
9
|
+
end
|
6
10
|
|
11
|
+
require 'rubygems'
|
7
12
|
require 'active_support'
|
8
13
|
require 'active_support/core_ext/module/aliasing'
|
9
14
|
require 'active_record'
|
10
|
-
require 'test/unit'
|
11
15
|
require 'logger'
|
16
|
+
require 'minitest/autorun'
|
17
|
+
|
18
|
+
if RUBY_VERSION >= '1.9'
|
19
|
+
require 'minitest/reporters'
|
20
|
+
end
|
21
|
+
|
12
22
|
require File.join(File.dirname(__FILE__), *%w{ .. lib activerecord-postgresql-cursors })
|
13
23
|
|
14
|
-
ActiveRecord::Base.logger = Logger.new("debug.log")
|
24
|
+
ActiveRecord::Base.logger = Logger.new("debug.log") if ENV['ENABLE_LOGGER']
|
15
25
|
ActiveRecord::Base.configurations = {
|
16
|
-
'arunit' => {
|
17
|
-
:adapter => 'postgresql',
|
18
|
-
:database => 'postgresql_cursors_unit_tests',
|
19
|
-
:min_messages => 'warning',
|
20
|
-
:schema_search_path => 'public'
|
21
|
-
}
|
26
|
+
'arunit' => {}
|
22
27
|
}
|
23
28
|
|
29
|
+
%w{
|
30
|
+
database.yml
|
31
|
+
local_database.yml
|
32
|
+
}.each do |file|
|
33
|
+
file = File.join('test', file)
|
34
|
+
|
35
|
+
next unless File.exists?(file)
|
36
|
+
|
37
|
+
configuration = YAML.load(File.read(file))
|
38
|
+
|
39
|
+
if configuration['arunit']
|
40
|
+
ActiveRecord::Base.configurations['arunit'].merge!(configuration['arunit'])
|
41
|
+
end
|
42
|
+
|
43
|
+
if defined?(JRUBY_VERSION) && configuration['jdbc']
|
44
|
+
ActiveRecord::Base.configurations['arunit'].merge!(configuration['jdbc'])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
24
48
|
ActiveRecord::Base.establish_connection 'arunit'
|
25
49
|
ARBC = ActiveRecord::Base.connection
|
26
50
|
|
51
|
+
puts "Ruby version #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} - #{RbConfig::CONFIG['RUBY_INSTALL_NAME']}"
|
27
52
|
puts "Testing against ActiveRecord #{Gem.loaded_specs['activerecord'].version.to_s}"
|
28
|
-
if postgresql_version = ARBC.
|
53
|
+
if postgresql_version = ARBC.select_rows('SELECT version()').flatten.to_s
|
29
54
|
puts "PostgreSQL info from version(): #{postgresql_version}"
|
30
55
|
end
|
31
56
|
|
@@ -69,3 +94,8 @@ module PostgreSQLCursorTestHelper
|
|
69
94
|
end
|
70
95
|
end
|
71
96
|
end
|
97
|
+
|
98
|
+
if RUBY_VERSION >= '1.9'
|
99
|
+
MiniTest::Reporters.use!(MiniTest::Reporters::SpecReporter.new)
|
100
|
+
end
|
101
|
+
|
metadata
CHANGED
@@ -1,75 +1,74 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-postgresql-cursors
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 2
|
10
|
-
version: 0.0.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- J Smith
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
11
|
+
date: 2013-07-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activerecord
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.3'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.3'
|
21
27
|
description: Provides some support for PostgreSQL cursors in ActiveRecord.
|
22
28
|
email: code@zoocasa.com
|
23
29
|
executables: []
|
24
|
-
|
25
30
|
extensions: []
|
26
|
-
|
27
|
-
extra_rdoc_files:
|
31
|
+
extra_rdoc_files:
|
28
32
|
- README.rdoc
|
29
|
-
files:
|
33
|
+
files:
|
34
|
+
- .gitignore
|
35
|
+
- Gemfile
|
36
|
+
- Guardfile
|
30
37
|
- MIT-LICENSE
|
31
38
|
- README.rdoc
|
32
39
|
- Rakefile
|
33
|
-
- VERSION
|
34
40
|
- activerecord-postgresql-cursors.gemspec
|
35
|
-
-
|
41
|
+
- lib/active_record/postgresql_cursors/cursors.rb
|
42
|
+
- lib/active_record/postgresql_cursors/cursors_2.rb
|
43
|
+
- lib/active_record/postgresql_cursors/version.rb
|
36
44
|
- lib/activerecord-postgresql-cursors.rb
|
37
|
-
-
|
38
|
-
-
|
39
|
-
- test/cursor_test.rb
|
45
|
+
- test/cursor_tests.rb
|
46
|
+
- test/database.yml
|
40
47
|
- test/test_helper.rb
|
41
48
|
homepage: http://github.com/zoocasa/activerecord-postgresql-cursors
|
42
49
|
licenses: []
|
43
|
-
|
50
|
+
metadata: {}
|
44
51
|
post_install_message:
|
45
52
|
rdoc_options: []
|
46
|
-
|
47
|
-
require_paths:
|
53
|
+
require_paths:
|
48
54
|
- lib
|
49
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
none: false
|
60
|
-
requirements:
|
61
|
-
- - ">="
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
hash: 3
|
64
|
-
segments:
|
65
|
-
- 0
|
66
|
-
version: "0"
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
requirements:
|
62
|
+
- - '>='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: '0'
|
67
65
|
requirements: []
|
68
|
-
|
69
66
|
rubyforge_project:
|
70
|
-
rubygems_version:
|
67
|
+
rubygems_version: 2.0.3
|
71
68
|
signing_key:
|
72
|
-
specification_version:
|
69
|
+
specification_version: 4
|
73
70
|
summary: Provides some support for PostgreSQL cursors in ActiveRecord.
|
74
|
-
test_files:
|
75
|
-
|
71
|
+
test_files:
|
72
|
+
- test/cursor_tests.rb
|
73
|
+
- test/database.yml
|
74
|
+
- test/test_helper.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.0.2
|
data/init.rb
DELETED