adapter_extensions 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -1
- data/README +4 -0
- data/Rakefile +22 -4
- data/lib/adapter_extensions.rb +2 -13
- data/lib/adapter_extensions/connection_adapters/mysql_adapter.rb +12 -15
- data/lib/adapter_extensions/connection_adapters/postgresql_adapter.rb +3 -1
- data/lib/adapter_extensions/version.rb +1 -1
- metadata +67 -56
data/CHANGELOG
CHANGED
@@ -20,4 +20,7 @@
|
|
20
20
|
|
21
21
|
0.4 - September 17, 2007
|
22
22
|
* Added copy_table method that can copy the structure and data from one table to another. Currently implemented in MySQL (tested), PostgreSQL (tested) and SQL Server adapters (untested).
|
23
|
-
* Added support for SELECT..INTO for PostgreSQL.
|
23
|
+
* Added support for SELECT..INTO for PostgreSQL.
|
24
|
+
|
25
|
+
0.5 -
|
26
|
+
* Updated dependencies for gem to current versions of ActiveRecord, ActiveSupport and Rake. May not be compatible with Rails versions less than 2.x.
|
data/README
CHANGED
@@ -1,3 +1,7 @@
|
|
1
1
|
This library provides extensions to Rails' ActiveRecord adapters.
|
2
2
|
|
3
|
+
As of version 0.5, adapter_extensions has dependencies on ActiveSupport and ActiveRecord 2.1.x or higher.
|
4
|
+
|
5
|
+
To use the MySQL adapter extensions with Rails 2.x, you must patch the mysql_adapter with the mysql_adapter_opt_local_infile.patch.
|
6
|
+
|
3
7
|
To execute the unit tests you must first construct a adapter_extensions_unittest database.
|
data/Rakefile
CHANGED
@@ -4,6 +4,7 @@ require 'rake/rdoctask'
|
|
4
4
|
require 'rake/packagetask'
|
5
5
|
require 'rake/gempackagetask'
|
6
6
|
require 'rake/contrib/rubyforgepublisher'
|
7
|
+
require 'date'
|
7
8
|
|
8
9
|
require File.join(File.dirname(__FILE__), 'lib/adapter_extensions', 'version')
|
9
10
|
|
@@ -66,9 +67,9 @@ spec = Gem::Specification.new do |s|
|
|
66
67
|
Provides various extensions to the Rails ActiveRecord adapters.
|
67
68
|
EOF
|
68
69
|
|
69
|
-
s.add_dependency('rake', '>= 0.
|
70
|
-
s.add_dependency('activesupport', '>= 1.
|
71
|
-
s.add_dependency('activerecord', '>= 1.
|
70
|
+
s.add_dependency('rake', '>= 0.8.3')
|
71
|
+
s.add_dependency('activesupport', '>= 2.1.0')
|
72
|
+
s.add_dependency('activerecord', '>= 2.1.0')
|
72
73
|
s.add_dependency('fastercsv', '>= 1.0.0')
|
73
74
|
|
74
75
|
s.rdoc_options << '--exclude' << '.'
|
@@ -89,6 +90,15 @@ Rake::GemPackageTask.new(spec) do |pkg|
|
|
89
90
|
pkg.need_zip = true
|
90
91
|
end
|
91
92
|
|
93
|
+
namespace :github do
|
94
|
+
desc "Update Github Gemspec"
|
95
|
+
task :update_gemspec do
|
96
|
+
File.open(File.join(File.dirname(__FILE__), "#{spec.name}.gemspec"), "w"){|f| f << spec.to_ruby}
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
|
92
102
|
desc "Generate code statistics"
|
93
103
|
task :lines do
|
94
104
|
lines, codelines, total_lines, total_codelines = 0, 0, 0, 0
|
@@ -130,11 +140,19 @@ task :pdoc => [:rdoc] do
|
|
130
140
|
Rake::SshDirPublisher.new("aeden@rubyforge.org", "/var/www/gforge-projects/activewarehouse/adapter_extensions/rdoc", "rdoc").upload
|
131
141
|
end
|
132
142
|
|
143
|
+
desc "Install the gem from a local generated package"
|
144
|
+
task :install => [:package] do
|
145
|
+
windows = RUBY_PLATFORM =~ /mswin/
|
146
|
+
sudo = windows ? '' : 'sudo'
|
147
|
+
gem = windows ? 'gem.bat' : 'gem'
|
148
|
+
`#{sudo} #{gem} install pkg/#{PKG_NAME}-#{PKG_VERSION}`
|
149
|
+
end
|
150
|
+
|
133
151
|
desc "Reinstall the gem from a local package copy"
|
134
152
|
task :reinstall => [:package] do
|
135
153
|
windows = RUBY_PLATFORM =~ /mswin/
|
136
154
|
sudo = windows ? '' : 'sudo'
|
137
155
|
gem = windows ? 'gem.bat' : 'gem'
|
138
|
-
`#{sudo} #{gem} uninstall
|
156
|
+
`#{sudo} #{gem} uninstall #{PKG_NAME} -x`
|
139
157
|
`#{sudo} #{gem} install pkg/#{PKG_NAME}-#{PKG_VERSION}`
|
140
158
|
end
|
data/lib/adapter_extensions.rb
CHANGED
@@ -5,19 +5,8 @@
|
|
5
5
|
puts "Using AdapterExtensions"
|
6
6
|
|
7
7
|
require 'rubygems'
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
unless defined?(ActiveSupport)
|
13
|
-
gem 'activesupport'
|
14
|
-
require 'active_support'
|
15
|
-
end
|
16
|
-
|
17
|
-
unless defined?(ActiveRecord)
|
18
|
-
gem 'activerecord'
|
19
|
-
require 'active_record'
|
20
|
-
end
|
8
|
+
require 'active_support'
|
9
|
+
require 'active_record'
|
21
10
|
|
22
11
|
$:.unshift(File.dirname(__FILE__))
|
23
12
|
Dir[File.dirname(__FILE__) + "/adapter_extensions/**/*.rb"].each { |file| require(file) }
|
@@ -35,6 +35,18 @@ module ActiveRecord #:nodoc:
|
|
35
35
|
# * <tt>:enclosed_by</tt> -- The field enclosure
|
36
36
|
def do_bulk_load(file, table_name, options={})
|
37
37
|
return if File.size(file) == 0
|
38
|
+
|
39
|
+
# an unfortunate hack - setting the bulk load option after the connection has been
|
40
|
+
# established does not seem to have any effect, and since the connection is made when
|
41
|
+
# active-record is loaded, there's no chance for us to sneak it in earlier. So we
|
42
|
+
# disconnect, set the option, then reconnect - fortunately, this only needs to happen once.
|
43
|
+
unless @bulk_load_enabled
|
44
|
+
disconnect!
|
45
|
+
@connection.options(Mysql::OPT_LOCAL_INFILE, true)
|
46
|
+
connect
|
47
|
+
@bulk_load_enabled = true
|
48
|
+
end
|
49
|
+
|
38
50
|
q = "LOAD DATA LOCAL INFILE '#{file}' INTO TABLE #{table_name}"
|
39
51
|
if options[:fields]
|
40
52
|
q << " FIELDS"
|
@@ -46,21 +58,6 @@ module ActiveRecord #:nodoc:
|
|
46
58
|
execute(q)
|
47
59
|
end
|
48
60
|
|
49
|
-
private
|
50
|
-
def connect
|
51
|
-
encoding = @config[:encoding]
|
52
|
-
if encoding
|
53
|
-
@connection.options(Mysql::SET_CHARSET_NAME, encoding) rescue nil
|
54
|
-
end
|
55
|
-
@connection.options(Mysql::OPT_LOCAL_INFILE, true)
|
56
|
-
@connection.ssl_set(@config[:sslkey], @config[:sslcert], @config[:sslca], @config[:sslcapath], @config[:sslcipher]) if @config[:sslkey]
|
57
|
-
@connection.real_connect(*@connection_options)
|
58
|
-
execute("SET NAMES '#{encoding}'") if encoding
|
59
|
-
|
60
|
-
# By default, MySQL 'where id is null' selects the last inserted id.
|
61
|
-
# Turn this off. http://dev.rubyonrails.org/ticket/6778
|
62
|
-
execute("SET SQL_AUTO_IS_NULL=0")
|
63
|
-
end
|
64
61
|
end
|
65
62
|
end
|
66
63
|
end
|
@@ -28,6 +28,7 @@ module ActiveRecord #:nodoc:
|
|
28
28
|
# * <tt>:columns</tt> -- Array of column names defining the source file column order
|
29
29
|
# * <tt>:fields</tt> -- Hash of options for fields:
|
30
30
|
# * <tt>:delimited_by</tt> -- The field delimiter
|
31
|
+
# * <tt>:null_string</tt> -- The string that should be interpreted as NULL (in addition to \N)
|
31
32
|
# * <tt>:enclosed_by</tt> -- The field enclosure
|
32
33
|
def do_bulk_load(file, table_name, options={})
|
33
34
|
q = "COPY #{table_name} "
|
@@ -36,7 +37,8 @@ module ActiveRecord #:nodoc:
|
|
36
37
|
if options[:fields]
|
37
38
|
q << "WITH "
|
38
39
|
q << "DELIMITER '#{options[:fields][:delimited_by]}' " if options[:fields][:delimited_by]
|
39
|
-
if options[:fields][:
|
40
|
+
q << "NULL '#{options[:fields][:null_string]}'" if options[:fields][:null_string]
|
41
|
+
if options[:fields][:enclosed_by] || options[:ignore] && options[:ignore] > 0
|
40
42
|
q << "CSV "
|
41
43
|
q << "HEADER " if options[:ignore] && options[:ignore] > 0
|
42
44
|
q << "QUOTE '#{options[:fields][:enclosed_by]}' " if options[:fields][:enclosed_by]
|
metadata
CHANGED
@@ -1,93 +1,104 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.2
|
3
|
-
specification_version: 1
|
4
2
|
name: adapter_extensions
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2007-09-17 00:00:00 +02:00
|
8
|
-
summary: Extensions to Rails ActiveRecord adapters.
|
9
|
-
require_paths:
|
10
|
-
- lib
|
11
|
-
email: anthonyeden@gmail.com
|
12
|
-
homepage: http://activewarehouse.rubyforge.org/adapter_extensions
|
13
|
-
rubyforge_project: activewarehouse
|
14
|
-
description: Provides various extensions to the Rails ActiveRecord adapters.
|
15
|
-
autorequire:
|
16
|
-
default_executable:
|
17
|
-
bindir: bin
|
18
|
-
has_rdoc: false
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
4
|
+
version: 0.5.0
|
25
5
|
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
6
|
authors:
|
30
7
|
- Anthony Eden
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
- LICENSE
|
35
|
-
- Rakefile
|
36
|
-
- lib/adapter_extensions
|
37
|
-
- lib/adapter_extensions/connection_adapters
|
38
|
-
- lib/adapter_extensions/connection_adapters/abstract_adapter.rb
|
39
|
-
- lib/adapter_extensions/connection_adapters/mysql_adapter.rb
|
40
|
-
- lib/adapter_extensions/connection_adapters/postgresql_adapter.rb
|
41
|
-
- lib/adapter_extensions/connection_adapters/sqlserver_adapter.rb
|
42
|
-
- lib/adapter_extensions/version.rb
|
43
|
-
- lib/adapter_extensions.rb
|
44
|
-
test_files: []
|
45
|
-
|
46
|
-
rdoc_options:
|
47
|
-
- --exclude
|
48
|
-
- .
|
49
|
-
extra_rdoc_files: []
|
50
|
-
|
51
|
-
executables: []
|
52
|
-
|
53
|
-
extensions: []
|
54
|
-
|
55
|
-
requirements: []
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
56
11
|
|
12
|
+
date: 2009-01-14 00:00:00 -05:00
|
13
|
+
default_executable:
|
57
14
|
dependencies:
|
58
15
|
- !ruby/object:Gem::Dependency
|
59
16
|
name: rake
|
17
|
+
type: :runtime
|
60
18
|
version_requirement:
|
61
|
-
version_requirements: !ruby/object:Gem::
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
62
20
|
requirements:
|
63
21
|
- - ">="
|
64
22
|
- !ruby/object:Gem::Version
|
65
|
-
version: 0.
|
23
|
+
version: 0.8.3
|
66
24
|
version:
|
67
25
|
- !ruby/object:Gem::Dependency
|
68
26
|
name: activesupport
|
27
|
+
type: :runtime
|
69
28
|
version_requirement:
|
70
|
-
version_requirements: !ruby/object:Gem::
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
30
|
requirements:
|
72
31
|
- - ">="
|
73
32
|
- !ruby/object:Gem::Version
|
74
|
-
version: 1.
|
33
|
+
version: 2.1.0
|
75
34
|
version:
|
76
35
|
- !ruby/object:Gem::Dependency
|
77
36
|
name: activerecord
|
37
|
+
type: :runtime
|
78
38
|
version_requirement:
|
79
|
-
version_requirements: !ruby/object:Gem::
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
40
|
requirements:
|
81
41
|
- - ">="
|
82
42
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.
|
43
|
+
version: 2.1.0
|
84
44
|
version:
|
85
45
|
- !ruby/object:Gem::Dependency
|
86
46
|
name: fastercsv
|
47
|
+
type: :runtime
|
87
48
|
version_requirement:
|
88
|
-
version_requirements: !ruby/object:Gem::
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
50
|
requirements:
|
90
51
|
- - ">="
|
91
52
|
- !ruby/object:Gem::Version
|
92
53
|
version: 1.0.0
|
93
54
|
version:
|
55
|
+
description: Provides various extensions to the Rails ActiveRecord adapters.
|
56
|
+
email: anthonyeden@gmail.com
|
57
|
+
executables: []
|
58
|
+
|
59
|
+
extensions: []
|
60
|
+
|
61
|
+
extra_rdoc_files: []
|
62
|
+
|
63
|
+
files:
|
64
|
+
- CHANGELOG
|
65
|
+
- README
|
66
|
+
- LICENSE
|
67
|
+
- Rakefile
|
68
|
+
- lib/adapter_extensions
|
69
|
+
- lib/adapter_extensions/connection_adapters
|
70
|
+
- lib/adapter_extensions/connection_adapters/abstract_adapter.rb
|
71
|
+
- lib/adapter_extensions/connection_adapters/mysql_adapter.rb
|
72
|
+
- lib/adapter_extensions/connection_adapters/postgresql_adapter.rb
|
73
|
+
- lib/adapter_extensions/connection_adapters/sqlserver_adapter.rb
|
74
|
+
- lib/adapter_extensions/version.rb
|
75
|
+
- lib/adapter_extensions.rb
|
76
|
+
has_rdoc: false
|
77
|
+
homepage: http://activewarehouse.rubyforge.org/adapter_extensions
|
78
|
+
post_install_message:
|
79
|
+
rdoc_options:
|
80
|
+
- --exclude
|
81
|
+
- .
|
82
|
+
require_paths:
|
83
|
+
- lib
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: "0"
|
89
|
+
version:
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: "0"
|
95
|
+
version:
|
96
|
+
requirements: []
|
97
|
+
|
98
|
+
rubyforge_project: activewarehouse
|
99
|
+
rubygems_version: 1.3.1
|
100
|
+
signing_key:
|
101
|
+
specification_version: 2
|
102
|
+
summary: Extensions to Rails ActiveRecord adapters.
|
103
|
+
test_files: []
|
104
|
+
|