mack-data_mapper 0.6.0.1 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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