datamapper 0.2.3 → 0.2.4

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.
Files changed (121) hide show
  1. data/example.rb +5 -5
  2. data/lib/data_mapper/adapters/abstract_adapter.rb +2 -2
  3. data/lib/data_mapper/adapters/data_object_adapter.rb +141 -147
  4. data/lib/data_mapper/adapters/mysql_adapter.rb +14 -1
  5. data/lib/data_mapper/adapters/postgresql_adapter.rb +123 -18
  6. data/lib/data_mapper/adapters/sql/coersion.rb +21 -9
  7. data/lib/data_mapper/adapters/sql/commands/load_command.rb +36 -19
  8. data/lib/data_mapper/adapters/sql/mappings/column.rb +111 -17
  9. data/lib/data_mapper/adapters/sql/mappings/schema.rb +27 -0
  10. data/lib/data_mapper/adapters/sql/mappings/table.rb +256 -29
  11. data/lib/data_mapper/adapters/sqlite3_adapter.rb +93 -8
  12. data/lib/data_mapper/associations/belongs_to_association.rb +53 -54
  13. data/lib/data_mapper/associations/has_and_belongs_to_many_association.rb +157 -25
  14. data/lib/data_mapper/associations/has_many_association.rb +45 -15
  15. data/lib/data_mapper/associations/has_n_association.rb +79 -20
  16. data/lib/data_mapper/associations/has_one_association.rb +2 -2
  17. data/lib/data_mapper/associations/reference.rb +1 -1
  18. data/lib/data_mapper/auto_migrations.rb +40 -0
  19. data/lib/data_mapper/base.rb +201 -98
  20. data/lib/data_mapper/context.rb +16 -10
  21. data/lib/data_mapper/database.rb +22 -11
  22. data/lib/data_mapper/dependency_queue.rb +28 -0
  23. data/lib/data_mapper/embedded_value.rb +61 -17
  24. data/lib/data_mapper/property.rb +4 -0
  25. data/lib/data_mapper/support/active_record_impersonation.rb +13 -5
  26. data/lib/data_mapper/support/errors.rb +5 -0
  27. data/lib/data_mapper/support/serialization.rb +8 -4
  28. data/lib/data_mapper/validatable_extensions/errors.rb +12 -0
  29. data/lib/data_mapper/validatable_extensions/macros.rb +7 -0
  30. data/lib/data_mapper/validatable_extensions/validatable_instance_methods.rb +62 -0
  31. data/lib/data_mapper/validatable_extensions/validation_base.rb +18 -0
  32. data/lib/data_mapper/validatable_extensions/validations/formats/email.rb +43 -0
  33. data/lib/data_mapper/validatable_extensions/validations/validates_acceptance_of.rb +7 -0
  34. data/lib/data_mapper/validatable_extensions/validations/validates_confirmation_of.rb +7 -0
  35. data/lib/data_mapper/validatable_extensions/validations/validates_each.rb +7 -0
  36. data/lib/data_mapper/validatable_extensions/validations/validates_format_of.rb +28 -0
  37. data/lib/data_mapper/validatable_extensions/validations/validates_length_of.rb +15 -0
  38. data/lib/data_mapper/validatable_extensions/validations/validates_numericality_of.rb +7 -0
  39. data/lib/data_mapper/validatable_extensions/validations/validates_presence_of.rb +7 -0
  40. data/lib/data_mapper/validatable_extensions/validations/validates_true_for.rb +7 -0
  41. data/lib/data_mapper/validatable_extensions/validations/validates_uniqueness_of.rb +33 -0
  42. data/lib/data_mapper/validations.rb +20 -0
  43. data/lib/data_mapper.rb +39 -34
  44. data/performance.rb +24 -18
  45. data/plugins/dataobjects/do_rb +0 -0
  46. data/rakefile.rb +12 -2
  47. data/spec/active_record_impersonation_spec.rb +133 -0
  48. data/spec/acts_as_tree_spec.rb +25 -9
  49. data/spec/associations_spec.rb +124 -4
  50. data/spec/attributes_spec.rb +13 -0
  51. data/spec/auto_migrations_spec.rb +44 -0
  52. data/spec/base_spec.rb +189 -1
  53. data/spec/column_spec.rb +85 -7
  54. data/spec/conditions_spec.rb +2 -2
  55. data/spec/dependency_spec.rb +25 -0
  56. data/spec/embedded_value_spec.rb +123 -3
  57. data/spec/fixtures/animals.yaml +1 -0
  58. data/spec/fixtures/careers.yaml +5 -0
  59. data/spec/fixtures/comments.yaml +1 -0
  60. data/spec/fixtures/people.yaml +14 -9
  61. data/spec/fixtures/projects.yaml +4 -0
  62. data/spec/fixtures/sections.yaml +5 -0
  63. data/spec/fixtures/serializers.yaml +6 -0
  64. data/spec/fixtures/users.yaml +1 -0
  65. data/spec/load_command_spec.rb +5 -4
  66. data/spec/mock_adapter.rb +2 -2
  67. data/spec/models/animal.rb +2 -1
  68. data/spec/models/animals_exhibit.rb +2 -2
  69. data/spec/models/career.rb +6 -0
  70. data/spec/models/comment.rb +4 -0
  71. data/spec/models/exhibit.rb +4 -0
  72. data/spec/models/person.rb +3 -13
  73. data/spec/models/project.rb +1 -1
  74. data/spec/models/serializer.rb +3 -0
  75. data/spec/models/user.rb +4 -0
  76. data/spec/models/zoo.rb +8 -1
  77. data/spec/natural_key_spec.rb +36 -0
  78. data/spec/paranoia_spec.rb +36 -0
  79. data/spec/property_spec.rb +70 -0
  80. data/spec/schema_spec.rb +10 -2
  81. data/spec/serialization_spec.rb +6 -3
  82. data/spec/serialize_spec.rb +19 -0
  83. data/spec/single_table_inheritance_spec.rb +7 -1
  84. data/spec/spec_helper.rb +26 -8
  85. data/spec/table_spec.rb +33 -0
  86. data/spec/validates_confirmation_of_spec.rb +20 -4
  87. data/spec/validates_format_of_spec.rb +22 -8
  88. data/spec/validates_length_of_spec.rb +26 -13
  89. data/spec/validates_uniqueness_of_spec.rb +18 -5
  90. data/spec/validations_spec.rb +55 -10
  91. data/tasks/fixtures.rb +13 -7
  92. metadata +189 -153
  93. data/lib/data_mapper/validations/confirmation_validator.rb +0 -53
  94. data/lib/data_mapper/validations/contextual_validations.rb +0 -50
  95. data/lib/data_mapper/validations/format_validator.rb +0 -85
  96. data/lib/data_mapper/validations/formats/email.rb +0 -78
  97. data/lib/data_mapper/validations/generic_validator.rb +0 -22
  98. data/lib/data_mapper/validations/length_validator.rb +0 -76
  99. data/lib/data_mapper/validations/required_field_validator.rb +0 -41
  100. data/lib/data_mapper/validations/unique_validator.rb +0 -56
  101. data/lib/data_mapper/validations/validation_errors.rb +0 -37
  102. data/lib/data_mapper/validations/validation_helper.rb +0 -77
  103. data/plugins/dataobjects/REVISION +0 -1
  104. data/plugins/dataobjects/Rakefile +0 -9
  105. data/plugins/dataobjects/do.rb +0 -348
  106. data/plugins/dataobjects/do_mysql.rb +0 -212
  107. data/plugins/dataobjects/do_postgres.rb +0 -196
  108. data/plugins/dataobjects/do_sqlite3.rb +0 -157
  109. data/plugins/dataobjects/spec/do_spec.rb +0 -150
  110. data/plugins/dataobjects/spec/spec_helper.rb +0 -81
  111. data/plugins/dataobjects/swig_mysql/extconf.rb +0 -45
  112. data/plugins/dataobjects/swig_mysql/mysql_c.c +0 -16602
  113. data/plugins/dataobjects/swig_mysql/mysql_c.i +0 -67
  114. data/plugins/dataobjects/swig_mysql/mysql_supp.i +0 -46
  115. data/plugins/dataobjects/swig_postgres/extconf.rb +0 -29
  116. data/plugins/dataobjects/swig_postgres/postgres_c.c +0 -8185
  117. data/plugins/dataobjects/swig_postgres/postgres_c.i +0 -73
  118. data/plugins/dataobjects/swig_sqlite/extconf.rb +0 -9
  119. data/plugins/dataobjects/swig_sqlite/sqlite3_c.c +0 -4725
  120. data/plugins/dataobjects/swig_sqlite/sqlite_c.i +0 -168
  121. 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