mack-data_mapper 0.6.0.1 → 0.6.1

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 (71) hide show
  1. data/README +115 -4
  2. data/lib/mack-data_mapper.rb +14 -12
  3. data/lib/{database.rb → mack-data_mapper/database.rb} +0 -0
  4. data/lib/mack-data_mapper/dm_patches/dm-timestamps.rb +6 -0
  5. data/lib/mack-data_mapper/dm_patches/migrations.rb +9 -0
  6. data/lib/{genosaurus_helpers.rb → mack-data_mapper/genosaurus_helpers.rb} +1 -1
  7. data/lib/{helpers → mack-data_mapper/helpers}/orm_helpers.rb +4 -2
  8. data/lib/{migration_generator → mack-data_mapper/migration_generator}/migration_generator.rb +0 -0
  9. data/lib/{migration_generator → mack-data_mapper/migration_generator}/templates/db/migrations/%=@migration_name%.rb.template +0 -0
  10. data/lib/{model_column.rb → mack-data_mapper/model_column.rb} +3 -3
  11. data/lib/{model_generator → mack-data_mapper/model_generator}/manifest.yml +0 -0
  12. data/lib/{model_generator → mack-data_mapper/model_generator}/model_generator.rb +0 -0
  13. data/lib/{model_generator → mack-data_mapper/model_generator}/templates/model.rb.template +0 -0
  14. data/lib/{model_generator → mack-data_mapper/model_generator}/templates/rspec.rb.template +0 -0
  15. data/lib/{model_generator → mack-data_mapper/model_generator}/templates/test_case.rb.template +0 -0
  16. data/lib/{resource.rb → mack-data_mapper/resource.rb} +0 -0
  17. data/lib/{runner.rb → mack-data_mapper/runner.rb} +0 -0
  18. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/manifest.yml +0 -0
  19. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/scaffold_generator.rb +0 -0
  20. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/templates/app/controllers/controller.rb.template +0 -0
  21. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/templates/app/helpers/controllers/helper.rb.template +0 -0
  22. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/templates/app/views/edit.html.erb.template +0 -0
  23. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/templates/app/views/index.html.erb.template +0 -0
  24. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/templates/app/views/new.html.erb.template +0 -0
  25. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/templates/app/views/show.html.erb.template +0 -0
  26. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/templates/test/functional/rspec.rb.template +0 -0
  27. data/lib/{scaffold_generator → mack-data_mapper/scaffold_generator}/templates/test/functional/test_case.rb.template +0 -0
  28. data/lib/{tasks → mack-data_mapper/tasks}/db_create_drop_tasks.rake +0 -0
  29. data/lib/{tasks → mack-data_mapper/tasks}/db_migration_tasks.rake +3 -3
  30. data/lib/{tasks → mack-data_mapper/tasks}/test_tasks.rake +0 -0
  31. data/lib/{test_extensions.rb → mack-data_mapper/test_extensions.rb} +3 -3
  32. data/lib/mack-data_mapper_tasks.rb +1 -1
  33. metadata +103 -69
  34. data/doc/classes/DataMapper/Resource.html +0 -154
  35. data/doc/classes/Mack.html +0 -127
  36. data/doc/classes/Mack/Database.html +0 -210
  37. data/doc/classes/Mack/Genosaurus/DataMapper/Helpers.html +0 -225
  38. data/doc/classes/Mack/Genosaurus/DataMapper/ModelColumn.html +0 -237
  39. data/doc/classes/Mack/Testing/DataMapperHelpers.html +0 -151
  40. data/doc/classes/Mack/Testing/Helpers.html +0 -155
  41. data/doc/classes/Mack/ViewHelpers/DataMapperHelpers.html +0 -279
  42. data/doc/classes/MigrationGenerator.html +0 -161
  43. data/doc/classes/ModelGenerator.html +0 -183
  44. data/doc/classes/ScaffoldGenerator.html +0 -123
  45. data/doc/created.rid +0 -1
  46. data/doc/files/README.html +0 -121
  47. data/doc/files/lib/database_rb.html +0 -101
  48. data/doc/files/lib/dm_patches/confirmation_validation_rb.html +0 -101
  49. data/doc/files/lib/dm_patches/dm-cli_rb.html +0 -108
  50. data/doc/files/lib/dm_patches/migrations_rb.html +0 -101
  51. data/doc/files/lib/dm_patches/pooling_rb.html +0 -109
  52. data/doc/files/lib/genosaurus_helpers_rb.html +0 -101
  53. data/doc/files/lib/helpers/orm_helpers_rb.html +0 -101
  54. data/doc/files/lib/mack-data_mapper_rb.html +0 -110
  55. data/doc/files/lib/mack-data_mapper_tasks_rb.html +0 -101
  56. data/doc/files/lib/migration_generator/migration_generator_rb.html +0 -151
  57. data/doc/files/lib/model_column_rb.html +0 -101
  58. data/doc/files/lib/model_generator/model_generator_rb.html +0 -173
  59. data/doc/files/lib/resource_rb.html +0 -101
  60. data/doc/files/lib/runner_rb.html +0 -101
  61. data/doc/files/lib/scaffold_generator/scaffold_generator_rb.html +0 -114
  62. data/doc/files/lib/test_extensions_rb.html +0 -109
  63. data/doc/fr_class_index.html +0 -37
  64. data/doc/fr_file_index.html +0 -43
  65. data/doc/fr_method_index.html +0 -42
  66. data/doc/index.html +0 -24
  67. data/doc/rdoc-style.css +0 -208
  68. data/lib/dm_patches/confirmation_validation.rb +0 -19
  69. data/lib/dm_patches/dm-cli.rb +0 -1
  70. data/lib/dm_patches/migrations.rb +0 -23
  71. data/lib/dm_patches/pooling.rb +0 -229
@@ -1,24 +0,0 @@
1
- <?xml version="1.0" encoding="iso-8859-1"?>
2
- <!DOCTYPE html
3
- PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
-
6
- <!--
7
-
8
- mack-data_mapper
9
-
10
- -->
11
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
- <head>
13
- <title>mack-data_mapper</title>
14
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
- </head>
16
- <frameset rows="20%, 80%">
17
- <frameset cols="25%,35%,45%">
18
- <frame src="fr_file_index.html" title="Files" name="Files" />
19
- <frame src="fr_class_index.html" name="Classes" />
20
- <frame src="fr_method_index.html" name="Methods" />
21
- </frameset>
22
- <frame src="files/README.html" name="docwin" />
23
- </frameset>
24
- </html>
@@ -1,208 +0,0 @@
1
-
2
- body {
3
- font-family: Verdana,Arial,Helvetica,sans-serif;
4
- font-size: 90%;
5
- margin: 0;
6
- margin-left: 40px;
7
- padding: 0;
8
- background: white;
9
- }
10
-
11
- h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
- h1 { font-size: 150%; }
13
- h2,h3,h4 { margin-top: 1em; }
14
-
15
- a { background: #eef; color: #039; text-decoration: none; }
16
- a:hover { background: #039; color: #eef; }
17
-
18
- /* Override the base stylesheet's Anchor inside a table cell */
19
- td > a {
20
- background: transparent;
21
- color: #039;
22
- text-decoration: none;
23
- }
24
-
25
- /* and inside a section title */
26
- .section-title > a {
27
- background: transparent;
28
- color: #eee;
29
- text-decoration: none;
30
- }
31
-
32
- /* === Structural elements =================================== */
33
-
34
- div#index {
35
- margin: 0;
36
- margin-left: -40px;
37
- padding: 0;
38
- font-size: 90%;
39
- }
40
-
41
-
42
- div#index a {
43
- margin-left: 0.7em;
44
- }
45
-
46
- div#index .section-bar {
47
- margin-left: 0px;
48
- padding-left: 0.7em;
49
- background: #ccc;
50
- font-size: small;
51
- }
52
-
53
-
54
- div#classHeader, div#fileHeader {
55
- width: auto;
56
- color: white;
57
- padding: 0.5em 1.5em 0.5em 1.5em;
58
- margin: 0;
59
- margin-left: -40px;
60
- border-bottom: 3px solid #006;
61
- }
62
-
63
- div#classHeader a, div#fileHeader a {
64
- background: inherit;
65
- color: white;
66
- }
67
-
68
- div#classHeader td, div#fileHeader td {
69
- background: inherit;
70
- color: white;
71
- }
72
-
73
-
74
- div#fileHeader {
75
- background: #057;
76
- }
77
-
78
- div#classHeader {
79
- background: #048;
80
- }
81
-
82
-
83
- .class-name-in-header {
84
- font-size: 180%;
85
- font-weight: bold;
86
- }
87
-
88
-
89
- div#bodyContent {
90
- padding: 0 1.5em 0 1.5em;
91
- }
92
-
93
- div#description {
94
- padding: 0.5em 1.5em;
95
- background: #efefef;
96
- border: 1px dotted #999;
97
- }
98
-
99
- div#description h1,h2,h3,h4,h5,h6 {
100
- color: #125;;
101
- background: transparent;
102
- }
103
-
104
- div#validator-badges {
105
- text-align: center;
106
- }
107
- div#validator-badges img { border: 0; }
108
-
109
- div#copyright {
110
- color: #333;
111
- background: #efefef;
112
- font: 0.75em sans-serif;
113
- margin-top: 5em;
114
- margin-bottom: 0;
115
- padding: 0.5em 2em;
116
- }
117
-
118
-
119
- /* === Classes =================================== */
120
-
121
- table.header-table {
122
- color: white;
123
- font-size: small;
124
- }
125
-
126
- .type-note {
127
- font-size: small;
128
- color: #DEDEDE;
129
- }
130
-
131
- .xxsection-bar {
132
- background: #eee;
133
- color: #333;
134
- padding: 3px;
135
- }
136
-
137
- .section-bar {
138
- color: #333;
139
- border-bottom: 1px solid #999;
140
- margin-left: -20px;
141
- }
142
-
143
-
144
- .section-title {
145
- background: #79a;
146
- color: #eee;
147
- padding: 3px;
148
- margin-top: 2em;
149
- margin-left: -30px;
150
- border: 1px solid #999;
151
- }
152
-
153
- .top-aligned-row { vertical-align: top }
154
- .bottom-aligned-row { vertical-align: bottom }
155
-
156
- /* --- Context section classes ----------------------- */
157
-
158
- .context-row { }
159
- .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
- .context-item-value { font-size: small; color: #448; }
161
- .context-item-desc { color: #333; padding-left: 2em; }
162
-
163
- /* --- Method classes -------------------------- */
164
- .method-detail {
165
- background: #efefef;
166
- padding: 0;
167
- margin-top: 0.5em;
168
- margin-bottom: 1em;
169
- border: 1px dotted #ccc;
170
- }
171
- .method-heading {
172
- color: black;
173
- background: #ccc;
174
- border-bottom: 1px solid #666;
175
- padding: 0.2em 0.5em 0 0.5em;
176
- }
177
- .method-signature { color: black; background: inherit; }
178
- .method-name { font-weight: bold; }
179
- .method-args { font-style: italic; }
180
- .method-description { padding: 0 0.5em 0 0.5em; }
181
-
182
- /* --- Source code sections -------------------- */
183
-
184
- a.source-toggle { font-size: 90%; }
185
- div.method-source-code {
186
- background: #262626;
187
- color: #ffdead;
188
- margin: 1em;
189
- padding: 0.5em;
190
- border: 1px dashed #999;
191
- overflow: hidden;
192
- }
193
-
194
- div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
-
196
- /* --- Ruby keyword styles --------------------- */
197
-
198
- .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
-
200
- .ruby-constant { color: #7fffd4; background: transparent; }
201
- .ruby-keyword { color: #00ffff; background: transparent; }
202
- .ruby-ivar { color: #eedd82; background: transparent; }
203
- .ruby-operator { color: #00ffee; background: transparent; }
204
- .ruby-identifier { color: #ffdead; background: transparent; }
205
- .ruby-node { color: #ffa07a; background: transparent; }
206
- .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
- .ruby-regexp { color: #ffa07a; background: transparent; }
208
- .ruby-value { color: #7fffd4; background: transparent; }
@@ -1,19 +0,0 @@
1
- module DataMapper # :nodoc:
2
- module Validate # :nodoc:
3
-
4
- class ConfirmationValidator < GenericValidator # :nodoc:
5
-
6
- def valid?(target)
7
- field_value = target.instance_variable_get("@#{@field_name}")
8
- return true if @options[:allow_nil] && field_value.nil?
9
- return false if !@options[:allow_nil] && field_value.nil?
10
- return true unless target.attribute_dirty?(@field_name)
11
-
12
- confirm_value = target.instance_variable_get("@#{@confirm_field_name}")
13
- field_value == confirm_value
14
- end
15
-
16
- end # class ConfirmationValidator
17
-
18
- end # module Validate
19
- end # module DataMapper
@@ -1 +0,0 @@
1
- require 'data_mapper/cli'
@@ -1,23 +0,0 @@
1
- module DataMapper # :nodoc:
2
- module MigrationRunner # :nodoc:
3
-
4
- def reset!
5
- @@migrations = []
6
- end
7
-
8
- end
9
- end
10
-
11
- module SQL # :nodoc:
12
- class TableCreator # :nodoc:
13
- class Column # :nodoc:
14
-
15
- def build_type(type_class)
16
- schema = {:name => @name, :quote_column_name => quoted_name}.merge(@opts)
17
- schema = @adapter.class.type_map[type_class].merge(schema)
18
- @adapter.property_schema_statement(schema)
19
- end
20
-
21
- end
22
- end
23
- end
@@ -1,229 +0,0 @@
1
- require 'set'
2
- require 'thread'
3
-
4
- module Extlib # :nodoc:
5
- # ==== Notes
6
- # Provides pooling support to class it got included in.
7
- #
8
- # Pooling of objects is a faster way of aquiring instances
9
- # of objects compared to regular allocation and initialization
10
- # because instances are keeped in memory reused.
11
- #
12
- # Classes that include Pooling module have re-defined new
13
- # method that returns instances acquired from pool.
14
- #
15
- # Term resource is used for any type of poolable objects
16
- # and should NOT be thought as DataMapper Resource or
17
- # ActiveResource resource and such.
18
- #
19
- # In Data Objects connections are pooled so that it is
20
- # unnecessary to allocate and initialize connection object
21
- # each time connection is needed, like per request in a
22
- # web application.
23
- #
24
- # Pool obviously has to be thread safe because state of
25
- # object is reset when it is released.
26
- module Pooling # :nodoc:
27
-
28
- def self.scavenger
29
- @scavenger || begin
30
- @scavenger = Thread.new do
31
- loop do
32
- lock.synchronize do
33
- pools.each do |pool|
34
- # This is a useful check, but non-essential, and right now it breaks lots of stuff.
35
- # if pool.expired?
36
- pool.lock.synchronize do
37
- if pool.reserved_count == 0
38
- pool.dispose
39
- end
40
- end
41
- # end
42
- end
43
- end
44
- sleep(scavenger_interval)
45
- end # loop
46
- end
47
-
48
- @scavenger.priority = -10
49
- @scavenger
50
- end
51
- end
52
-
53
- def self.pools
54
- @pools ||= Set.new
55
- end
56
-
57
- def self.append_pool(pool)
58
- lock.synchronize do
59
- pools << pool
60
- end
61
- Extlib::Pooling::scavenger
62
- end
63
-
64
- def self.lock
65
- @lock ||= Mutex.new
66
- end
67
-
68
- class CrossPoolError < StandardError # :nodoc:
69
- end
70
-
71
- class OrphanedObjectError < StandardError # :nodoc:
72
- end
73
-
74
- class ThreadStopError < StandardError # :nodoc:
75
- end
76
-
77
- def self.included(target)
78
- target.class_eval do
79
- class << self
80
- alias __new new
81
- end
82
-
83
- @__pools = Hash.new { |h,k| __pool_lock.synchronize { h[k] = Pool.new(target.pool_size, target, k) } }
84
- @__pool_lock = Mutex.new
85
-
86
- def self.__pool_lock
87
- @__pool_lock
88
- end
89
-
90
- def self.new(*args)
91
- @__pools[args].new
92
- end
93
-
94
- def self.__pools
95
- @__pools
96
- end
97
-
98
- def self.pool_size
99
- 8
100
- end
101
- end
102
- end
103
-
104
- def release
105
- @__pool.release(self)
106
- end
107
-
108
- class Pool # :nodoc:
109
- def initialize(max_size, resource, args)
110
- raise ArgumentError.new("+max_size+ should be a Fixnum but was #{max_size.inspect}") unless Fixnum === max_size
111
- raise ArgumentError.new("+resource+ should be a Class but was #{resource.inspect}") unless Class === resource
112
-
113
- @max_size = max_size
114
- @resource = resource
115
- @args = args
116
-
117
- @available = []
118
- @reserved_count = 0
119
- end
120
-
121
- def lock
122
- @resource.__pool_lock
123
- end
124
-
125
- def scavenge_interval
126
- @resource.scavenge_interval
127
- end
128
-
129
- def new
130
- instance = nil
131
-
132
- lock.synchronize do
133
- instance = acquire
134
- end
135
-
136
- Extlib::Pooling::append_pool(self)
137
-
138
- if instance.nil?
139
- # Account for the current thread, and the pool scavenger.
140
- if ThreadGroup::Default.list.size == 2 && @reserved_count >= @max_size
141
- raise ThreadStopError.new(size)
142
- else
143
- sleep(0.05)
144
- new
145
- end
146
- else
147
- instance
148
- end
149
- end
150
-
151
- def release(instance)
152
- lock.synchronize do
153
- instance.instance_variable_set(:@__pool, nil)
154
- @reserved_count -= 1
155
- @available.push(instance)
156
- end
157
- nil
158
- end
159
-
160
- def size
161
- @available.size + @reserved_count
162
- end
163
- alias length size
164
-
165
- def inspect
166
- "#<Extlib::Pooling::Pool<#{@resource.name}> available=#{@available.size} reserved_count=#{@reserved_count}>"
167
- end
168
-
169
- def flush!
170
- until @available.empty?
171
- instance = @available.pop
172
- instance.dispose
173
- end
174
- @available.clear
175
- end
176
-
177
- def dispose
178
- flush!
179
- @resource.__pools.delete(@args)
180
- !Extlib::Pooling::pools.delete?(self).nil?
181
- end
182
-
183
- # Disabled temporarily.
184
- #
185
- # def expired?
186
- # lock.synchronize do
187
- # @available.each do |instance|
188
- # if instance.instance_variable_get(:@__allocated_in_pool) + scavenge_interval < Time.now
189
- # instance.dispose
190
- # @available.delete(instance)
191
- # end
192
- # end
193
- #
194
- # size == 0
195
- # end
196
- # end
197
-
198
- def reserved_count
199
- @reserved_count
200
- end
201
-
202
- private
203
-
204
- def acquire
205
- instance = if !@available.empty?
206
- @available.pop
207
- elsif size < @max_size
208
- @resource.__new(*@args)
209
- else
210
- nil
211
- end
212
-
213
- if instance.nil?
214
- instance
215
- else
216
- raise CrossPoolError.new(instance) if instance.instance_variable_get(:@__pool)
217
- @reserved_count += 1
218
- instance.instance_variable_set(:@__pool, self)
219
- instance.instance_variable_set(:@__allocated_in_pool, Time.now)
220
- instance
221
- end
222
- end
223
- end
224
-
225
- def self.scavenger_interval
226
- 60
227
- end
228
- end # module Pooling
229
- end # module Extlib