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.
Files changed (71) hide show
  1. data/CHANGES +5 -1
  2. data/NOTICE +1 -11
  3. data/README +24 -24
  4. data/README.rdoc +122 -0
  5. data/Rakefile +26 -30
  6. data/TODO +4 -0
  7. data/dm-is-reflective.gemspec +29 -20
  8. data/lib/dm-is-reflective.rb +6 -4
  9. data/lib/dm-is-reflective/is/adapters/{abstract_adapter.rb → data_objects_adapter.rb} +15 -15
  10. data/lib/dm-is-reflective/is/adapters/mysql_adapter.rb +7 -8
  11. data/lib/dm-is-reflective/is/adapters/postgres_adapter.rb +7 -9
  12. data/lib/dm-is-reflective/is/adapters/{sqlite3_adapter.rb → sqlite_adapter.rb} +8 -11
  13. data/lib/dm-is-reflective/is/version.rb +1 -1
  14. data/lib/dm-is-reflective/version.rb +1 -1
  15. data/test/abstract.rb +13 -13
  16. data/test/setup_db.sh +12 -0
  17. data/test/{test_dm-is-reflexible.rb → test_dm-is-reflective.rb} +9 -9
  18. metadata +125 -123
  19. data/.gita/COMMIT_EDITMSG +0 -9
  20. data/.gita/HEAD +0 -1
  21. data/.gita/ORIG_HEAD +0 -1
  22. data/.gita/RENAMED-REF +0 -1
  23. data/.gita/config +0 -9
  24. data/.gita/description +0 -1
  25. data/.gita/gitk.cache +0 -6
  26. data/.gita/hooks/applypatch-msg +0 -15
  27. data/.gita/hooks/commit-msg +0 -24
  28. data/.gita/hooks/post-commit +0 -8
  29. data/.gita/hooks/post-receive +0 -16
  30. data/.gita/hooks/post-update +0 -8
  31. data/.gita/hooks/pre-applypatch +0 -14
  32. data/.gita/hooks/pre-commit +0 -70
  33. data/.gita/hooks/pre-rebase +0 -150
  34. data/.gita/hooks/prepare-commit-msg +0 -36
  35. data/.gita/hooks/update +0 -107
  36. data/.gita/index +0 -0
  37. data/.gita/info/exclude +0 -6
  38. data/.gita/info/refs +0 -26
  39. data/.gita/logs/HEAD +0 -40
  40. data/.gita/logs/refs/heads/dm-mapping +0 -1
  41. data/.gita/logs/refs/heads/master +0 -40
  42. data/.gita/logs/refs/heads/return-symbol +0 -0
  43. data/.gita/logs/refs/remotes/origin/dm-mapping +0 -1
  44. data/.gita/logs/refs/remotes/origin/master +0 -6
  45. data/.gita/logs/refs/remotes/origin/return-symbol +0 -0
  46. data/.gita/objects/5c/91380a1616b7c2d23e14eeb49d9edde58e1f47 +0 -2
  47. data/.gita/objects/63/71947bcb9c0dd1d3b3d6f449b2d4b4c6c81e63 +0 -0
  48. data/.gita/objects/73/23ae22118cc54fb0bbb0d6f51cc99191019b96 +0 -0
  49. data/.gita/objects/81/a0ab6e4dbd148faa0644307b313799027d3344 +0 -2
  50. data/.gita/objects/b2/9571a21e3bccb60079dfca630dac981f623489 +0 -5
  51. data/.gita/objects/cb/138acf9efc0f5b3ff91c644cae4dec868442e4 +0 -5
  52. data/.gita/objects/d5/66699fc7ba5237311cc44648d0cd2abbaa895e +0 -0
  53. data/.gita/objects/info/packs +0 -2
  54. data/.gita/objects/pack/pack-c9156ef3406b98f5f12875b13643df7a5f41e42c.idx +0 -0
  55. data/.gita/objects/pack/pack-c9156ef3406b98f5f12875b13643df7a5f41e42c.pack +0 -0
  56. data/.gita/packed-refs +0 -27
  57. data/.gita/refs/heads/master +0 -1
  58. data/.gita/refs/tags/dm-is-reflective-0.8.0 +0 -1
  59. data/tasks/ann.rake +0 -80
  60. data/tasks/bones.rake +0 -20
  61. data/tasks/gem.rake +0 -201
  62. data/tasks/git.rake +0 -40
  63. data/tasks/notes.rake +0 -27
  64. data/tasks/post_load.rake +0 -34
  65. data/tasks/rdoc.rake +0 -51
  66. data/tasks/rubyforge.rake +0 -55
  67. data/tasks/setup.rb +0 -294
  68. data/tasks/spec.rake +0 -54
  69. data/tasks/svn.rake +0 -47
  70. data/tasks/test.rake +0 -40
  71. data/tasks/zentest.rake +0 -36
data/tasks/git.rake DELETED
@@ -1,40 +0,0 @@
1
-
2
- if HAVE_GIT
3
-
4
- namespace :git do
5
-
6
- # A prerequisites task that all other tasks depend upon
7
- task :prereqs
8
-
9
- desc 'Show tags from the Git repository'
10
- task :show_tags => 'git:prereqs' do |t|
11
- puts %x/git tag/
12
- end
13
-
14
- desc 'Create a new tag in the Git repository'
15
- task :create_tag => 'git:prereqs' do |t|
16
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
17
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
18
-
19
- tag = "%s-%s" % [PROJ.name, PROJ.version]
20
- msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
21
-
22
- puts "Creating Git tag '#{tag}'"
23
- unless system "git tag -a -m '#{msg}' #{tag}"
24
- abort "Tag creation failed"
25
- end
26
-
27
- if %x/git remote/ =~ %r/^origin\s*$/
28
- unless system "git push origin #{tag}"
29
- abort "Could not push tag to remote Git repository"
30
- end
31
- end
32
- end
33
-
34
- end # namespace :git
35
-
36
- task 'gem:release' => 'git:create_tag'
37
-
38
- end # if HAVE_GIT
39
-
40
- # EOF
data/tasks/notes.rake DELETED
@@ -1,27 +0,0 @@
1
-
2
- if HAVE_BONES
3
-
4
- desc "Enumerate all annotations"
5
- task :notes do |t|
6
- id = if t.application.top_level_tasks.length > 1
7
- t.application.top_level_tasks.slice!(1..-1).join(' ')
8
- end
9
- Bones::AnnotationExtractor.enumerate(
10
- PROJ, PROJ.notes.tags.join('|'), id, :tag => true)
11
- end
12
-
13
- namespace :notes do
14
- PROJ.notes.tags.each do |tag|
15
- desc "Enumerate all #{tag} annotations"
16
- task tag.downcase.to_sym do |t|
17
- id = if t.application.top_level_tasks.length > 1
18
- t.application.top_level_tasks.slice!(1..-1).join(' ')
19
- end
20
- Bones::AnnotationExtractor.enumerate(PROJ, tag, id)
21
- end
22
- end
23
- end
24
-
25
- end # if HAVE_BONES
26
-
27
- # EOF
data/tasks/post_load.rake DELETED
@@ -1,34 +0,0 @@
1
-
2
- # This file does not define any rake tasks. It is used to load some project
3
- # settings if they are not defined by the user.
4
-
5
- PROJ.exclude << ["^#{Regexp.escape(PROJ.ann.file)}$",
6
- "^#{Regexp.escape(PROJ.ignore_file)}$",
7
- "^#{Regexp.escape(PROJ.rdoc.dir)}/",
8
- "^#{Regexp.escape(PROJ.rcov.dir)}/"]
9
-
10
- flatten_arrays = lambda do |this,os|
11
- os.instance_variable_get(:@table).each do |key,val|
12
- next if key == :dependencies \
13
- or key == :development_dependencies
14
- case val
15
- when Array; val.flatten!
16
- when OpenStruct; this.call(this,val)
17
- end
18
- end
19
- end
20
- flatten_arrays.call(flatten_arrays,PROJ)
21
-
22
- PROJ.changes ||= paragraphs_of(PROJ.history_file, 0..1).join("\n\n")
23
-
24
- PROJ.description ||= paragraphs_of(PROJ.readme_file, 'description').join("\n\n")
25
-
26
- PROJ.summary ||= PROJ.description.split('.').first
27
-
28
- PROJ.gem.files ||= manifest
29
-
30
- PROJ.gem.executables ||= PROJ.gem.files.find_all {|fn| fn =~ %r/^bin/}
31
-
32
- PROJ.rdoc.main ||= PROJ.readme_file
33
-
34
- # EOF
data/tasks/rdoc.rake DELETED
@@ -1,51 +0,0 @@
1
-
2
- require 'rake/rdoctask'
3
-
4
- namespace :doc do
5
-
6
- desc 'Generate RDoc documentation'
7
- Rake::RDocTask.new do |rd|
8
- rdoc = PROJ.rdoc
9
- rd.main = rdoc.main
10
- rd.rdoc_dir = rdoc.dir
11
-
12
- incl = Regexp.new(rdoc.include.join('|'))
13
- excl = Regexp.new(rdoc.exclude.join('|'))
14
- files = PROJ.gem.files.find_all do |fn|
15
- case fn
16
- when excl; false
17
- when incl; true
18
- else false end
19
- end
20
- rd.rdoc_files.push(*files)
21
-
22
- name = PROJ.name
23
- rf_name = PROJ.rubyforge.name
24
-
25
- title = "#{name}-#{PROJ.version} Documentation"
26
- title = "#{rf_name}'s " + title if rf_name.valid? and rf_name != name
27
-
28
- rd.options << "-t #{title}"
29
- rd.options.concat(rdoc.opts)
30
- end
31
-
32
- desc 'Generate ri locally for testing'
33
- task :ri => :clobber_ri do
34
- sh "#{RDOC} --ri -o ri ."
35
- end
36
-
37
- task :clobber_ri do
38
- rm_r 'ri' rescue nil
39
- end
40
-
41
- end # namespace :doc
42
-
43
- desc 'Alias to doc:rdoc'
44
- task :doc => 'doc:rdoc'
45
-
46
- desc 'Remove all build products'
47
- task :clobber => %w(doc:clobber_rdoc doc:clobber_ri)
48
-
49
- remove_desc_for_task %w(doc:clobber_rdoc)
50
-
51
- # EOF
data/tasks/rubyforge.rake DELETED
@@ -1,55 +0,0 @@
1
-
2
- if PROJ.rubyforge.name.valid? && HAVE_RUBYFORGE
3
-
4
- require 'rubyforge'
5
- require 'rake/contrib/sshpublisher'
6
-
7
- namespace :gem do
8
- desc 'Package and upload to RubyForge'
9
- task :release => [:clobber, 'gem'] do |t|
10
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
11
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
12
- pkg = "pkg/#{PROJ.gem._spec.full_name}"
13
-
14
- if $DEBUG then
15
- puts "release_id = rf.add_release #{PROJ.rubyforge.name.inspect}, #{PROJ.name.inspect}, #{PROJ.version.inspect}, \"#{pkg}.tgz\""
16
- puts "rf.add_file #{PROJ.rubyforge.name.inspect}, #{PROJ.name.inspect}, release_id, \"#{pkg}.gem\""
17
- end
18
-
19
- rf = RubyForge.new
20
- rf.configure rescue nil
21
- puts 'Logging in'
22
- rf.login
23
-
24
- c = rf.userconfig
25
- c['release_notes'] = PROJ.description if PROJ.description
26
- c['release_changes'] = PROJ.changes if PROJ.changes
27
- c['preformatted'] = true
28
-
29
- files = Dir.glob("#{pkg}*.*")
30
-
31
- puts "Releasing #{PROJ.name} v. #{PROJ.version}"
32
- rf.add_release PROJ.rubyforge.name, PROJ.name, PROJ.version, *files
33
- end
34
- end # namespace :gem
35
-
36
-
37
- namespace :doc do
38
- desc "Publish RDoc to RubyForge"
39
- task :release => %w(doc:clobber_rdoc doc:rdoc) do
40
- config = YAML.load(
41
- File.read(File.expand_path('~/.rubyforge/user-config.yml'))
42
- )
43
-
44
- host = "#{config['username']}@rubyforge.org"
45
- remote_dir = "/var/www/gforge-projects/#{PROJ.rubyforge.name}/"
46
- remote_dir << PROJ.rdoc.remote_dir if PROJ.rdoc.remote_dir
47
- local_dir = PROJ.rdoc.dir
48
-
49
- Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
50
- end
51
- end # namespace :doc
52
-
53
- end # if HAVE_RUBYFORGE
54
-
55
- # EOF
data/tasks/setup.rb DELETED
@@ -1,294 +0,0 @@
1
-
2
- require 'rubygems'
3
- require 'rake'
4
- require 'rake/clean'
5
- require 'fileutils'
6
- require 'ostruct'
7
- require 'find'
8
-
9
- class OpenStruct; undef :gem if defined? :gem; end
10
-
11
- # TODO: make my own openstruct type object that includes descriptions
12
- # TODO: use the descriptions to output help on the available bones options
13
-
14
- PROJ = OpenStruct.new(
15
- # Project Defaults
16
- :name => nil,
17
- :summary => nil,
18
- :description => nil,
19
- :changes => nil,
20
- :authors => nil,
21
- :email => nil,
22
- :url => "\000",
23
- :version => ENV['VERSION'] || '0.0.0',
24
- :exclude => %w(tmp$ bak$ ~$ CVS \.svn/ \.git/ ^pkg/),
25
- :include => %w(\A\Z),
26
- :release_name => ENV['RELEASE'],
27
-
28
- # System Defaults
29
- :ruby_opts => %w(-w),
30
- :libs => [],
31
- :history_file => 'History.txt',
32
- :readme_file => 'README.txt',
33
- :ignore_file => '.bnsignore',
34
-
35
- # Announce
36
- :ann => OpenStruct.new(
37
- :file => 'announcement.txt',
38
- :text => nil,
39
- :paragraphs => [],
40
- :email => {
41
- :from => nil,
42
- :to => %w(ruby-talk@ruby-lang.org),
43
- :server => 'localhost',
44
- :port => 25,
45
- :domain => ENV['HOSTNAME'],
46
- :acct => nil,
47
- :passwd => nil,
48
- :authtype => :plain
49
- }
50
- ),
51
-
52
- # Gem Packaging
53
- :gem => OpenStruct.new(
54
- :dependencies => [],
55
- :development_dependencies => [],
56
- :executables => nil,
57
- :extensions => FileList['ext/**/extconf.rb'],
58
- :files => nil,
59
- :need_tar => true,
60
- :need_zip => false,
61
- :extras => {}
62
- ),
63
-
64
- # File Annotations
65
- :notes => OpenStruct.new(
66
- :exclude => %w(^tasks/setup\.rb$),
67
- :extensions => %w(.txt .rb .erb .rdoc) << '',
68
- :tags => %w(FIXME OPTIMIZE TODO)
69
- ),
70
-
71
- # Rcov
72
- :rcov => OpenStruct.new(
73
- :dir => 'coverage',
74
- :opts => %w[--sort coverage -T],
75
- :threshold => 90.0,
76
- :threshold_exact => false
77
- ),
78
-
79
- # Rdoc
80
- :rdoc => OpenStruct.new(
81
- :opts => [],
82
- :include => %w(^lib/ ^bin/ ^ext/ \.txt$ \.rdoc$),
83
- :exclude => %w(extconf\.rb$),
84
- :main => nil,
85
- :dir => 'doc',
86
- :remote_dir => nil
87
- ),
88
-
89
- # Rubyforge
90
- :rubyforge => OpenStruct.new(
91
- :name => "\000"
92
- ),
93
-
94
- # Rspec
95
- :spec => OpenStruct.new(
96
- :files => FileList['spec/**/*_spec.rb'],
97
- :opts => []
98
- ),
99
-
100
- # Subversion Repository
101
- :svn => OpenStruct.new(
102
- :root => nil,
103
- :path => '',
104
- :trunk => 'trunk',
105
- :tags => 'tags',
106
- :branches => 'branches'
107
- ),
108
-
109
- # Test::Unit
110
- :test => OpenStruct.new(
111
- :files => FileList['test/**/test_*.rb'],
112
- :file => 'test/all.rb',
113
- :opts => []
114
- )
115
- )
116
-
117
- # Load the other rake files in the tasks folder
118
- tasks_dir = File.expand_path(File.dirname(__FILE__))
119
- post_load_fn = File.join(tasks_dir, 'post_load.rake')
120
- rakefiles = Dir.glob(File.join(tasks_dir, '*.rake')).sort
121
- rakefiles.unshift(rakefiles.delete(post_load_fn)).compact!
122
- import(*rakefiles)
123
-
124
- # Setup the project libraries
125
- %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
126
-
127
- # Setup some constants
128
- DEV_NULL = File.exist?('/dev/null') ? '/dev/null' : 'NUL:'
129
-
130
- def quiet( &block )
131
- io = [STDOUT.dup, STDERR.dup]
132
- STDOUT.reopen DEV_NULL
133
- STDERR.reopen DEV_NULL
134
- block.call
135
- ensure
136
- STDOUT.reopen io.first
137
- STDERR.reopen io.last
138
- $stdout, $stderr = STDOUT, STDERR
139
- end
140
-
141
- DIFF = if system("gdiff '#{__FILE__}' '#{__FILE__}' > #{DEV_NULL} 2>&1") then 'gdiff'
142
- else 'diff' end unless defined? DIFF
143
-
144
- SUDO = if system("which sudo > #{DEV_NULL} 2>&1") then 'sudo'
145
- else '' end unless defined? SUDO
146
-
147
- RCOV = "#{RUBY} -S rcov"
148
- RDOC = "#{RUBY} -S rdoc"
149
- GEM = "#{RUBY} -S gem"
150
-
151
- %w(rcov spec/rake/spectask rubyforge bones facets/ansicode zentest).each do |lib|
152
- begin
153
- require lib
154
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", true}
155
- rescue LoadError
156
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", false}
157
- end
158
- end
159
- HAVE_SVN = (Dir.entries(Dir.pwd).include?('.svn') and
160
- system("svn --version 2>&1 > #{DEV_NULL}"))
161
- HAVE_GIT = (Dir.entries(Dir.pwd).include?('.git') and
162
- system("git --version 2>&1 > #{DEV_NULL}"))
163
-
164
- # Add bones as a development dependency
165
- #
166
- if HAVE_BONES
167
- PROJ.gem.development_dependencies << ['bones', ">= #{Bones::VERSION}"]
168
- end
169
-
170
- # Reads a file at +path+ and spits out an array of the +paragraphs+
171
- # specified.
172
- #
173
- # changes = paragraphs_of('History.txt', 0..1).join("\n\n")
174
- # summary, *description = paragraphs_of('README.txt', 3, 3..8)
175
- #
176
- def paragraphs_of( path, *paragraphs )
177
- title = String === paragraphs.first ? paragraphs.shift : nil
178
- ary = File.read(path).delete("\r").split(/\n\n+/)
179
-
180
- result = if title
181
- tmp, matching = [], false
182
- rgxp = %r/^=+\s*#{Regexp.escape(title)}/i
183
- paragraphs << (0..-1) if paragraphs.empty?
184
-
185
- ary.each do |val|
186
- if val =~ rgxp
187
- break if matching
188
- matching = true
189
- rgxp = %r/^=+/i
190
- elsif matching
191
- tmp << val
192
- end
193
- end
194
- tmp
195
- else ary end
196
-
197
- result.values_at(*paragraphs)
198
- end
199
-
200
- # Adds the given gem _name_ to the current project's dependency list. An
201
- # optional gem _version_ can be given. If omitted, the newest gem version
202
- # will be used.
203
- #
204
- def depend_on( name, version = nil )
205
- spec = Gem.source_index.find_name(name).last
206
- version = spec.version.to_s if version.nil? and !spec.nil?
207
-
208
- PROJ.gem.dependencies << case version
209
- when nil; [name]
210
- when %r/^\d/; [name, ">= #{version}"]
211
- else [name, version] end
212
- end
213
-
214
- # Adds the given arguments to the include path if they are not already there
215
- #
216
- def ensure_in_path( *args )
217
- args.each do |path|
218
- path = File.expand_path(path)
219
- $:.unshift(path) if test(?d, path) and not $:.include?(path)
220
- end
221
- end
222
-
223
- # Find a rake task using the task name and remove any description text. This
224
- # will prevent the task from being displayed in the list of available tasks.
225
- #
226
- def remove_desc_for_task( names )
227
- Array(names).each do |task_name|
228
- task = Rake.application.tasks.find {|t| t.name == task_name}
229
- next if task.nil?
230
- task.instance_variable_set :@comment, nil
231
- end
232
- end
233
-
234
- # Change working directories to _dir_, call the _block_ of code, and then
235
- # change back to the original working directory (the current directory when
236
- # this method was called).
237
- #
238
- def in_directory( dir, &block )
239
- curdir = pwd
240
- begin
241
- cd dir
242
- return block.call
243
- ensure
244
- cd curdir
245
- end
246
- end
247
-
248
- # Scans the current working directory and creates a list of files that are
249
- # candidates to be in the manifest.
250
- #
251
- def manifest
252
- files = []
253
- exclude = PROJ.exclude.dup
254
- comment = %r/^\s*#/
255
-
256
- # process the ignore file and add the items there to the exclude list
257
- if test(?f, PROJ.ignore_file)
258
- ary = []
259
- File.readlines(PROJ.ignore_file).each do |line|
260
- next if line =~ comment
261
- line.chomp!
262
- line.strip!
263
- next if line.nil? or line.empty?
264
-
265
- glob = line =~ %r/\*\./ ? File.join('**', line) : line
266
- Dir.glob(glob).each {|fn| ary << "^#{Regexp.escape(fn)}"}
267
- end
268
- exclude.concat ary
269
- end
270
-
271
- # generate a regular expression from the exclude list
272
- exclude = Regexp.new(exclude.join('|'))
273
- include = Regexp.new(PROJ.include.join('|'))
274
-
275
- Find.find '.' do |path|
276
- path.sub! %r/^(\.\/|\/)/o, ''
277
- next unless test ?f, path
278
- next if path =~ exclude && path !~ include
279
- files << path
280
- end
281
- files.sort!
282
- end
283
-
284
- # We need a "valid" method thtat determines if a string is suitable for use
285
- # in the gem specification.
286
- #
287
- class Object
288
- def valid?
289
- return !(self.empty? or self == "\000") if self.respond_to?(:to_str)
290
- return false
291
- end
292
- end
293
-
294
- # EOF