datamapper-dm-core 0.9.11 → 0.10.0
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.
- data/.autotest +17 -14
- data/.gitignore +3 -1
- data/FAQ +6 -5
- data/History.txt +5 -39
- data/Manifest.txt +67 -76
- data/QUICKLINKS +1 -1
- data/README.txt +21 -15
- data/Rakefile +16 -15
- data/SPECS +2 -29
- data/TODO +1 -1
- data/dm-core.gemspec +11 -15
- data/lib/dm-core/adapters/abstract_adapter.rb +182 -185
- data/lib/dm-core/adapters/data_objects_adapter.rb +482 -534
- data/lib/dm-core/adapters/in_memory_adapter.rb +90 -69
- data/lib/dm-core/adapters/mysql_adapter.rb +22 -115
- data/lib/dm-core/adapters/oracle_adapter.rb +249 -0
- data/lib/dm-core/adapters/postgres_adapter.rb +7 -173
- data/lib/dm-core/adapters/sqlite3_adapter.rb +4 -97
- data/lib/dm-core/adapters/yaml_adapter.rb +116 -0
- data/lib/dm-core/adapters.rb +135 -16
- data/lib/dm-core/associations/many_to_many.rb +372 -90
- data/lib/dm-core/associations/many_to_one.rb +220 -73
- data/lib/dm-core/associations/one_to_many.rb +319 -255
- data/lib/dm-core/associations/one_to_one.rb +66 -53
- data/lib/dm-core/associations/relationship.rb +560 -158
- data/lib/dm-core/collection.rb +1104 -381
- data/lib/dm-core/core_ext/kernel.rb +12 -0
- data/lib/dm-core/core_ext/symbol.rb +10 -0
- data/lib/dm-core/identity_map.rb +4 -34
- data/lib/dm-core/migrations.rb +1283 -0
- data/lib/dm-core/model/descendant_set.rb +81 -0
- data/lib/dm-core/model/hook.rb +45 -0
- data/lib/dm-core/model/is.rb +32 -0
- data/lib/dm-core/model/property.rb +248 -0
- data/lib/dm-core/model/relationship.rb +335 -0
- data/lib/dm-core/model/scope.rb +90 -0
- data/lib/dm-core/model.rb +570 -369
- data/lib/dm-core/property.rb +753 -280
- data/lib/dm-core/property_set.rb +141 -98
- data/lib/dm-core/query/conditions/comparison.rb +814 -0
- data/lib/dm-core/query/conditions/operation.rb +247 -0
- data/lib/dm-core/query/direction.rb +43 -0
- data/lib/dm-core/query/operator.rb +42 -0
- data/lib/dm-core/query/path.rb +102 -0
- data/lib/dm-core/query/sort.rb +45 -0
- data/lib/dm-core/query.rb +974 -492
- data/lib/dm-core/repository.rb +147 -107
- data/lib/dm-core/resource.rb +644 -429
- data/lib/dm-core/spec/adapter_shared_spec.rb +294 -0
- data/lib/dm-core/spec/data_objects_adapter_shared_spec.rb +106 -0
- data/lib/dm-core/support/chainable.rb +20 -0
- data/lib/dm-core/support/deprecate.rb +12 -0
- data/lib/dm-core/support/equalizer.rb +23 -0
- data/lib/dm-core/support/logger.rb +13 -0
- data/lib/dm-core/{naming_conventions.rb → support/naming_conventions.rb} +6 -6
- data/lib/dm-core/transaction.rb +333 -92
- data/lib/dm-core/type.rb +98 -60
- data/lib/dm-core/types/boolean.rb +1 -1
- data/lib/dm-core/types/discriminator.rb +34 -20
- data/lib/dm-core/types/object.rb +7 -4
- data/lib/dm-core/types/paranoid_boolean.rb +11 -9
- data/lib/dm-core/types/paranoid_datetime.rb +11 -9
- data/lib/dm-core/types/serial.rb +3 -3
- data/lib/dm-core/types/text.rb +3 -4
- data/lib/dm-core/version.rb +1 -1
- data/lib/dm-core.rb +106 -110
- data/script/performance.rb +102 -109
- data/script/profile.rb +169 -38
- data/spec/lib/adapter_helpers.rb +105 -0
- data/spec/lib/collection_helpers.rb +18 -0
- data/spec/lib/counter_adapter.rb +34 -0
- data/spec/lib/pending_helpers.rb +27 -0
- data/spec/lib/rspec_immediate_feedback_formatter.rb +53 -0
- data/spec/public/associations/many_to_many_spec.rb +193 -0
- data/spec/public/associations/many_to_one_spec.rb +73 -0
- data/spec/public/associations/one_to_many_spec.rb +77 -0
- data/spec/public/associations/one_to_one_spec.rb +156 -0
- data/spec/public/collection_spec.rb +65 -0
- data/spec/public/model/relationship_spec.rb +924 -0
- data/spec/public/model_spec.rb +159 -0
- data/spec/public/property_spec.rb +829 -0
- data/spec/public/resource_spec.rb +71 -0
- data/spec/public/sel_spec.rb +44 -0
- data/spec/public/setup_spec.rb +145 -0
- data/spec/public/shared/association_collection_shared_spec.rb +317 -0
- data/spec/public/shared/collection_shared_spec.rb +1723 -0
- data/spec/public/shared/finder_shared_spec.rb +1619 -0
- data/spec/public/shared/resource_shared_spec.rb +924 -0
- data/spec/public/shared/sel_shared_spec.rb +112 -0
- data/spec/public/transaction_spec.rb +129 -0
- data/spec/public/types/discriminator_spec.rb +130 -0
- data/spec/semipublic/adapters/abstract_adapter_spec.rb +30 -0
- data/spec/semipublic/adapters/in_memory_adapter_spec.rb +12 -0
- data/spec/semipublic/adapters/mysql_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/oracle_adapter_spec.rb +194 -0
- data/spec/semipublic/adapters/postgres_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/sqlite3_adapter_spec.rb +17 -0
- data/spec/semipublic/adapters/yaml_adapter_spec.rb +12 -0
- data/spec/semipublic/associations/many_to_one_spec.rb +53 -0
- data/spec/semipublic/associations/relationship_spec.rb +194 -0
- data/spec/semipublic/associations_spec.rb +177 -0
- data/spec/semipublic/collection_spec.rb +142 -0
- data/spec/semipublic/property_spec.rb +61 -0
- data/spec/semipublic/query/conditions_spec.rb +528 -0
- data/spec/semipublic/query/path_spec.rb +443 -0
- data/spec/semipublic/query_spec.rb +2626 -0
- data/spec/semipublic/resource_spec.rb +47 -0
- data/spec/semipublic/shared/resource_shared_spec.rb +126 -0
- data/spec/spec.opts +3 -1
- data/spec/spec_helper.rb +80 -57
- data/tasks/ci.rb +19 -31
- data/tasks/dm.rb +43 -48
- data/tasks/doc.rb +8 -11
- data/tasks/gemspec.rb +5 -5
- data/tasks/hoe.rb +15 -16
- data/tasks/install.rb +8 -10
- metadata +72 -93
- data/lib/dm-core/associations/relationship_chain.rb +0 -81
- data/lib/dm-core/associations.rb +0 -207
- data/lib/dm-core/auto_migrations.rb +0 -105
- data/lib/dm-core/dependency_queue.rb +0 -32
- data/lib/dm-core/hook.rb +0 -11
- data/lib/dm-core/is.rb +0 -16
- data/lib/dm-core/logger.rb +0 -232
- data/lib/dm-core/migrations/destructive_migrations.rb +0 -17
- data/lib/dm-core/migrator.rb +0 -29
- data/lib/dm-core/scope.rb +0 -58
- data/lib/dm-core/support/array.rb +0 -13
- data/lib/dm-core/support/assertions.rb +0 -8
- data/lib/dm-core/support/errors.rb +0 -23
- data/lib/dm-core/support/kernel.rb +0 -11
- data/lib/dm-core/support/symbol.rb +0 -41
- data/lib/dm-core/support.rb +0 -7
- data/lib/dm-core/type_map.rb +0 -80
- data/lib/dm-core/types.rb +0 -19
- data/script/all +0 -4
- data/spec/integration/association_spec.rb +0 -1382
- data/spec/integration/association_through_spec.rb +0 -203
- data/spec/integration/associations/many_to_many_spec.rb +0 -449
- data/spec/integration/associations/many_to_one_spec.rb +0 -163
- data/spec/integration/associations/one_to_many_spec.rb +0 -188
- data/spec/integration/auto_migrations_spec.rb +0 -413
- data/spec/integration/collection_spec.rb +0 -1073
- data/spec/integration/data_objects_adapter_spec.rb +0 -32
- data/spec/integration/dependency_queue_spec.rb +0 -46
- data/spec/integration/model_spec.rb +0 -197
- data/spec/integration/mysql_adapter_spec.rb +0 -85
- data/spec/integration/postgres_adapter_spec.rb +0 -731
- data/spec/integration/property_spec.rb +0 -253
- data/spec/integration/query_spec.rb +0 -514
- data/spec/integration/repository_spec.rb +0 -61
- data/spec/integration/resource_spec.rb +0 -513
- data/spec/integration/sqlite3_adapter_spec.rb +0 -352
- data/spec/integration/sti_spec.rb +0 -273
- data/spec/integration/strategic_eager_loading_spec.rb +0 -156
- data/spec/integration/transaction_spec.rb +0 -75
- data/spec/integration/type_spec.rb +0 -275
- data/spec/lib/logging_helper.rb +0 -18
- data/spec/lib/mock_adapter.rb +0 -27
- data/spec/lib/model_loader.rb +0 -100
- data/spec/lib/publicize_methods.rb +0 -28
- data/spec/models/content.rb +0 -16
- data/spec/models/vehicles.rb +0 -34
- data/spec/models/zoo.rb +0 -48
- data/spec/unit/adapters/abstract_adapter_spec.rb +0 -133
- data/spec/unit/adapters/adapter_shared_spec.rb +0 -15
- data/spec/unit/adapters/data_objects_adapter_spec.rb +0 -632
- data/spec/unit/adapters/in_memory_adapter_spec.rb +0 -98
- data/spec/unit/adapters/postgres_adapter_spec.rb +0 -133
- data/spec/unit/associations/many_to_many_spec.rb +0 -32
- data/spec/unit/associations/many_to_one_spec.rb +0 -159
- data/spec/unit/associations/one_to_many_spec.rb +0 -393
- data/spec/unit/associations/one_to_one_spec.rb +0 -7
- data/spec/unit/associations/relationship_spec.rb +0 -71
- data/spec/unit/associations_spec.rb +0 -242
- data/spec/unit/auto_migrations_spec.rb +0 -111
- data/spec/unit/collection_spec.rb +0 -182
- data/spec/unit/data_mapper_spec.rb +0 -35
- data/spec/unit/identity_map_spec.rb +0 -126
- data/spec/unit/is_spec.rb +0 -80
- data/spec/unit/migrator_spec.rb +0 -33
- data/spec/unit/model_spec.rb +0 -321
- data/spec/unit/naming_conventions_spec.rb +0 -36
- data/spec/unit/property_set_spec.rb +0 -90
- data/spec/unit/property_spec.rb +0 -753
- data/spec/unit/query_spec.rb +0 -571
- data/spec/unit/repository_spec.rb +0 -93
- data/spec/unit/resource_spec.rb +0 -649
- data/spec/unit/scope_spec.rb +0 -142
- data/spec/unit/transaction_spec.rb +0 -493
- data/spec/unit/type_map_spec.rb +0 -114
- data/spec/unit/type_spec.rb +0 -119
data/.autotest
CHANGED
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
Autotest.add_hook :initialize do |at|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
unless ENV['AUTOTEST'] == 'integration'
|
|
5
|
-
ignore << 'spec/integration'
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
ignore.each do |exception|
|
|
2
|
+
%w[ .git burn www log plugins script tasks bin CHANGELOG FAQ MIT-LICENSE PERFORMANCE QUICKLINKS README ].each do |exception|
|
|
9
3
|
at.add_exception(exception)
|
|
10
4
|
end
|
|
11
5
|
|
|
12
6
|
at.clear_mappings
|
|
13
7
|
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
spec_folders = /(?:semi)?public/
|
|
9
|
+
|
|
10
|
+
# when a file is updated, make sure it's dependent public and semipublic specs pass
|
|
11
|
+
at.add_mapping %r{\Alib/dm\-core/(.+)\.rb\z} do |_,match|
|
|
12
|
+
at.files_matching %r{\Aspec/#{spec_folders}/#{match[1]}_spec\.rb\z}
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# when the spec configuration changes make sure all specs pass
|
|
16
|
+
at.add_mapping %r{\Aspec/spec_helper\.rb\z} do
|
|
17
|
+
at.files_matching %r{\Aspec/.+_spec\.rb\z}
|
|
16
18
|
end
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
20
|
+
# when a spec is updated, make sure it passes
|
|
21
|
+
at.add_mapping %r{\Aspec/#{spec_folders}/(.+)_spec\.rb\z} do |filename,_|
|
|
22
|
+
filename
|
|
21
23
|
end
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
+
# when the collection shared spec is update, make sure all dependent specs pass
|
|
26
|
+
at.add_mapping %r{\Aspec/lib/collection_shared_spec\.rb\z} do
|
|
27
|
+
at.files_matching %r{\Aspec/#{spec_folders}/collection_spec\.rb\z}
|
|
25
28
|
end
|
|
26
29
|
end
|
data/.gitignore
CHANGED
data/FAQ
CHANGED
|
@@ -24,7 +24,7 @@ model has two or more keys, no big deal
|
|
|
24
24
|
Create a property and make it a ParanoidDateTime or ParanoidBoolean type.
|
|
25
25
|
|
|
26
26
|
property :deleted_at, ParanoidDateTime
|
|
27
|
-
property :deleted,
|
|
27
|
+
property :deleted, ParanoidBoolean
|
|
28
28
|
|
|
29
29
|
All of your calls to <tt>##all()</tt>, <tt>##first()</tt> will be scoped
|
|
30
30
|
with <tt>:deleted_at => nil</tt> or <tt>:deleted => false</tt>. Plus,
|
|
@@ -36,8 +36,9 @@ This is what the Discriminator data-type is for:
|
|
|
36
36
|
|
|
37
37
|
class Person
|
|
38
38
|
include DataMapper::Resource
|
|
39
|
-
|
|
40
|
-
property :
|
|
39
|
+
|
|
40
|
+
property :id, Serial
|
|
41
|
+
property :type, Discriminator ## other shared properties here
|
|
41
42
|
end
|
|
42
43
|
|
|
43
44
|
class Salesperson < Person; end
|
|
@@ -48,8 +49,8 @@ the data-store.
|
|
|
48
49
|
|
|
49
50
|
=== How do I run my own commands?
|
|
50
51
|
|
|
51
|
-
repository.adapter.query("
|
|
52
|
-
repository(:integration).adapter.query("
|
|
52
|
+
repository.adapter.query("SELECT * FROM users WHERE clue > 0")
|
|
53
|
+
repository(:integration).adapter.query("SELECT * FROM users WHERE clue > 0")
|
|
53
54
|
|
|
54
55
|
This does not return any Users (har har), but rather Struct's that will quack
|
|
55
56
|
like Users. They'll be read-only as well.
|
data/History.txt
CHANGED
|
@@ -1,41 +1,7 @@
|
|
|
1
|
-
=== 0.
|
|
1
|
+
=== 0.10.0 / 2009-10-15
|
|
2
2
|
|
|
3
|
-
*
|
|
3
|
+
* Countless enhancements:
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* Ruby 1.9.1 compatibility
|
|
10
|
-
|
|
11
|
-
* 1 minor enhancement:
|
|
12
|
-
|
|
13
|
-
* Updated Resource marshaling to be more thorough
|
|
14
|
-
|
|
15
|
-
=== 0.9.9 / 2009-01-04
|
|
16
|
-
|
|
17
|
-
* 1 minor enhancement:
|
|
18
|
-
|
|
19
|
-
* Updated Resource and Collection to be serializable with Marshal
|
|
20
|
-
|
|
21
|
-
* 1 bug fix:
|
|
22
|
-
|
|
23
|
-
* Fixed Model#copy to copy properties that are the same in both
|
|
24
|
-
repositories.
|
|
25
|
-
|
|
26
|
-
=== 0.9.8 / 2008-12-07
|
|
27
|
-
|
|
28
|
-
* 3 minor enhancements:
|
|
29
|
-
|
|
30
|
-
* Updated Resource#inspect to not lazy-load unloaded attributes.
|
|
31
|
-
* Updated ManyToOne::Proxy to delegate #class to parent. This will
|
|
32
|
-
allow the Merb resource() route helper method to use the association
|
|
33
|
-
proxy to generate the URL.
|
|
34
|
-
* Updated Resource#attributes= to respect method visibility. This means
|
|
35
|
-
that only public mutators will set the attribute value.
|
|
36
|
-
|
|
37
|
-
* 1 bug fix:
|
|
38
|
-
|
|
39
|
-
* Fixed regression where an update to a resource with a lazy property
|
|
40
|
-
could cause the record to reload when accessing the lazy property,
|
|
41
|
-
clobbering any changes made prior.
|
|
5
|
+
* Total rewrite of most of dm-core, including YARD docs for more
|
|
6
|
+
than half the methods and ~90% coverage of code. More to be done
|
|
7
|
+
but this is a great start.
|
data/Manifest.txt
CHANGED
|
@@ -10,6 +10,7 @@ README.txt
|
|
|
10
10
|
Rakefile
|
|
11
11
|
SPECS
|
|
12
12
|
TODO
|
|
13
|
+
deps.rip
|
|
13
14
|
dm-core.gemspec
|
|
14
15
|
lib/dm-core.rb
|
|
15
16
|
lib/dm-core/adapters.rb
|
|
@@ -17,42 +18,47 @@ lib/dm-core/adapters/abstract_adapter.rb
|
|
|
17
18
|
lib/dm-core/adapters/data_objects_adapter.rb
|
|
18
19
|
lib/dm-core/adapters/in_memory_adapter.rb
|
|
19
20
|
lib/dm-core/adapters/mysql_adapter.rb
|
|
21
|
+
lib/dm-core/adapters/oracle_adapter.rb
|
|
20
22
|
lib/dm-core/adapters/postgres_adapter.rb
|
|
21
23
|
lib/dm-core/adapters/sqlite3_adapter.rb
|
|
22
|
-
lib/dm-core/
|
|
24
|
+
lib/dm-core/adapters/yaml_adapter.rb
|
|
23
25
|
lib/dm-core/associations/many_to_many.rb
|
|
24
26
|
lib/dm-core/associations/many_to_one.rb
|
|
25
27
|
lib/dm-core/associations/one_to_many.rb
|
|
26
28
|
lib/dm-core/associations/one_to_one.rb
|
|
27
29
|
lib/dm-core/associations/relationship.rb
|
|
28
|
-
lib/dm-core/associations/relationship_chain.rb
|
|
29
|
-
lib/dm-core/auto_migrations.rb
|
|
30
30
|
lib/dm-core/collection.rb
|
|
31
|
-
lib/dm-core/
|
|
32
|
-
lib/dm-core/
|
|
31
|
+
lib/dm-core/core_ext/kernel.rb
|
|
32
|
+
lib/dm-core/core_ext/symbol.rb
|
|
33
33
|
lib/dm-core/identity_map.rb
|
|
34
|
-
lib/dm-core/
|
|
35
|
-
lib/dm-core/logger.rb
|
|
36
|
-
lib/dm-core/migrations/destructive_migrations.rb
|
|
37
|
-
lib/dm-core/migrator.rb
|
|
34
|
+
lib/dm-core/migrations.rb
|
|
38
35
|
lib/dm-core/model.rb
|
|
39
|
-
lib/dm-core/
|
|
36
|
+
lib/dm-core/model/descendant_set.rb
|
|
37
|
+
lib/dm-core/model/hook.rb
|
|
38
|
+
lib/dm-core/model/is.rb
|
|
39
|
+
lib/dm-core/model/property.rb
|
|
40
|
+
lib/dm-core/model/relationship.rb
|
|
41
|
+
lib/dm-core/model/scope.rb
|
|
40
42
|
lib/dm-core/property.rb
|
|
41
43
|
lib/dm-core/property_set.rb
|
|
42
44
|
lib/dm-core/query.rb
|
|
45
|
+
lib/dm-core/query/conditions/comparison.rb
|
|
46
|
+
lib/dm-core/query/conditions/operation.rb
|
|
47
|
+
lib/dm-core/query/direction.rb
|
|
48
|
+
lib/dm-core/query/operator.rb
|
|
49
|
+
lib/dm-core/query/path.rb
|
|
50
|
+
lib/dm-core/query/sort.rb
|
|
43
51
|
lib/dm-core/repository.rb
|
|
44
52
|
lib/dm-core/resource.rb
|
|
45
|
-
lib/dm-core/
|
|
46
|
-
lib/dm-core/
|
|
47
|
-
lib/dm-core/support/
|
|
48
|
-
lib/dm-core/support/
|
|
49
|
-
lib/dm-core/support/
|
|
50
|
-
lib/dm-core/support/
|
|
51
|
-
lib/dm-core/support/
|
|
53
|
+
lib/dm-core/spec/adapter_shared_spec.rb
|
|
54
|
+
lib/dm-core/spec/data_objects_adapter_shared_spec.rb
|
|
55
|
+
lib/dm-core/support/chainable.rb
|
|
56
|
+
lib/dm-core/support/deprecate.rb
|
|
57
|
+
lib/dm-core/support/equalizer.rb
|
|
58
|
+
lib/dm-core/support/logger.rb
|
|
59
|
+
lib/dm-core/support/naming_conventions.rb
|
|
52
60
|
lib/dm-core/transaction.rb
|
|
53
61
|
lib/dm-core/type.rb
|
|
54
|
-
lib/dm-core/type_map.rb
|
|
55
|
-
lib/dm-core/types.rb
|
|
56
62
|
lib/dm-core/types/boolean.rb
|
|
57
63
|
lib/dm-core/types/discriminator.rb
|
|
58
64
|
lib/dm-core/types/object.rb
|
|
@@ -61,67 +67,52 @@ lib/dm-core/types/paranoid_datetime.rb
|
|
|
61
67
|
lib/dm-core/types/serial.rb
|
|
62
68
|
lib/dm-core/types/text.rb
|
|
63
69
|
lib/dm-core/version.rb
|
|
64
|
-
script/all
|
|
65
70
|
script/performance.rb
|
|
66
71
|
script/profile.rb
|
|
67
|
-
spec/
|
|
68
|
-
spec/
|
|
69
|
-
spec/
|
|
70
|
-
spec/
|
|
71
|
-
spec/
|
|
72
|
-
spec/
|
|
73
|
-
spec/
|
|
74
|
-
spec/
|
|
75
|
-
spec/
|
|
76
|
-
spec/
|
|
77
|
-
spec/
|
|
78
|
-
spec/
|
|
79
|
-
spec/
|
|
80
|
-
spec/
|
|
81
|
-
spec/
|
|
82
|
-
spec/
|
|
83
|
-
spec/
|
|
84
|
-
spec/
|
|
85
|
-
spec/
|
|
86
|
-
spec/
|
|
87
|
-
spec/
|
|
88
|
-
spec/
|
|
89
|
-
spec/
|
|
90
|
-
spec/
|
|
91
|
-
spec/
|
|
92
|
-
spec/
|
|
93
|
-
spec/
|
|
94
|
-
spec/
|
|
72
|
+
spec/lib/adapter_helpers.rb
|
|
73
|
+
spec/lib/collection_helpers.rb
|
|
74
|
+
spec/lib/counter_adapter.rb
|
|
75
|
+
spec/lib/pending_helpers.rb
|
|
76
|
+
spec/lib/rspec_immediate_feedback_formatter.rb
|
|
77
|
+
spec/public/associations/many_to_many_spec.rb
|
|
78
|
+
spec/public/associations/many_to_one_spec.rb
|
|
79
|
+
spec/public/associations/one_to_many_spec.rb
|
|
80
|
+
spec/public/associations/one_to_one_spec.rb
|
|
81
|
+
spec/public/collection_spec.rb
|
|
82
|
+
spec/public/migrations_spec.rb
|
|
83
|
+
spec/public/model/relationship_spec.rb
|
|
84
|
+
spec/public/model_spec.rb
|
|
85
|
+
spec/public/property_spec.rb
|
|
86
|
+
spec/public/resource_spec.rb
|
|
87
|
+
spec/public/sel_spec.rb
|
|
88
|
+
spec/public/setup_spec.rb
|
|
89
|
+
spec/public/shared/association_collection_shared_spec.rb
|
|
90
|
+
spec/public/shared/collection_shared_spec.rb
|
|
91
|
+
spec/public/shared/finder_shared_spec.rb
|
|
92
|
+
spec/public/shared/resource_shared_spec.rb
|
|
93
|
+
spec/public/shared/sel_shared_spec.rb
|
|
94
|
+
spec/public/transaction_spec.rb
|
|
95
|
+
spec/public/types/discriminator_spec.rb
|
|
96
|
+
spec/semipublic/adapters/abstract_adapter_spec.rb
|
|
97
|
+
spec/semipublic/adapters/in_memory_adapter_spec.rb
|
|
98
|
+
spec/semipublic/adapters/mysql_adapter_spec.rb
|
|
99
|
+
spec/semipublic/adapters/oracle_adapter_spec.rb
|
|
100
|
+
spec/semipublic/adapters/postgres_adapter_spec.rb
|
|
101
|
+
spec/semipublic/adapters/sqlite3_adapter_spec.rb
|
|
102
|
+
spec/semipublic/adapters/yaml_adapter_spec.rb
|
|
103
|
+
spec/semipublic/associations/many_to_one_spec.rb
|
|
104
|
+
spec/semipublic/associations/relationship_spec.rb
|
|
105
|
+
spec/semipublic/associations_spec.rb
|
|
106
|
+
spec/semipublic/collection_spec.rb
|
|
107
|
+
spec/semipublic/property_spec.rb
|
|
108
|
+
spec/semipublic/query/conditions_spec.rb
|
|
109
|
+
spec/semipublic/query/path_spec.rb
|
|
110
|
+
spec/semipublic/query_spec.rb
|
|
111
|
+
spec/semipublic/resource_spec.rb
|
|
112
|
+
spec/semipublic/shared/condition_shared_spec.rb
|
|
113
|
+
spec/semipublic/shared/resource_shared_spec.rb
|
|
95
114
|
spec/spec.opts
|
|
96
115
|
spec/spec_helper.rb
|
|
97
|
-
spec/unit/adapters/abstract_adapter_spec.rb
|
|
98
|
-
spec/unit/adapters/adapter_shared_spec.rb
|
|
99
|
-
spec/unit/adapters/data_objects_adapter_spec.rb
|
|
100
|
-
spec/unit/adapters/in_memory_adapter_spec.rb
|
|
101
|
-
spec/unit/adapters/postgres_adapter_spec.rb
|
|
102
|
-
spec/unit/associations/many_to_many_spec.rb
|
|
103
|
-
spec/unit/associations/many_to_one_spec.rb
|
|
104
|
-
spec/unit/associations/one_to_many_spec.rb
|
|
105
|
-
spec/unit/associations/one_to_one_spec.rb
|
|
106
|
-
spec/unit/associations/relationship_spec.rb
|
|
107
|
-
spec/unit/associations_spec.rb
|
|
108
|
-
spec/unit/auto_migrations_spec.rb
|
|
109
|
-
spec/unit/collection_spec.rb
|
|
110
|
-
spec/unit/data_mapper_spec.rb
|
|
111
|
-
spec/unit/identity_map_spec.rb
|
|
112
|
-
spec/unit/is_spec.rb
|
|
113
|
-
spec/unit/migrator_spec.rb
|
|
114
|
-
spec/unit/model_spec.rb
|
|
115
|
-
spec/unit/naming_conventions_spec.rb
|
|
116
|
-
spec/unit/property_set_spec.rb
|
|
117
|
-
spec/unit/property_spec.rb
|
|
118
|
-
spec/unit/query_spec.rb
|
|
119
|
-
spec/unit/repository_spec.rb
|
|
120
|
-
spec/unit/resource_spec.rb
|
|
121
|
-
spec/unit/scope_spec.rb
|
|
122
|
-
spec/unit/transaction_spec.rb
|
|
123
|
-
spec/unit/type_map_spec.rb
|
|
124
|
-
spec/unit/type_spec.rb
|
|
125
116
|
tasks/ci.rb
|
|
126
117
|
tasks/dm.rb
|
|
127
118
|
tasks/doc.rb
|
data/QUICKLINKS
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* FAQ[link:/files/FAQ.html]
|
|
7
7
|
* Contact Us
|
|
8
8
|
* Website - http://www.datamapper.org
|
|
9
|
-
* Bug Reports - http://
|
|
9
|
+
* Bug Reports - http://datamapper.lighthouseapp.com
|
|
10
10
|
* IRC Channel - <tt>##datamapper</tt> on irc.freenode.net
|
|
11
11
|
* Mailing List - http://groups.google.com/group/datamapper/
|
data/README.txt
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
DataMapper sports a very accessible code-base and a welcoming community.
|
|
9
9
|
Outside contributions and feedback are welcome and encouraged, especially
|
|
10
10
|
constructive criticism. Make your voice heard! Submit a
|
|
11
|
-
ticket[http://
|
|
12
|
-
patch[http://
|
|
11
|
+
ticket[http://datamapper.lighthouseapp.com] or
|
|
12
|
+
patch[http://datamapper.lighthouseapp.com], speak up
|
|
13
13
|
on our mailing-list[http://groups.google.com/group/datamapper/], chat with us
|
|
14
14
|
on irc[irc://irc.freenode.net/#datamapper], write a spec, get it reviewed, ask
|
|
15
15
|
for commit rights. It's as easy as that to become a contributor.
|
|
@@ -21,10 +21,12 @@ Pretty profound impact. If you run the following code in ActiveRecord you'll
|
|
|
21
21
|
see all <tt>false</tt> results. Do the same in DataMapper and it's
|
|
22
22
|
<tt>true</tt> all the way down.
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
repository do
|
|
25
|
+
@parent = Tree.first(:name => 'bob')
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
@parent.children.each do |child|
|
|
28
|
+
puts @parent.object_id == child.parent.object_id
|
|
29
|
+
end
|
|
28
30
|
end
|
|
29
31
|
|
|
30
32
|
This makes DataMapper faster and allocate less resources to get things done.
|
|
@@ -42,9 +44,11 @@ You can also configure which strategy you'd like to use to track dirtiness.
|
|
|
42
44
|
|
|
43
45
|
Ready for something amazing? The following example executes only two queries.
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
47
|
+
repository do
|
|
48
|
+
zoos = Zoo.all
|
|
49
|
+
first = zoos.first
|
|
50
|
+
first.exhibits # Loads the exhibits for all the Zoo objects in the zoos variable.
|
|
51
|
+
end
|
|
48
52
|
|
|
49
53
|
Pretty impressive huh? The idea is that you aren't going to load a set of
|
|
50
54
|
objects and use only an association in just one of them. This should hold up
|
|
@@ -71,6 +75,7 @@ text-fields) by passing a @lazy@ option to your field mapping with a value of
|
|
|
71
75
|
|
|
72
76
|
class Animal
|
|
73
77
|
include DataMapper::Resource
|
|
78
|
+
|
|
74
79
|
property :name, String
|
|
75
80
|
property :notes, Text, :lazy => false
|
|
76
81
|
end
|
|
@@ -79,9 +84,11 @@ Plus, lazy-loading of text fields happens automatically and intelligently when
|
|
|
79
84
|
working with associations. The following only issues 2 queries to load up all
|
|
80
85
|
of the notes fields on each animal:
|
|
81
86
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
pet
|
|
87
|
+
repository do
|
|
88
|
+
animals = Animal.all
|
|
89
|
+
animals.each do |pet|
|
|
90
|
+
pet.notes
|
|
91
|
+
end
|
|
85
92
|
end
|
|
86
93
|
|
|
87
94
|
== Plays Well With Others
|
|
@@ -131,13 +138,12 @@ need other comparisons though? Try these:
|
|
|
131
138
|
Person.all(:name.not => 'bob')
|
|
132
139
|
|
|
133
140
|
# If the value of a pair is an Array, we do an IN-clause for you.
|
|
134
|
-
Person.all(:name.like => 'S%', :id => [1, 2, 3, 4, 5])
|
|
141
|
+
Person.all(:name.like => 'S%', :id => [ 1, 2, 3, 4, 5 ])
|
|
135
142
|
|
|
136
|
-
|
|
137
|
-
Zoo[11]
|
|
143
|
+
Zoo.get(11)
|
|
138
144
|
|
|
139
145
|
# Does a NOT IN () clause for you.
|
|
140
|
-
Person.all(:name.not => ['bob','rick','steve'])
|
|
146
|
+
Person.all(:name.not => [ 'bob', 'rick', 'steve' ])
|
|
141
147
|
|
|
142
148
|
See? Fewer SQL fragments dirtying your Ruby code. And that's just a few of the
|
|
143
149
|
nice syntax tweaks DataMapper delivers out of the box...
|
data/Rakefile
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
1
|
+
#!/usr/bin/env ruby -KU
|
|
2
|
+
|
|
2
3
|
require 'pathname'
|
|
3
4
|
require 'rubygems'
|
|
4
5
|
require 'rake'
|
|
5
6
|
require 'rake/rdoctask'
|
|
6
|
-
require 'spec/rake/spectask'
|
|
7
|
-
|
|
8
|
-
require 'lib/dm-core/version'
|
|
9
7
|
|
|
10
8
|
ROOT = Pathname(__FILE__).dirname.expand_path
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
require ROOT + 'lib/dm-core/version'
|
|
11
|
+
|
|
12
|
+
AUTHOR = 'Dan Kubb'
|
|
13
|
+
EMAIL = 'dan.kubb@gmail.com'
|
|
14
|
+
GEM_NAME = 'dm-core'
|
|
15
|
+
GEM_VERSION = DataMapper::VERSION
|
|
16
|
+
GEM_DEPENDENCIES = [
|
|
17
|
+
%w[ extlib ~>0.9.13 ],
|
|
18
|
+
%w[ addressable ~>2.1 ],
|
|
19
|
+
]
|
|
19
20
|
|
|
20
|
-
PROJECT_NAME
|
|
21
|
-
PROJECT_DESCRIPTION =
|
|
22
|
-
PROJECT_SUMMARY
|
|
23
|
-
PROJECT_URL
|
|
21
|
+
PROJECT_NAME = 'datamapper'
|
|
22
|
+
PROJECT_DESCRIPTION = 'Faster, Better, Simpler.'
|
|
23
|
+
PROJECT_SUMMARY = 'An Object/Relational Mapper for Ruby'
|
|
24
|
+
PROJECT_URL = 'http://datamapper.org'
|
|
24
25
|
|
|
25
26
|
require ROOT + 'tasks/hoe'
|
|
26
27
|
require ROOT + 'tasks/gemspec'
|
data/SPECS
CHANGED
|
@@ -11,7 +11,7 @@ Writing Specs
|
|
|
11
11
|
= DO:
|
|
12
12
|
|
|
13
13
|
* Write more specs for error conditions than clean conditions.
|
|
14
|
-
* Write specs with readability in mind. Somebody
|
|
14
|
+
* Write specs with readability in mind. Somebody new to DataMapper should be
|
|
15
15
|
able to read specs to learn how something works.
|
|
16
16
|
* Use existing models that are part of a metaphor.
|
|
17
17
|
* Nest describe blocks (2 or 3 levels deep is probably fine).
|
|
@@ -29,34 +29,7 @@ Writing Specs
|
|
|
29
29
|
And a final do: Do go against the guidelines if your best judgement tells you
|
|
30
30
|
to. These are just guidelines and are obviously not fast rules.
|
|
31
31
|
|
|
32
|
-
Models
|
|
33
|
-
======
|
|
34
|
-
|
|
35
|
-
Models are declared in separate files as opposed to individual spec files for
|
|
36
|
-
two reasons. The first is to improve readability. By creating as few models
|
|
37
|
-
as possible and sharing these models throughout the specs, a reader can
|
|
38
|
-
become familiar with the models being used quicker. Models also follow a
|
|
39
|
-
few simple metaphors, such as a zoo, a blog implementation, etc... Following
|
|
40
|
-
metaphors makes it easier for a reader to guess what is going on with respect
|
|
41
|
-
to the models.
|
|
42
|
-
|
|
43
|
-
The second reason is to allow the spec environment to be as pristine as
|
|
44
|
-
possible going into an example. Models being loaded from the model directory
|
|
45
|
-
are tracked and reloaded before each example. Any changes that might be made
|
|
46
|
-
to the model are reset at the end.
|
|
47
|
-
|
|
48
32
|
Mocks and Stubs
|
|
49
33
|
===============
|
|
50
34
|
|
|
51
|
-
|
|
52
|
-
however, remember that you are writing specs for behavior and NOT
|
|
53
|
-
implementation.
|
|
54
|
-
|
|
55
|
-
Ordering Specs
|
|
56
|
-
==============
|
|
57
|
-
|
|
58
|
-
Specs aren't much use if nobody can find where anything is, so keeping specs
|
|
59
|
-
well organized is critical. Currently, we are trying out the following
|
|
60
|
-
structure:
|
|
61
|
-
|
|
62
|
-
* List guidelines here...
|
|
35
|
+
Do not use mocks or stubs for any specs in DataMapper.
|
data/TODO
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
See: http://github.com/
|
|
1
|
+
See: http://wiki.github.com/datamapper/dm-core
|
data/dm-core.gemspec
CHANGED
|
@@ -2,39 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{dm-core}
|
|
5
|
-
s.version = "0.
|
|
5
|
+
s.version = "0.10.0"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = ["Dan Kubb"]
|
|
9
|
-
s.date = %q{2009-
|
|
9
|
+
s.date = %q{2009-07-30}
|
|
10
10
|
s.description = %q{Faster, Better, Simpler.}
|
|
11
11
|
s.email = ["dan.kubb@gmail.com"]
|
|
12
12
|
s.extra_rdoc_files = ["History.txt", "Manifest.txt", "README.txt"]
|
|
13
|
-
s.files = [".autotest", ".gitignore", "CONTRIBUTING", "FAQ", "History.txt", "MIT-LICENSE", "Manifest.txt", "QUICKLINKS", "README.txt", "Rakefile", "SPECS", "TODO", "dm-core.gemspec", "lib/dm-core.rb", "lib/dm-core/adapters.rb", "lib/dm-core/adapters/abstract_adapter.rb", "lib/dm-core/adapters/data_objects_adapter.rb", "lib/dm-core/adapters/in_memory_adapter.rb", "lib/dm-core/adapters/mysql_adapter.rb", "lib/dm-core/adapters/postgres_adapter.rb", "lib/dm-core/adapters/sqlite3_adapter.rb", "lib/dm-core/
|
|
14
|
-
s.has_rdoc = true
|
|
13
|
+
s.files = [".autotest", ".gitignore", "CONTRIBUTING", "FAQ", "History.txt", "MIT-LICENSE", "Manifest.txt", "QUICKLINKS", "README.txt", "Rakefile", "SPECS", "TODO", "dm-core.gemspec", "lib/dm-core.rb", "lib/dm-core/adapters.rb", "lib/dm-core/adapters/abstract_adapter.rb", "lib/dm-core/adapters/data_objects_adapter.rb", "lib/dm-core/adapters/in_memory_adapter.rb", "lib/dm-core/adapters/mysql_adapter.rb", "lib/dm-core/adapters/oracle_adapter.rb", "lib/dm-core/adapters/postgres_adapter.rb", "lib/dm-core/adapters/sqlite3_adapter.rb", "lib/dm-core/adapters/yaml_adapter.rb", "lib/dm-core/associations/many_to_many.rb", "lib/dm-core/associations/many_to_one.rb", "lib/dm-core/associations/one_to_many.rb", "lib/dm-core/associations/one_to_one.rb", "lib/dm-core/associations/relationship.rb", "lib/dm-core/collection.rb", "lib/dm-core/core_ext/kernel.rb", "lib/dm-core/core_ext/symbol.rb", "lib/dm-core/identity_map.rb", "lib/dm-core/migrations.rb", "lib/dm-core/model.rb", "lib/dm-core/model/descendant_set.rb", "lib/dm-core/model/hook.rb", "lib/dm-core/model/is.rb", "lib/dm-core/model/property.rb", "lib/dm-core/model/relationship.rb", "lib/dm-core/model/scope.rb", "lib/dm-core/property.rb", "lib/dm-core/property_set.rb", "lib/dm-core/query.rb", "lib/dm-core/query/conditions/comparison.rb", "lib/dm-core/query/conditions/operation.rb", "lib/dm-core/query/direction.rb", "lib/dm-core/query/operator.rb", "lib/dm-core/query/path.rb", "lib/dm-core/query/sort.rb", "lib/dm-core/repository.rb", "lib/dm-core/resource.rb", "lib/dm-core/spec/adapter_shared_spec.rb", "lib/dm-core/spec/data_objects_adapter_shared_spec.rb", "lib/dm-core/support/chainable.rb", "lib/dm-core/support/deprecate.rb", "lib/dm-core/support/equalizer.rb", "lib/dm-core/support/logger.rb", "lib/dm-core/support/naming_conventions.rb", "lib/dm-core/transaction.rb", "lib/dm-core/type.rb", "lib/dm-core/types/boolean.rb", "lib/dm-core/types/discriminator.rb", "lib/dm-core/types/object.rb", "lib/dm-core/types/paranoid_boolean.rb", "lib/dm-core/types/paranoid_datetime.rb", "lib/dm-core/types/serial.rb", "lib/dm-core/types/text.rb", "lib/dm-core/version.rb", "script/performance.rb", "script/profile.rb", "spec/lib/adapter_helpers.rb", "spec/lib/collection_helpers.rb", "spec/lib/counter_adapter.rb", "spec/lib/pending_helpers.rb", "spec/lib/rspec_immediate_feedback_formatter.rb", "spec/public/associations/many_to_many_spec.rb", "spec/public/associations/many_to_one_spec.rb", "spec/public/associations/one_to_many_spec.rb", "spec/public/associations/one_to_one_spec.rb", "spec/public/collection_spec.rb", "spec/public/model/relationship_spec.rb", "spec/public/model_spec.rb", "spec/public/property_spec.rb", "spec/public/resource_spec.rb", "spec/public/sel_spec.rb", "spec/public/setup_spec.rb", "spec/public/shared/association_collection_shared_spec.rb", "spec/public/shared/collection_shared_spec.rb", "spec/public/shared/finder_shared_spec.rb", "spec/public/shared/resource_shared_spec.rb", "spec/public/shared/sel_shared_spec.rb", "spec/public/transaction_spec.rb", "spec/public/types/discriminator_spec.rb", "spec/semipublic/adapters/abstract_adapter_spec.rb", "spec/semipublic/adapters/in_memory_adapter_spec.rb", "spec/semipublic/adapters/mysql_adapter_spec.rb", "spec/semipublic/adapters/oracle_adapter_spec.rb", "spec/semipublic/adapters/postgres_adapter_spec.rb", "spec/semipublic/adapters/sqlite3_adapter_spec.rb", "spec/semipublic/adapters/yaml_adapter_spec.rb", "spec/semipublic/associations/many_to_one_spec.rb", "spec/semipublic/associations/relationship_spec.rb", "spec/semipublic/associations_spec.rb", "spec/semipublic/collection_spec.rb", "spec/semipublic/property_spec.rb", "spec/semipublic/query/conditions_spec.rb", "spec/semipublic/query/path_spec.rb", "spec/semipublic/query_spec.rb", "spec/semipublic/resource_spec.rb", "spec/semipublic/shared/resource_shared_spec.rb", "spec/spec.opts", "spec/spec_helper.rb", "tasks/ci.rb", "tasks/dm.rb", "tasks/doc.rb", "tasks/gemspec.rb", "tasks/hoe.rb", "tasks/install.rb"]
|
|
15
14
|
s.homepage = %q{http://datamapper.org}
|
|
16
15
|
s.rdoc_options = ["--main", "README.txt"]
|
|
17
16
|
s.require_paths = ["lib"]
|
|
18
17
|
s.rubyforge_project = %q{datamapper}
|
|
19
|
-
s.rubygems_version = %q{1.3.
|
|
18
|
+
s.rubygems_version = %q{1.3.5}
|
|
20
19
|
s.summary = %q{An Object/Relational Mapper for Ruby}
|
|
21
20
|
|
|
22
21
|
if s.respond_to? :specification_version then
|
|
23
22
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
24
|
-
s.specification_version =
|
|
23
|
+
s.specification_version = 3
|
|
25
24
|
|
|
26
25
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
27
|
-
s.add_runtime_dependency(%q<
|
|
28
|
-
s.add_runtime_dependency(%q<
|
|
29
|
-
s.add_runtime_dependency(%q<addressable>, ["~> 2.0.1"])
|
|
26
|
+
s.add_runtime_dependency(%q<extlib>, ["~> 0.9.13"])
|
|
27
|
+
s.add_runtime_dependency(%q<addressable>, ["~> 2.0"])
|
|
30
28
|
else
|
|
31
|
-
s.add_dependency(%q<
|
|
32
|
-
s.add_dependency(%q<
|
|
33
|
-
s.add_dependency(%q<addressable>, ["~> 2.0.1"])
|
|
29
|
+
s.add_dependency(%q<extlib>, ["~> 0.9.13"])
|
|
30
|
+
s.add_dependency(%q<addressable>, ["~> 2.0"])
|
|
34
31
|
end
|
|
35
32
|
else
|
|
36
|
-
s.add_dependency(%q<
|
|
37
|
-
s.add_dependency(%q<
|
|
38
|
-
s.add_dependency(%q<addressable>, ["~> 2.0.1"])
|
|
33
|
+
s.add_dependency(%q<extlib>, ["~> 0.9.13"])
|
|
34
|
+
s.add_dependency(%q<addressable>, ["~> 2.0"])
|
|
39
35
|
end
|
|
40
36
|
end
|