datamapper 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/example.rb +5 -5
- data/lib/data_mapper/adapters/abstract_adapter.rb +2 -2
- data/lib/data_mapper/adapters/data_object_adapter.rb +141 -147
- data/lib/data_mapper/adapters/mysql_adapter.rb +14 -1
- data/lib/data_mapper/adapters/postgresql_adapter.rb +123 -18
- data/lib/data_mapper/adapters/sql/coersion.rb +21 -9
- data/lib/data_mapper/adapters/sql/commands/load_command.rb +36 -19
- data/lib/data_mapper/adapters/sql/mappings/column.rb +111 -17
- data/lib/data_mapper/adapters/sql/mappings/schema.rb +27 -0
- data/lib/data_mapper/adapters/sql/mappings/table.rb +256 -29
- data/lib/data_mapper/adapters/sqlite3_adapter.rb +93 -8
- data/lib/data_mapper/associations/belongs_to_association.rb +53 -54
- data/lib/data_mapper/associations/has_and_belongs_to_many_association.rb +157 -25
- data/lib/data_mapper/associations/has_many_association.rb +45 -15
- data/lib/data_mapper/associations/has_n_association.rb +79 -20
- data/lib/data_mapper/associations/has_one_association.rb +2 -2
- data/lib/data_mapper/associations/reference.rb +1 -1
- data/lib/data_mapper/auto_migrations.rb +40 -0
- data/lib/data_mapper/base.rb +201 -98
- data/lib/data_mapper/context.rb +16 -10
- data/lib/data_mapper/database.rb +22 -11
- data/lib/data_mapper/dependency_queue.rb +28 -0
- data/lib/data_mapper/embedded_value.rb +61 -17
- data/lib/data_mapper/property.rb +4 -0
- data/lib/data_mapper/support/active_record_impersonation.rb +13 -5
- data/lib/data_mapper/support/errors.rb +5 -0
- data/lib/data_mapper/support/serialization.rb +8 -4
- data/lib/data_mapper/validatable_extensions/errors.rb +12 -0
- data/lib/data_mapper/validatable_extensions/macros.rb +7 -0
- data/lib/data_mapper/validatable_extensions/validatable_instance_methods.rb +62 -0
- data/lib/data_mapper/validatable_extensions/validation_base.rb +18 -0
- data/lib/data_mapper/validatable_extensions/validations/formats/email.rb +43 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_acceptance_of.rb +7 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_confirmation_of.rb +7 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_each.rb +7 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_format_of.rb +28 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_length_of.rb +15 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_numericality_of.rb +7 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_presence_of.rb +7 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_true_for.rb +7 -0
- data/lib/data_mapper/validatable_extensions/validations/validates_uniqueness_of.rb +33 -0
- data/lib/data_mapper/validations.rb +20 -0
- data/lib/data_mapper.rb +39 -34
- data/performance.rb +24 -18
- data/plugins/dataobjects/do_rb +0 -0
- data/rakefile.rb +12 -2
- data/spec/active_record_impersonation_spec.rb +133 -0
- data/spec/acts_as_tree_spec.rb +25 -9
- data/spec/associations_spec.rb +124 -4
- data/spec/attributes_spec.rb +13 -0
- data/spec/auto_migrations_spec.rb +44 -0
- data/spec/base_spec.rb +189 -1
- data/spec/column_spec.rb +85 -7
- data/spec/conditions_spec.rb +2 -2
- data/spec/dependency_spec.rb +25 -0
- data/spec/embedded_value_spec.rb +123 -3
- data/spec/fixtures/animals.yaml +1 -0
- data/spec/fixtures/careers.yaml +5 -0
- data/spec/fixtures/comments.yaml +1 -0
- data/spec/fixtures/people.yaml +14 -9
- data/spec/fixtures/projects.yaml +4 -0
- data/spec/fixtures/sections.yaml +5 -0
- data/spec/fixtures/serializers.yaml +6 -0
- data/spec/fixtures/users.yaml +1 -0
- data/spec/load_command_spec.rb +5 -4
- data/spec/mock_adapter.rb +2 -2
- data/spec/models/animal.rb +2 -1
- data/spec/models/animals_exhibit.rb +2 -2
- data/spec/models/career.rb +6 -0
- data/spec/models/comment.rb +4 -0
- data/spec/models/exhibit.rb +4 -0
- data/spec/models/person.rb +3 -13
- data/spec/models/project.rb +1 -1
- data/spec/models/serializer.rb +3 -0
- data/spec/models/user.rb +4 -0
- data/spec/models/zoo.rb +8 -1
- data/spec/natural_key_spec.rb +36 -0
- data/spec/paranoia_spec.rb +36 -0
- data/spec/property_spec.rb +70 -0
- data/spec/schema_spec.rb +10 -2
- data/spec/serialization_spec.rb +6 -3
- data/spec/serialize_spec.rb +19 -0
- data/spec/single_table_inheritance_spec.rb +7 -1
- data/spec/spec_helper.rb +26 -8
- data/spec/table_spec.rb +33 -0
- data/spec/validates_confirmation_of_spec.rb +20 -4
- data/spec/validates_format_of_spec.rb +22 -8
- data/spec/validates_length_of_spec.rb +26 -13
- data/spec/validates_uniqueness_of_spec.rb +18 -5
- data/spec/validations_spec.rb +55 -10
- data/tasks/fixtures.rb +13 -7
- metadata +189 -153
- data/lib/data_mapper/validations/confirmation_validator.rb +0 -53
- data/lib/data_mapper/validations/contextual_validations.rb +0 -50
- data/lib/data_mapper/validations/format_validator.rb +0 -85
- data/lib/data_mapper/validations/formats/email.rb +0 -78
- data/lib/data_mapper/validations/generic_validator.rb +0 -22
- data/lib/data_mapper/validations/length_validator.rb +0 -76
- data/lib/data_mapper/validations/required_field_validator.rb +0 -41
- data/lib/data_mapper/validations/unique_validator.rb +0 -56
- data/lib/data_mapper/validations/validation_errors.rb +0 -37
- data/lib/data_mapper/validations/validation_helper.rb +0 -77
- data/plugins/dataobjects/REVISION +0 -1
- data/plugins/dataobjects/Rakefile +0 -9
- data/plugins/dataobjects/do.rb +0 -348
- data/plugins/dataobjects/do_mysql.rb +0 -212
- data/plugins/dataobjects/do_postgres.rb +0 -196
- data/plugins/dataobjects/do_sqlite3.rb +0 -157
- data/plugins/dataobjects/spec/do_spec.rb +0 -150
- data/plugins/dataobjects/spec/spec_helper.rb +0 -81
- data/plugins/dataobjects/swig_mysql/extconf.rb +0 -45
- data/plugins/dataobjects/swig_mysql/mysql_c.c +0 -16602
- data/plugins/dataobjects/swig_mysql/mysql_c.i +0 -67
- data/plugins/dataobjects/swig_mysql/mysql_supp.i +0 -46
- data/plugins/dataobjects/swig_postgres/extconf.rb +0 -29
- data/plugins/dataobjects/swig_postgres/postgres_c.c +0 -8185
- data/plugins/dataobjects/swig_postgres/postgres_c.i +0 -73
- data/plugins/dataobjects/swig_sqlite/extconf.rb +0 -9
- data/plugins/dataobjects/swig_sqlite/sqlite3_c.c +0 -4725
- data/plugins/dataobjects/swig_sqlite/sqlite_c.i +0 -168
- data/tasks/drivers.rb +0 -20
@@ -1,67 +0,0 @@
|
|
1
|
-
%module mysql_c
|
2
|
-
%{
|
3
|
-
#include <mysql.h>
|
4
|
-
#include <errmsg.h>
|
5
|
-
#include <mysqld_error.h>
|
6
|
-
|
7
|
-
VALUE mysql_c_fetch_field_names(MYSQL_RES *reader, int count) {
|
8
|
-
VALUE arr = rb_ary_new();
|
9
|
-
int i;
|
10
|
-
for(i = 0; i < count; i++) {
|
11
|
-
rb_ary_push(arr, rb_str_new2(mysql_fetch_field_direct(reader, i)->name));
|
12
|
-
}
|
13
|
-
return arr;
|
14
|
-
}
|
15
|
-
|
16
|
-
VALUE mysql_c_fetch_field_types(MYSQL_RES *reader, int count) {
|
17
|
-
VALUE arr = rb_ary_new();
|
18
|
-
int i;
|
19
|
-
for(i = 0; i < count; i++) {
|
20
|
-
rb_ary_push(arr, INT2NUM(mysql_fetch_field_direct(reader, i)->type));
|
21
|
-
}
|
22
|
-
return arr;
|
23
|
-
}
|
24
|
-
|
25
|
-
VALUE mysql_c_fetch_row(MYSQL_RES *reader) {
|
26
|
-
VALUE arr = rb_ary_new();
|
27
|
-
MYSQL_ROW result = (MYSQL_ROW)mysql_fetch_row(reader);
|
28
|
-
if(!result) return Qnil;
|
29
|
-
int i;
|
30
|
-
|
31
|
-
for(i = 0; i < reader->field_count; i++) {
|
32
|
-
if(result[i] == NULL) rb_ary_push(arr, Qnil);
|
33
|
-
else rb_ary_push(arr, rb_str_new2(result[i]));
|
34
|
-
}
|
35
|
-
return arr;
|
36
|
-
}
|
37
|
-
|
38
|
-
%}
|
39
|
-
|
40
|
-
%ignore st_mysql_options;
|
41
|
-
%include "/usr/local/mysql-5.0.45-osx10.4-i686/include/mysql.h"
|
42
|
-
|
43
|
-
VALUE mysql_c_fetch_field_names(MYSQL_RES *reader, int count);
|
44
|
-
VALUE mysql_c_fetch_field_types(MYSQL_RES *reader, int count);
|
45
|
-
VALUE mysql_c_fetch_row(MYSQL_RES *reader);
|
46
|
-
|
47
|
-
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
|
48
|
-
MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG,
|
49
|
-
MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE,
|
50
|
-
MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP,
|
51
|
-
MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24,
|
52
|
-
MYSQL_TYPE_DATE, MYSQL_TYPE_TIME,
|
53
|
-
MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR,
|
54
|
-
MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR,
|
55
|
-
MYSQL_TYPE_BIT,
|
56
|
-
MYSQL_TYPE_NEWDECIMAL=246,
|
57
|
-
MYSQL_TYPE_ENUM=247,
|
58
|
-
MYSQL_TYPE_SET=248,
|
59
|
-
MYSQL_TYPE_TINY_BLOB=249,
|
60
|
-
MYSQL_TYPE_MEDIUM_BLOB=250,
|
61
|
-
MYSQL_TYPE_LONG_BLOB=251,
|
62
|
-
MYSQL_TYPE_BLOB=252,
|
63
|
-
MYSQL_TYPE_VAR_STRING=253,
|
64
|
-
MYSQL_TYPE_STRING=254,
|
65
|
-
MYSQL_TYPE_GEOMETRY=255
|
66
|
-
|
67
|
-
};
|
@@ -1,46 +0,0 @@
|
|
1
|
-
%module mysql_c
|
2
|
-
%{
|
3
|
-
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
|
4
|
-
MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG,
|
5
|
-
MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE,
|
6
|
-
MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP,
|
7
|
-
MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24,
|
8
|
-
MYSQL_TYPE_DATE, MYSQL_TYPE_TIME,
|
9
|
-
MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR,
|
10
|
-
MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR,
|
11
|
-
MYSQL_TYPE_BIT,
|
12
|
-
MYSQL_TYPE_NEWDECIMAL=246,
|
13
|
-
MYSQL_TYPE_ENUM=247,
|
14
|
-
MYSQL_TYPE_SET=248,
|
15
|
-
MYSQL_TYPE_TINY_BLOB=249,
|
16
|
-
MYSQL_TYPE_MEDIUM_BLOB=250,
|
17
|
-
MYSQL_TYPE_LONG_BLOB=251,
|
18
|
-
MYSQL_TYPE_BLOB=252,
|
19
|
-
MYSQL_TYPE_VAR_STRING=253,
|
20
|
-
MYSQL_TYPE_STRING=254,
|
21
|
-
MYSQL_TYPE_GEOMETRY=255
|
22
|
-
|
23
|
-
};
|
24
|
-
%}
|
25
|
-
|
26
|
-
enum enum_field_types { MYSQL_TYPE_DECIMAL, MYSQL_TYPE_TINY,
|
27
|
-
MYSQL_TYPE_SHORT, MYSQL_TYPE_LONG,
|
28
|
-
MYSQL_TYPE_FLOAT, MYSQL_TYPE_DOUBLE,
|
29
|
-
MYSQL_TYPE_NULL, MYSQL_TYPE_TIMESTAMP,
|
30
|
-
MYSQL_TYPE_LONGLONG,MYSQL_TYPE_INT24,
|
31
|
-
MYSQL_TYPE_DATE, MYSQL_TYPE_TIME,
|
32
|
-
MYSQL_TYPE_DATETIME, MYSQL_TYPE_YEAR,
|
33
|
-
MYSQL_TYPE_NEWDATE, MYSQL_TYPE_VARCHAR,
|
34
|
-
MYSQL_TYPE_BIT,
|
35
|
-
MYSQL_TYPE_NEWDECIMAL=246,
|
36
|
-
MYSQL_TYPE_ENUM=247,
|
37
|
-
MYSQL_TYPE_SET=248,
|
38
|
-
MYSQL_TYPE_TINY_BLOB=249,
|
39
|
-
MYSQL_TYPE_MEDIUM_BLOB=250,
|
40
|
-
MYSQL_TYPE_LONG_BLOB=251,
|
41
|
-
MYSQL_TYPE_BLOB=252,
|
42
|
-
MYSQL_TYPE_VAR_STRING=253,
|
43
|
-
MYSQL_TYPE_STRING=254,
|
44
|
-
MYSQL_TYPE_GEOMETRY=255
|
45
|
-
|
46
|
-
};
|
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'mkmf'
|
2
|
-
|
3
|
-
def config_value(type)
|
4
|
-
ENV["POSTGRES_#{type.upcase}"] || pg_config(type)
|
5
|
-
end
|
6
|
-
|
7
|
-
def pg_config(type)
|
8
|
-
IO.popen("pg_config --#{type}dir").readline.chomp rescue nil
|
9
|
-
end
|
10
|
-
|
11
|
-
def have_build_env
|
12
|
-
have_library('pq') && have_header('libpq-fe.h') && have_header('libpq/libpq-fs.h')
|
13
|
-
end
|
14
|
-
|
15
|
-
dir_config('pgsql', config_value('include'), config_value('lib'))
|
16
|
-
|
17
|
-
required_libraries = []
|
18
|
-
desired_functions = %w(PQsetClientEncoding pg_encoding_to_char PQfreemem)
|
19
|
-
compat_functions = %w(PQescapeString PQexecParams)
|
20
|
-
|
21
|
-
if have_build_env
|
22
|
-
required_libraries.each(&method(:have_library))
|
23
|
-
desired_functions.each(&method(:have_func))
|
24
|
-
$CFLAGS << ' -Wall '
|
25
|
-
dir_config("postgres_c")
|
26
|
-
create_makefile("postgres_c")
|
27
|
-
else
|
28
|
-
puts 'Could not find PostgreSQL build environment (libraries & headers): Makefile not created'
|
29
|
-
end
|