dm-is-reflective 0.8.0 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +5 -1
- data/NOTICE +1 -11
- data/README +24 -24
- data/README.rdoc +122 -0
- data/Rakefile +26 -30
- data/TODO +4 -0
- data/dm-is-reflective.gemspec +29 -20
- data/lib/dm-is-reflective.rb +6 -4
- data/lib/dm-is-reflective/is/adapters/{abstract_adapter.rb → data_objects_adapter.rb} +15 -15
- data/lib/dm-is-reflective/is/adapters/mysql_adapter.rb +7 -8
- data/lib/dm-is-reflective/is/adapters/postgres_adapter.rb +7 -9
- data/lib/dm-is-reflective/is/adapters/{sqlite3_adapter.rb → sqlite_adapter.rb} +8 -11
- data/lib/dm-is-reflective/is/version.rb +1 -1
- data/lib/dm-is-reflective/version.rb +1 -1
- data/test/abstract.rb +13 -13
- data/test/setup_db.sh +12 -0
- data/test/{test_dm-is-reflexible.rb → test_dm-is-reflective.rb} +9 -9
- metadata +125 -123
- data/.gita/COMMIT_EDITMSG +0 -9
- data/.gita/HEAD +0 -1
- data/.gita/ORIG_HEAD +0 -1
- data/.gita/RENAMED-REF +0 -1
- data/.gita/config +0 -9
- data/.gita/description +0 -1
- data/.gita/gitk.cache +0 -6
- data/.gita/hooks/applypatch-msg +0 -15
- data/.gita/hooks/commit-msg +0 -24
- data/.gita/hooks/post-commit +0 -8
- data/.gita/hooks/post-receive +0 -16
- data/.gita/hooks/post-update +0 -8
- data/.gita/hooks/pre-applypatch +0 -14
- data/.gita/hooks/pre-commit +0 -70
- data/.gita/hooks/pre-rebase +0 -150
- data/.gita/hooks/prepare-commit-msg +0 -36
- data/.gita/hooks/update +0 -107
- data/.gita/index +0 -0
- data/.gita/info/exclude +0 -6
- data/.gita/info/refs +0 -26
- data/.gita/logs/HEAD +0 -40
- data/.gita/logs/refs/heads/dm-mapping +0 -1
- data/.gita/logs/refs/heads/master +0 -40
- data/.gita/logs/refs/heads/return-symbol +0 -0
- data/.gita/logs/refs/remotes/origin/dm-mapping +0 -1
- data/.gita/logs/refs/remotes/origin/master +0 -6
- data/.gita/logs/refs/remotes/origin/return-symbol +0 -0
- data/.gita/objects/5c/91380a1616b7c2d23e14eeb49d9edde58e1f47 +0 -2
- data/.gita/objects/63/71947bcb9c0dd1d3b3d6f449b2d4b4c6c81e63 +0 -0
- data/.gita/objects/73/23ae22118cc54fb0bbb0d6f51cc99191019b96 +0 -0
- data/.gita/objects/81/a0ab6e4dbd148faa0644307b313799027d3344 +0 -2
- data/.gita/objects/b2/9571a21e3bccb60079dfca630dac981f623489 +0 -5
- data/.gita/objects/cb/138acf9efc0f5b3ff91c644cae4dec868442e4 +0 -5
- data/.gita/objects/d5/66699fc7ba5237311cc44648d0cd2abbaa895e +0 -0
- data/.gita/objects/info/packs +0 -2
- data/.gita/objects/pack/pack-c9156ef3406b98f5f12875b13643df7a5f41e42c.idx +0 -0
- data/.gita/objects/pack/pack-c9156ef3406b98f5f12875b13643df7a5f41e42c.pack +0 -0
- data/.gita/packed-refs +0 -27
- data/.gita/refs/heads/master +0 -1
- data/.gita/refs/tags/dm-is-reflective-0.8.0 +0 -1
- data/tasks/ann.rake +0 -80
- data/tasks/bones.rake +0 -20
- data/tasks/gem.rake +0 -201
- data/tasks/git.rake +0 -40
- data/tasks/notes.rake +0 -27
- data/tasks/post_load.rake +0 -34
- data/tasks/rdoc.rake +0 -51
- data/tasks/rubyforge.rake +0 -55
- data/tasks/setup.rb +0 -294
- data/tasks/spec.rake +0 -54
- data/tasks/svn.rake +0 -47
- data/tasks/test.rake +0 -40
- data/tasks/zentest.rake +0 -36
data/CHANGES
CHANGED
@@ -1,4 +1,8 @@
|
|
1
|
-
= dm-
|
1
|
+
= dm-is-reflective changes history
|
2
|
+
|
3
|
+
=== dm-is-reflective 0.9.0, 2010-07-05
|
4
|
+
* adapted to dm-core 1.0.0
|
5
|
+
* reanmed AbstractAdapter to DataObjectsAdapter
|
2
6
|
|
3
7
|
=== dm-is-reflective 0.8.0, 2009-09-16
|
4
8
|
* require dm-core 0.10.0 and above now
|
data/NOTICE
CHANGED
@@ -1,16 +1,12 @@
|
|
1
1
|
= notice and thanks
|
2
2
|
|
3
3
|
* dm-is-reflective is a plugin of DataMapper
|
4
|
-
>
|
4
|
+
> gem install dm-core
|
5
5
|
http://datamapper.org
|
6
6
|
|
7
7
|
* this project skeleton is built through Mr Bones
|
8
8
|
http://codeforpeople.rubyforge.org/bones/
|
9
9
|
|
10
|
-
* thanks to Rails team with ActiveRecord, it's inspiring.
|
11
|
-
and some SQL snippets are borrowed from it.
|
12
|
-
http://rubyonrails.org
|
13
|
-
|
14
10
|
* Ruby the great language
|
15
11
|
http://www.ruby-lang.org
|
16
12
|
|
@@ -20,11 +16,5 @@
|
|
20
16
|
* Rake the great task automation
|
21
17
|
http://rake.rubyforge.org
|
22
18
|
|
23
|
-
* Facets the great ruby library collection
|
24
|
-
http://facets.rubyforge.org/
|
25
|
-
|
26
|
-
* Rubyforge for distributing ruby gems
|
27
|
-
http://rubyforge.org
|
28
|
-
|
29
19
|
* Github for hosting git
|
30
20
|
http://github.com
|
data/README
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
= dm-is-reflective 0.
|
1
|
+
= dm-is-reflective 0.9.0
|
2
2
|
by Lin Jen-Shin (aka godfat-真常[http://godfat.org])
|
3
3
|
godfat (XD) godfat.org
|
4
4
|
|
5
5
|
== LINKS:
|
6
6
|
|
7
|
-
*
|
8
|
-
*
|
9
|
-
*
|
7
|
+
* {github}[http://github.com/godfat/dm-is-reflective]
|
8
|
+
* {rubygems}[http://rubygems.org/gems/dm-is-reflective]
|
9
|
+
* {rdoc}[http://rdoc.info/projects/godfat/dm-is-reflective]
|
10
10
|
|
11
11
|
== DESCRIPTION:
|
12
12
|
|
@@ -23,25 +23,25 @@ by Lin Jen-Shin (aka godfat-真常[http://godfat.org])
|
|
23
23
|
is :reflective
|
24
24
|
|
25
25
|
# mapping all, returns an array of properties indicating fields it mapped
|
26
|
-
|
26
|
+
reflect /.*/ # e.g. => [#<Property:#<Class:0x18f89b8>:id>,
|
27
27
|
# #<Property:#<Class:0x18f89b8>:title>,
|
28
28
|
# #<Property:#<Class:0x18f89b8>:body>,
|
29
29
|
# #<Property:#<Class:0x18f89b8>:user_id>]
|
30
30
|
|
31
31
|
# mapping all (with no argument at all)
|
32
|
-
|
32
|
+
reflect
|
33
33
|
|
34
34
|
# mapping for field name ended with _at, and started with salt_
|
35
|
-
|
35
|
+
reflect /_at$/, /^salt_/
|
36
36
|
|
37
37
|
# mapping id and email
|
38
|
-
|
38
|
+
reflect :id, :email
|
39
39
|
|
40
40
|
# mapping all fields with type String, and id
|
41
|
-
|
41
|
+
reflect String, :id
|
42
42
|
|
43
43
|
# mapping login, and all fields with type Integer
|
44
|
-
|
44
|
+
reflect :login, Integer
|
45
45
|
end
|
46
46
|
|
47
47
|
# there's no guarantee of the order in storages array
|
@@ -50,27 +50,27 @@ by Lin Jen-Shin (aka godfat-真常[http://godfat.org])
|
|
50
50
|
|
51
51
|
# there's no guarantee of the order in fields array
|
52
52
|
User.fields
|
53
|
-
# => [[:created_at, DateTime, {:
|
54
|
-
[:email, String, {:
|
53
|
+
# => [[:created_at, DateTime, {:required => false}],
|
54
|
+
[:email, String, {:required => false, :length => 255,
|
55
55
|
:default => 'nospam@nospam.tw'}],
|
56
|
-
[:id, Serial, {:
|
56
|
+
[:id, Serial, {:required => true, :serial => true,
|
57
57
|
:key => true}],
|
58
|
-
[:salt_first, String, {:
|
59
|
-
[:salt_second, String, {:
|
58
|
+
[:salt_first, String, {:required => false, :length => 50}],
|
59
|
+
[:salt_second, String, {:required => false, :length => 50}]]
|
60
60
|
|
61
61
|
dm.fields('users').sort_by{ |field| field.first.to_s } ==
|
62
62
|
User.fields.sort_by{ |field| field.first.to_s }
|
63
63
|
# => true
|
64
64
|
|
65
65
|
dm.storages_and_fields
|
66
|
-
# => {'users' => [[:id, Serial, {:
|
66
|
+
# => {'users' => [[:id, Serial, {:required => true,
|
67
67
|
:serial => true,
|
68
68
|
:key => true}],
|
69
|
-
[:email, String, {:
|
69
|
+
[:email, String, {:required => false,
|
70
70
|
:default => 'nospam@nospam.tw'}],
|
71
|
-
[:created_at, DateTime, {:
|
72
|
-
[:salt_first, String, {:
|
73
|
-
[:salt_second, String, {:
|
71
|
+
[:created_at, DateTime, {:required => false}],
|
72
|
+
[:salt_first, String, {:required => false, :length => 50}],
|
73
|
+
[:salt_second, String, {:required => false, :length => 50}]]}
|
74
74
|
|
75
75
|
# there's no guarantee of the order in returned array
|
76
76
|
dm.auto_genclass!
|
@@ -96,18 +96,18 @@ by Lin Jen-Shin (aka godfat-真常[http://godfat.org])
|
|
96
96
|
|
97
97
|
== REQUIREMENTS:
|
98
98
|
|
99
|
-
* dm-core 0.
|
100
|
-
* at least one
|
99
|
+
* dm-core 1.0.0 or later
|
100
|
+
* at least one dm-*-adapter
|
101
101
|
|
102
102
|
== INSTALL:
|
103
103
|
|
104
|
-
>
|
104
|
+
> gem install dm-is-reflective
|
105
105
|
|
106
106
|
== LICENSE:
|
107
107
|
|
108
108
|
Apache License 2.0
|
109
109
|
|
110
|
-
Copyright (c) 2008, Lin Jen-Shin (aka godfat 真常)
|
110
|
+
Copyright (c) 2008-2010, Lin Jen-Shin (aka godfat 真常)
|
111
111
|
|
112
112
|
Licensed under the Apache License, Version 2.0 (the "License");
|
113
113
|
you may not use this file except in compliance with the License.
|
data/README.rdoc
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
= dm-is-reflective 0.9.0
|
2
|
+
by Lin Jen-Shin (aka godfat-真常[http://godfat.org])
|
3
|
+
godfat (XD) godfat.org
|
4
|
+
|
5
|
+
== LINKS:
|
6
|
+
|
7
|
+
* {github}[http://github.com/godfat/dm-is-reflective]
|
8
|
+
* {rubygems}[http://rubygems.org/gems/dm-is-reflective]
|
9
|
+
* {rdoc}[http://rdoc.info/projects/godfat/dm-is-reflective]
|
10
|
+
|
11
|
+
== DESCRIPTION:
|
12
|
+
|
13
|
+
DataMapper plugin that helps you manipulate an existing database.
|
14
|
+
It creates mappings between existing columns and model's properties.
|
15
|
+
|
16
|
+
== SYNOPSIS:
|
17
|
+
|
18
|
+
require 'dm-is-reflective' # this would require 'dm-core'
|
19
|
+
dm = DataMapper.setup :default, 'sqlite3:db/development.sqlite3'
|
20
|
+
|
21
|
+
class User
|
22
|
+
include DataMapper::Resource
|
23
|
+
is :reflective
|
24
|
+
|
25
|
+
# mapping all, returns an array of properties indicating fields it mapped
|
26
|
+
reflect /.*/ # e.g. => [#<Property:#<Class:0x18f89b8>:id>,
|
27
|
+
# #<Property:#<Class:0x18f89b8>:title>,
|
28
|
+
# #<Property:#<Class:0x18f89b8>:body>,
|
29
|
+
# #<Property:#<Class:0x18f89b8>:user_id>]
|
30
|
+
|
31
|
+
# mapping all (with no argument at all)
|
32
|
+
reflect
|
33
|
+
|
34
|
+
# mapping for field name ended with _at, and started with salt_
|
35
|
+
reflect /_at$/, /^salt_/
|
36
|
+
|
37
|
+
# mapping id and email
|
38
|
+
reflect :id, :email
|
39
|
+
|
40
|
+
# mapping all fields with type String, and id
|
41
|
+
reflect String, :id
|
42
|
+
|
43
|
+
# mapping login, and all fields with type Integer
|
44
|
+
reflect :login, Integer
|
45
|
+
end
|
46
|
+
|
47
|
+
# there's no guarantee of the order in storages array
|
48
|
+
dm.storages
|
49
|
+
# => ['users']
|
50
|
+
|
51
|
+
# there's no guarantee of the order in fields array
|
52
|
+
User.fields
|
53
|
+
# => [[:created_at, DateTime, {:required => false}],
|
54
|
+
[:email, String, {:required => false, :length => 255,
|
55
|
+
:default => 'nospam@nospam.tw'}],
|
56
|
+
[:id, Serial, {:required => true, :serial => true,
|
57
|
+
:key => true}],
|
58
|
+
[:salt_first, String, {:required => false, :length => 50}],
|
59
|
+
[:salt_second, String, {:required => false, :length => 50}]]
|
60
|
+
|
61
|
+
dm.fields('users').sort_by{ |field| field.first.to_s } ==
|
62
|
+
User.fields.sort_by{ |field| field.first.to_s }
|
63
|
+
# => true
|
64
|
+
|
65
|
+
dm.storages_and_fields
|
66
|
+
# => {'users' => [[:id, Serial, {:required => true,
|
67
|
+
:serial => true,
|
68
|
+
:key => true}],
|
69
|
+
[:email, String, {:required => false,
|
70
|
+
:default => 'nospam@nospam.tw'}],
|
71
|
+
[:created_at, DateTime, {:required => false}],
|
72
|
+
[:salt_first, String, {:required => false, :length => 50}],
|
73
|
+
[:salt_second, String, {:required => false, :length => 50}]]}
|
74
|
+
|
75
|
+
# there's no guarantee of the order in returned array
|
76
|
+
dm.auto_genclass!
|
77
|
+
# => [DataMapper::Is::Reflective::User,
|
78
|
+
DataMapper::Is::Reflective::SchemaInfo,
|
79
|
+
DataMapper::Is::Reflective::Session]
|
80
|
+
|
81
|
+
# you can change the scope of generated models:
|
82
|
+
dm.auto_genclass! :scope => Object
|
83
|
+
# => [User, SchemaInfo, Session]
|
84
|
+
|
85
|
+
# you can generate classes for tables you specified only:
|
86
|
+
dm.auto_genclass! :scope => Object, :storages => /^phpbb_/
|
87
|
+
# => [PhpbbUser, PhpbbPost, PhpbbConfig]
|
88
|
+
|
89
|
+
# you can generate classes with String too:
|
90
|
+
dm.auto_genclass! :storages => ['users', 'config'], :scope => Object
|
91
|
+
# => [User, Config]
|
92
|
+
|
93
|
+
# you can generate a class only:
|
94
|
+
dm.auto_genclass! :storages => 'users'
|
95
|
+
# => [DataMapper::Is::Reflective::User]
|
96
|
+
|
97
|
+
== REQUIREMENTS:
|
98
|
+
|
99
|
+
* dm-core 1.0.0 or later
|
100
|
+
* at least one dm-*-adapter
|
101
|
+
|
102
|
+
== INSTALL:
|
103
|
+
|
104
|
+
> gem install dm-is-reflective
|
105
|
+
|
106
|
+
== LICENSE:
|
107
|
+
|
108
|
+
Apache License 2.0
|
109
|
+
|
110
|
+
Copyright (c) 2008-2010, Lin Jen-Shin (aka godfat 真常)
|
111
|
+
|
112
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
113
|
+
you may not use this file except in compliance with the License.
|
114
|
+
You may obtain a copy of the License at
|
115
|
+
|
116
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
117
|
+
|
118
|
+
Unless required by applicable law or agreed to in writing, software
|
119
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
120
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
121
|
+
See the License for the specific language governing permissions and
|
122
|
+
limitations under the License.
|
data/Rakefile
CHANGED
@@ -1,41 +1,37 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
PROJ.email = 'godfat (XD) godfat.org'
|
9
|
-
PROJ.url = "http://github.com/godfat/#{PROJ.name}"
|
10
|
-
PROJ.rubyforge.name = 'ludy'
|
11
|
-
|
12
|
-
PROJ.gem.dependencies << ['dm-core', '>=0.10.0'] << ['extlib', '>=0.9.13']
|
13
|
-
# PROJ.gem.development_dependencies << ['minitest', '>=1.3.0']
|
14
|
-
# PROJ.gem.executables = ["bin/#{PROJ.name}"]
|
15
|
-
|
16
|
-
PROJ.ruby_opts.delete '-w' # too many warnings in addressable, dm-core, extlib...
|
3
|
+
begin
|
4
|
+
require 'bones'
|
5
|
+
rescue LoadError
|
6
|
+
abort '### Please install the "bones" gem ###'
|
7
|
+
end
|
17
8
|
|
18
|
-
|
19
|
-
|
20
|
-
|
9
|
+
ensure_in_path 'lib'
|
10
|
+
proj = 'dm-is-reflective'
|
11
|
+
require "#{proj}/version"
|
21
12
|
|
22
|
-
|
23
|
-
|
13
|
+
Bones{
|
14
|
+
version DataMapper::Is::Reflective::VERSION
|
24
15
|
|
25
|
-
|
16
|
+
ruby_opts [''] # silence warning, too many in addressable and/or dm-core
|
17
|
+
depend_on 'dm-core' , :version => '>=1.0.0'
|
18
|
+
depend_on 'dm-do-adapter', :version => '>=1.0.0'
|
26
19
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
# PROJ.rdoc.opts << '--diagram' if !Rake::WIN32 and `which dot` =~ %r/\/dot/
|
32
|
-
PROJ.rdoc.opts += ['--charset=utf-8', '--inline-source',
|
33
|
-
'--line-numbers', '--promiscuous']
|
20
|
+
%w[dm-migrations dm-sqlite-adapter
|
21
|
+
dm-mysql-adapter dm-postgres-adapter].each{ |lib|
|
22
|
+
depend_on lib, :development => true, :version => '>=1.0.0'
|
23
|
+
}
|
34
24
|
|
35
|
-
|
25
|
+
name proj
|
26
|
+
url "http://github.com/godfat/#{proj}"
|
27
|
+
authors 'Lin Jen-Shin (aka godfat 真常)'
|
28
|
+
email 'godfat (XD) godfat.org'
|
36
29
|
|
37
|
-
|
38
|
-
|
30
|
+
history_file 'CHANGES'
|
31
|
+
readme_file 'README'
|
32
|
+
ignore_file '.gitignore'
|
33
|
+
rdoc.include ['\w+']
|
34
|
+
}
|
39
35
|
|
40
36
|
CLEAN.include Dir['**/*.rbc']
|
41
37
|
|
data/TODO
CHANGED
data/dm-is-reflective.gemspec
CHANGED
@@ -2,40 +2,49 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{dm-is-reflective}
|
5
|
-
s.version = "0.
|
5
|
+
s.version = "0.9.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
|
-
s.authors = ["Lin Jen-Shin (aka godfat
|
9
|
-
s.date = %q{
|
8
|
+
s.authors = ["Lin Jen-Shin (aka godfat 真常)"]
|
9
|
+
s.date = %q{2010-07-05}
|
10
10
|
s.description = %q{ DataMapper plugin that helps you manipulate an existing database.
|
11
11
|
It creates mappings between existing columns and model's properties.}
|
12
12
|
s.email = %q{godfat (XD) godfat.org}
|
13
|
-
s.extra_rdoc_files = ["CHANGES", "LICENSE", "NOTICE", "README", "TODO"]
|
14
|
-
s.files = ["CHANGES", "LICENSE", "NOTICE", "README", "Rakefile", "TODO", "lib/dm-is-reflective.rb", "lib/dm-is-reflective/is/adapters/abstract_adapter.rb", "lib/dm-is-reflective/is/adapters/mysql_adapter.rb", "lib/dm-is-reflective/is/adapters/postgres_adapter.rb", "lib/dm-is-reflective/is/adapters/
|
13
|
+
s.extra_rdoc_files = ["CHANGES", "LICENSE", "NOTICE", "README", "Rakefile", "TODO", "dm-is-reflective.gemspec", "test/setup_db.sh"]
|
14
|
+
s.files = ["CHANGES", "LICENSE", "NOTICE", "README", "Rakefile", "TODO", "dm-is-reflective.gemspec", "lib/dm-is-reflective.rb", "lib/dm-is-reflective/is/adapters/abstract_adapter.rb", "lib/dm-is-reflective/is/adapters/data_objects_adapter.rb", "lib/dm-is-reflective/is/adapters/mysql_adapter.rb", "lib/dm-is-reflective/is/adapters/postgres_adapter.rb", "lib/dm-is-reflective/is/adapters/sqlite_adapter.rb", "lib/dm-is-reflective/is/reflective.rb", "lib/dm-is-reflective/is/version.rb", "lib/dm-is-reflective/version.rb", "test/abstract.rb", "test/setup_db.sh", "test/test_dm-is-reflective.rb"]
|
15
15
|
s.homepage = %q{http://github.com/godfat/dm-is-reflective}
|
16
|
-
s.rdoc_options = ["--
|
16
|
+
s.rdoc_options = ["--main", "README"]
|
17
17
|
s.require_paths = ["lib"]
|
18
|
-
s.rubyforge_project = %q{
|
19
|
-
s.rubygems_version = %q{1.3.
|
20
|
-
s.summary = %q{DataMapper plugin that helps you manipulate an existing database
|
21
|
-
s.test_files = ["test/test_dm-is-
|
18
|
+
s.rubyforge_project = %q{dm-is-reflective}
|
19
|
+
s.rubygems_version = %q{1.3.7}
|
20
|
+
s.summary = %q{DataMapper plugin that helps you manipulate an existing database}
|
21
|
+
s.test_files = ["test/test_dm-is-reflective.rb"]
|
22
22
|
|
23
23
|
if s.respond_to? :specification_version then
|
24
24
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
25
|
s.specification_version = 3
|
26
26
|
|
27
|
-
if Gem::Version.new(Gem::
|
28
|
-
s.add_runtime_dependency(%q<dm-core>, [">= 0.
|
29
|
-
s.
|
30
|
-
s.add_development_dependency(%q<
|
27
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
28
|
+
s.add_runtime_dependency(%q<dm-core>, [">= 1.0.0"])
|
29
|
+
s.add_development_dependency(%q<dm-migrations>, [">= 1.0.0"])
|
30
|
+
s.add_development_dependency(%q<dm-sqlite-adapter>, [">= 1.0.0"])
|
31
|
+
s.add_development_dependency(%q<dm-mysql-adapter>, [">= 1.0.0"])
|
32
|
+
s.add_development_dependency(%q<dm-postgres-adapter>, [">= 1.0.0"])
|
33
|
+
s.add_development_dependency(%q<bones>, [">= 3.4.7"])
|
31
34
|
else
|
32
|
-
s.add_dependency(%q<dm-core>, [">= 0.
|
33
|
-
s.add_dependency(%q<
|
34
|
-
s.add_dependency(%q<
|
35
|
+
s.add_dependency(%q<dm-core>, [">= 1.0.0"])
|
36
|
+
s.add_dependency(%q<dm-migrations>, [">= 1.0.0"])
|
37
|
+
s.add_dependency(%q<dm-sqlite-adapter>, [">= 1.0.0"])
|
38
|
+
s.add_dependency(%q<dm-mysql-adapter>, [">= 1.0.0"])
|
39
|
+
s.add_dependency(%q<dm-postgres-adapter>, [">= 1.0.0"])
|
40
|
+
s.add_dependency(%q<bones>, [">= 3.4.7"])
|
35
41
|
end
|
36
42
|
else
|
37
|
-
s.add_dependency(%q<dm-core>, [">= 0.
|
38
|
-
s.add_dependency(%q<
|
39
|
-
s.add_dependency(%q<
|
43
|
+
s.add_dependency(%q<dm-core>, [">= 1.0.0"])
|
44
|
+
s.add_dependency(%q<dm-migrations>, [">= 1.0.0"])
|
45
|
+
s.add_dependency(%q<dm-sqlite-adapter>, [">= 1.0.0"])
|
46
|
+
s.add_dependency(%q<dm-mysql-adapter>, [">= 1.0.0"])
|
47
|
+
s.add_dependency(%q<dm-postgres-adapter>, [">= 1.0.0"])
|
48
|
+
s.add_dependency(%q<bones>, [">= 3.4.7"])
|
40
49
|
end
|
41
50
|
end
|
data/lib/dm-is-reflective.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
|
2
|
-
gem 'dm-core', '>=0.
|
2
|
+
gem 'dm-core', '>=1.0.0'
|
3
3
|
require 'dm-core'
|
4
|
+
require 'dm-do-adapter'
|
4
5
|
|
5
6
|
require 'dm-is-reflective/is/reflective'
|
7
|
+
require 'dm-is-reflective/is/adapters/data_objects_adapter'
|
8
|
+
|
6
9
|
DataMapper::Model.append_extensions(DataMapper::Is::Reflective)
|
7
10
|
|
8
|
-
|
9
|
-
DataMapper::
|
10
|
-
DataMapper::Is::Reflective::AbstractAdapter)
|
11
|
+
DataMapper::Adapters::DataObjectsAdapter.__send__(:include,
|
12
|
+
DataMapper::Is::Reflective::DataObjectsAdapter)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
|
2
2
|
module DataMapper
|
3
3
|
module Is::Reflective
|
4
|
-
module
|
4
|
+
module DataObjectsAdapter
|
5
5
|
# returns all tables' name in the repository.
|
6
6
|
# e.g.
|
7
7
|
# ['comments', 'users']
|
@@ -12,19 +12,19 @@ module DataMapper
|
|
12
12
|
|
13
13
|
# returns all fields, with format [[name, type, attrs]]
|
14
14
|
# e.g.
|
15
|
-
# [[:created_at, DateTime, {:
|
16
|
-
# [:email, String, {:
|
15
|
+
# [[:created_at, DateTime, {:required => false}],
|
16
|
+
# [:email, String, {:required => false, :size => 255,
|
17
17
|
# :default => 'nospam@nospam.tw'}],
|
18
|
-
# [:id, DataMapper::
|
18
|
+
# [:id, DataMapper::Property::Serial, {:required => true, :serial => true,
|
19
19
|
# :key => true}],
|
20
|
-
# [:salt_first, String, {:
|
21
|
-
# [:salt_second, String, {:
|
20
|
+
# [:salt_first, String, {:required => false, :size => 50}],
|
21
|
+
# [:salt_second, String, {:required => false, :size => 50}]]
|
22
22
|
def fields storage
|
23
23
|
reflective_query_storage(storage).map{ |field|
|
24
24
|
primitive = reflective_primitive(field)
|
25
25
|
|
26
26
|
type = self.class.type_map.find{ |klass, attrs|
|
27
|
-
next false if [
|
27
|
+
next false if [Object, Time].include?(klass)
|
28
28
|
attrs[:primitive] == primitive
|
29
29
|
}
|
30
30
|
type = type ? type.first : reflective_lookup_primitive(primitive)
|
@@ -32,10 +32,10 @@ module DataMapper
|
|
32
32
|
attrs = reflective_attributes(field)
|
33
33
|
|
34
34
|
type = if attrs[:serial] && type == Integer
|
35
|
-
DataMapper::
|
35
|
+
DataMapper::Property::Serial
|
36
36
|
|
37
37
|
elsif type == TrueClass
|
38
|
-
DataMapper::
|
38
|
+
DataMapper::Property::Boolean
|
39
39
|
|
40
40
|
else
|
41
41
|
type
|
@@ -47,15 +47,15 @@ module DataMapper
|
|
47
47
|
|
48
48
|
# returns a hash with storage names in keys and
|
49
49
|
# corresponded fields in values. e.g.
|
50
|
-
# {'users' => [[:id, Integer, {:
|
50
|
+
# {'users' => [[:id, Integer, {:required => true,
|
51
51
|
# :serial => true,
|
52
52
|
# :key => true}],
|
53
|
-
# [:email, String, {:
|
53
|
+
# [:email, String, {:required => false,
|
54
54
|
# :default => 'nospam@nospam.tw'}],
|
55
|
-
# [:created_at, DateTime, {:
|
56
|
-
# [:salt_first, String, {:
|
57
|
-
# [:salt_second, String, {:
|
58
|
-
# see
|
55
|
+
# [:created_at, DateTime, {:required => false}],
|
56
|
+
# [:salt_first, String, {:required => false, :size => 50}],
|
57
|
+
# [:salt_second, String, {:required => false, :size => 50}]]}
|
58
|
+
# see AbstractAdapter#storages and AbstractAdapter#fields for detail
|
59
59
|
def storages_and_fields
|
60
60
|
storages.inject({}){ |result, storage|
|
61
61
|
result[storage] = fields(storage)
|