activerecord_execute_raw 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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]
|