activerecord_execute_raw 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.
- data/README.rdoc +5 -0
- data/VERSION +1 -1
- data/lib/activerecord_execute_raw.rb +2 -24
- data/lib/activerecord_execute_raw/execute_raw.rb +28 -0
- data/spec/spec_helper.rb +1 -1
- metadata +27 -13
data/README.rdoc
CHANGED
@@ -7,6 +7,11 @@ this is a problem if you are inserting millions of rows
|
|
7
7
|
activerecord_execute_raw creates a connection.execute_raw() method which bypasses the
|
8
8
|
id fetch
|
9
9
|
|
10
|
+
== Install
|
11
|
+
|
12
|
+
gem source --add http://gemcutter.org
|
13
|
+
gem install activerecord_execute_raw
|
14
|
+
|
10
15
|
== Note on Patches/Pull Requests
|
11
16
|
|
12
17
|
* Fork the project.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
@@ -1,24 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# is a problem when millions of rows are inserted
|
4
|
-
|
5
|
-
# define a base method so we don't need to care about whether
|
6
|
-
# we are actually using jdbc or not
|
7
|
-
class ActiveRecord::ConnectionAdapters::AbstractAdapter
|
8
|
-
def execute_raw(sql, name = nil)
|
9
|
-
execute(sql, name)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
# then override the base method on the JdbcAdapter
|
14
|
-
class ActiveRecord::ConnectionAdapters::JdbcAdapter
|
15
|
-
def execute_raw(sql, name = nil)
|
16
|
-
log(sql, name) do
|
17
|
-
if ActiveRecord::ConnectionAdapters::JdbcConnection::select?(sql)
|
18
|
-
@connection.execute_query(sql)
|
19
|
-
else
|
20
|
-
@connection.execute_update(sql)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
1
|
+
require 'active_record'
|
2
|
+
require 'activerecord_execute_raw/execute_raw'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# ActiveRecord::ConnectionAdapters::JdbcAdapter always fetches inserted ids
|
2
|
+
# after executing an insert statement through connection.execute() . this
|
3
|
+
# is a problem when millions of rows are inserted
|
4
|
+
|
5
|
+
# define a base method so we don't need to care about whether
|
6
|
+
# we are actually using jdbc or not
|
7
|
+
module ActiveRecord
|
8
|
+
module ConnectionAdapters
|
9
|
+
class AbstractAdapter
|
10
|
+
def execute_raw(sql, name = nil)
|
11
|
+
execute(sql, name)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
# then override the base method on the JdbcAdapter
|
16
|
+
class JdbcAdapter < AbstractAdapter
|
17
|
+
def execute_raw(sql, name = nil)
|
18
|
+
log(sql, name) do
|
19
|
+
if ActiveRecord::ConnectionAdapters::JdbcConnection::select?(sql)
|
20
|
+
@connection.execute_query(sql)
|
21
|
+
else
|
22
|
+
@connection.execute_update(sql)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord_execute_raw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- mccraig mccraig of the clan mccraig
|
@@ -9,29 +14,35 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date: 2010-
|
17
|
+
date: 2010-03-11 00:00:00 +00:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: rspec
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 2
|
30
|
+
- 9
|
23
31
|
version: 1.2.9
|
24
|
-
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
25
34
|
- !ruby/object:Gem::Dependency
|
26
35
|
name: yard
|
27
|
-
|
28
|
-
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
38
|
requirements:
|
31
39
|
- - ">="
|
32
40
|
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
33
43
|
version: "0"
|
34
|
-
|
44
|
+
type: :development
|
45
|
+
version_requirements: *id002
|
35
46
|
description: |-
|
36
47
|
ActiveRecord-JDBC fetches ids of inserted records when you call connection.execute(). this
|
37
48
|
gem adds a connection.execute_raw() method which does not fetch inserted ids
|
@@ -51,6 +62,7 @@ files:
|
|
51
62
|
- Rakefile
|
52
63
|
- VERSION
|
53
64
|
- lib/activerecord_execute_raw.rb
|
65
|
+
- lib/activerecord_execute_raw/execute_raw.rb
|
54
66
|
- spec/activerecord_execute_raw_spec.rb
|
55
67
|
- spec/spec.opts
|
56
68
|
- spec/spec_helper.rb
|
@@ -67,18 +79,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
79
|
requirements:
|
68
80
|
- - ">="
|
69
81
|
- !ruby/object:Gem::Version
|
82
|
+
segments:
|
83
|
+
- 0
|
70
84
|
version: "0"
|
71
|
-
version:
|
72
85
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
86
|
requirements:
|
74
87
|
- - ">="
|
75
88
|
- !ruby/object:Gem::Version
|
89
|
+
segments:
|
90
|
+
- 0
|
76
91
|
version: "0"
|
77
|
-
version:
|
78
92
|
requirements: []
|
79
93
|
|
80
94
|
rubyforge_project:
|
81
|
-
rubygems_version: 1.3.
|
95
|
+
rubygems_version: 1.3.6
|
82
96
|
signing_key:
|
83
97
|
specification_version: 3
|
84
98
|
summary: execute raw sql on db from ActiveRecord [without fetching inserted ids as done by ActiveRecord-JDBC]
|