AdapterExtensions add extra abilities to Rails ActiveRecord adapters, including:
* bulk load
* truncate table
* copy table
* add select into table
### Compatibility matrix
See Travis for up-to-date info: [![Build Status](https://secure.travis-ci.org/activewarehouse/adapter_extensions.png?branch=master)](http://travis-ci.org/activewarehouse/adapter_extensions)
|
v1.0.0.rc1 |
v0.9.5 |
ActiveRecord adapters |
|
|
mysql |
OK |
OK |
mysql2 |
OK |
Unsupported |
postgresql |
OK |
OK |
sqlserver |
Work in progress |
Broken |
ActiveRecord/ActiveSupport versions |
>= 3 |
< 3 |
Ruby versions |
|
|
MRI 1.9.3 |
OK |
Untested |
MRI 1.8.7 |
OK |
Should be OK |
### Important notes on MySQL support
#### Security warning
Be sure to first read and understand the [security implications](http://dev.mysql.com/doc/refman/5.0/en/load-data-local.html) of `LOAD DATA LOCAL INFILE`. In particular, having this enabled on a web app is probably not a good idea.
#### v0.9.5
v0.9.5 will always use `LOAD DATA LOCAL INFILE` for bulk load - this is not configurable.
#### v1.0.0.rc1
This version should by default use `LOAD DATA INFILE` for safer defaults.
You can override this by passing `:local_infile => true` though.
#### Troubleshooting LOCAL INFILE
If you enable `:local_infile => true` and meet the following error, then you'll have to work it around.
```
The used command is not allowed with this MySQL version: LOAD DATA LOCAL INFILE
```
For mysql2 with AR >= 3.1:
- use [this fork](https://github.com/activewarehouse/mysql2) until [this pull-request](https://github.com/brianmario/mysql2/pull/242) is merged
- add `local_infile: true` to your database.yml
For mysql2 with AR < 3.1:
- no current easy solution afaik
For mysql:
- try this [untested patch](https://github.com/activewarehouse/adapter_extensions/issues/7)
### Notes on SQLServer support
v0.9.5 had a broken support for SQLServer.
v1.0.0.rc1 has a work-in-progress bulk import using `freebcp`. More tweaking needed.
### Running the tests
You may have to tweak the Rakefile and database.yml a bit, but roughly:
```
rake ci:create_db
rake "ci:run_one[mysql2,test/config/gemfiles/Gemfile.rails-3.2.x]"
```
You can also run a matrix of tests using:
```
rake ci:run_matrix
```
### License
MIT
### Contributors
* Thibaut Barrère (current maintainer)
* original code by Anthony Eden and probably others (let me know if you read this!)
* thanks to [Zach Dennis](https://github.com/zdennis/activerecord-import) for his work where I borrowed ideas for the rails 3 rewrite