blueprints 0.8.2 → 0.9.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/.gitignore +4 -1
- data/Gemfile +2 -0
- data/Gemfile.lock +82 -18
- data/LICENSE +1 -1
- data/README.rdoc +38 -8
- data/Rakefile +11 -35
- data/blueprints.gemspec +29 -123
- data/features/support/env.rb +7 -10
- data/lib/blueprints.rb +68 -12
- data/lib/blueprints/blueprint.rb +39 -19
- data/lib/blueprints/buildable.rb +92 -74
- data/lib/blueprints/configuration.rb +18 -4
- data/lib/blueprints/context.rb +148 -5
- data/lib/blueprints/database_cleaner_fix.rb +9 -0
- data/lib/blueprints/dependency.rb +32 -21
- data/lib/blueprints/eval_context.rb +51 -0
- data/lib/blueprints/extensions.rb +115 -0
- data/lib/blueprints/extensions/rspec.rb +3 -1
- data/lib/blueprints/helper.rb +52 -20
- data/lib/blueprints/namespace.rb +31 -12
- data/lib/blueprints/root_namespace.rb +24 -25
- data/lib/blueprints/version.rb +3 -0
- data/spec/{active_record/blueprint.rb → blueprint.rb} +14 -17
- data/spec/{active_record/blueprints_spec.rb → blueprints_spec.rb} +40 -59
- data/spec/spec_helper.rb +34 -0
- data/spec/support/active_record/database.yml.example +7 -0
- data/spec/support/active_record/initializer.rb +15 -0
- data/spec/{active_record/fixtures → support/active_record}/schema.rb +0 -0
- data/spec/support/dm-core/initializer.rb +31 -0
- data/spec/support/mongo_mapper/database.yml.example +2 -0
- data/spec/support/mongo_mapper/initializer.rb +20 -0
- data/spec/support/mongoid/database.yml.example +2 -0
- data/spec/support/mongoid/initializer.rb +23 -0
- data/spec/support/none/initializer.rb +63 -0
- data/spec/unit/active_record_spec.rb +1 -6
- data/spec/unit/blueprint_spec.rb +91 -20
- data/spec/unit/blueprints_spec.rb +44 -0
- data/spec/unit/buildable_spec.rb +37 -6
- data/spec/unit/configuration_spec.rb +11 -0
- data/spec/unit/context_spec.rb +100 -0
- data/spec/unit/dependency_spec.rb +24 -19
- data/spec/unit/eval_context_spec.rb +56 -0
- data/spec/unit/fixtures.rb +61 -0
- data/spec/unit/namespace_spec.rb +59 -11
- data/spec/unit/spec_helper.rb +8 -16
- data/test/blueprints_test.rb +40 -59
- data/test/test_helper.rb +6 -16
- data/test_all.sh +45 -0
- metadata +178 -61
- data/VERSION +0 -1
- data/lib/blueprints/core_ext.rb +0 -69
- data/lib/blueprints/file_context.rb +0 -37
- data/spec/active_record/fixtures/database.yml.example +0 -8
- data/spec/active_record/fixtures/fruit.rb +0 -3
- data/spec/active_record/fixtures/tree.rb +0 -4
- data/spec/active_record/spec_helper.rb +0 -37
- data/spec/no_db/blueprint.rb +0 -9
- data/spec/no_db/blueprints_spec.rb +0 -45
- data/spec/no_db/fixtures/fruit.rb +0 -15
- data/spec/no_db/spec_helper.rb +0 -14
- data/spec/test_all.sh +0 -39
data/test/test_helper.rb
CHANGED
@@ -1,25 +1,16 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'logger'
|
2
3
|
require 'active_record'
|
3
4
|
require 'test/unit'
|
4
5
|
require 'active_record/test_case'
|
5
6
|
require 'shoulda'
|
6
7
|
require 'mocha'
|
7
|
-
begin
|
8
|
-
require 'mysqlplus'
|
9
|
-
rescue LoadError
|
10
|
-
end
|
11
|
-
|
12
|
-
Dir.chdir(File.join(File.dirname(__FILE__), '..'))
|
13
|
-
|
14
|
-
ActiveRecord::Base.logger = Logger.new("debug.log")
|
15
8
|
|
16
|
-
|
17
|
-
|
18
|
-
ActiveRecord::Base.establish_connection(db_info)
|
9
|
+
Root = Pathname.new(__FILE__).dirname.join('..')
|
10
|
+
$: << Root.join('lib').to_s
|
19
11
|
|
20
|
-
require '
|
21
|
-
require
|
22
|
-
require 'spec/active_record/fixtures/tree'
|
12
|
+
require 'blueprints'
|
13
|
+
require File.dirname(__FILE__) + "/../spec/support/active_record/initializer"
|
23
14
|
|
24
15
|
class ActiveSupport::TestCase
|
25
16
|
def assert_similar(array1, array2)
|
@@ -29,7 +20,6 @@ class ActiveSupport::TestCase
|
|
29
20
|
end
|
30
21
|
|
31
22
|
Blueprints.enable do |config|
|
32
|
-
config.root =
|
23
|
+
config.root = Root.join('spec')
|
33
24
|
config.prebuild = :big_cherry
|
34
|
-
config.filename = 'spec/active_record/blueprint.rb'
|
35
25
|
end
|
data/test_all.sh
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
function e {
|
3
|
+
echo ''
|
4
|
+
echo '----------------------------------------'
|
5
|
+
echo $1
|
6
|
+
echo '----------------------------------------'
|
7
|
+
}
|
8
|
+
|
9
|
+
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
|
10
|
+
|
11
|
+
e "Normal spec"
|
12
|
+
rspec -c spec/blueprints_spec.rb
|
13
|
+
rspec -c spec/unit/*_spec.rb
|
14
|
+
|
15
|
+
e "With no db"
|
16
|
+
ORM=none rspec -c spec/blueprints_spec.rb
|
17
|
+
|
18
|
+
e "With mongoid"
|
19
|
+
ORM=mongoid rspec -c spec/blueprints_spec.rb
|
20
|
+
|
21
|
+
e "With mongo_mapper"
|
22
|
+
ORM=mongo_mapper rspec -c spec/blueprints_spec.rb
|
23
|
+
|
24
|
+
e "With Test::Unit"
|
25
|
+
rake rspec_to_test
|
26
|
+
ruby test/blueprints_test.rb
|
27
|
+
|
28
|
+
e "With Cucumber"
|
29
|
+
cucumber features/blueprints.feature -f progress
|
30
|
+
|
31
|
+
e "With Rails 2 and RSpec 1.3.0"
|
32
|
+
rvm 1.8.7@rails2
|
33
|
+
ORM="active_record.2.3.0" spec "_1.3.1_" -c spec/blueprints_spec.rb
|
34
|
+
|
35
|
+
e "With ruby 1.9.2"
|
36
|
+
rvm 1.9.2
|
37
|
+
rspec -c spec/blueprints_spec.rb
|
38
|
+
rspec -c spec/unit/*_spec.rb
|
39
|
+
|
40
|
+
e "With rubinius"
|
41
|
+
rvm rbx
|
42
|
+
rspec -c spec/blueprints_spec.rb
|
43
|
+
rspec -c spec/unit/*_spec.rb
|
44
|
+
|
45
|
+
rvm system
|
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 9
|
9
|
+
- 0
|
10
|
+
version: 0.9.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andrius Chamentauskas
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-14 00:00:00 +02:00
|
19
19
|
default_executable: blueprintify
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -56,20 +56,34 @@ dependencies:
|
|
56
56
|
requirement: &id003 !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
hash:
|
61
|
+
hash: 7
|
62
62
|
segments:
|
63
|
-
-
|
64
|
-
-
|
63
|
+
- 2
|
64
|
+
- 2
|
65
65
|
- 0
|
66
|
-
version:
|
66
|
+
version: 2.2.0
|
67
67
|
type: :development
|
68
68
|
version_requirements: *id003
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: mysql2
|
71
71
|
prerelease: false
|
72
72
|
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 0
|
80
|
+
version: "0"
|
81
|
+
type: :development
|
82
|
+
version_requirements: *id004
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: activerecord
|
85
|
+
prerelease: false
|
86
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
73
87
|
none: false
|
74
88
|
requirements:
|
75
89
|
- - ">="
|
@@ -81,11 +95,108 @@ dependencies:
|
|
81
95
|
- 0
|
82
96
|
version: 2.3.0
|
83
97
|
type: :development
|
84
|
-
version_requirements: *
|
98
|
+
version_requirements: *id005
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: bson_ext
|
101
|
+
prerelease: false
|
102
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
103
|
+
none: false
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
hash: 27
|
108
|
+
segments:
|
109
|
+
- 1
|
110
|
+
- 1
|
111
|
+
- 4
|
112
|
+
version: 1.1.4
|
113
|
+
type: :development
|
114
|
+
version_requirements: *id006
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: mongoid
|
117
|
+
prerelease: false
|
118
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
119
|
+
none: false
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
hash: 31098209
|
124
|
+
segments:
|
125
|
+
- 2
|
126
|
+
- 0
|
127
|
+
- 0
|
128
|
+
- beta
|
129
|
+
version: 2.0.0.beta
|
130
|
+
type: :development
|
131
|
+
version_requirements: *id007
|
132
|
+
- !ruby/object:Gem::Dependency
|
133
|
+
name: mongo_mapper
|
134
|
+
prerelease: false
|
135
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
136
|
+
none: false
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
hash: 63
|
141
|
+
segments:
|
142
|
+
- 0
|
143
|
+
- 8
|
144
|
+
- 0
|
145
|
+
version: 0.8.0
|
146
|
+
type: :development
|
147
|
+
version_requirements: *id008
|
148
|
+
- !ruby/object:Gem::Dependency
|
149
|
+
name: dm-migrations
|
150
|
+
prerelease: false
|
151
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
152
|
+
none: false
|
153
|
+
requirements:
|
154
|
+
- - ">="
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
hash: 23
|
157
|
+
segments:
|
158
|
+
- 1
|
159
|
+
- 0
|
160
|
+
- 0
|
161
|
+
version: 1.0.0
|
162
|
+
type: :development
|
163
|
+
version_requirements: *id009
|
164
|
+
- !ruby/object:Gem::Dependency
|
165
|
+
name: dm-transactions
|
166
|
+
prerelease: false
|
167
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
168
|
+
none: false
|
169
|
+
requirements:
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
hash: 23
|
173
|
+
segments:
|
174
|
+
- 1
|
175
|
+
- 0
|
176
|
+
- 0
|
177
|
+
version: 1.0.0
|
178
|
+
type: :development
|
179
|
+
version_requirements: *id010
|
180
|
+
- !ruby/object:Gem::Dependency
|
181
|
+
name: dm-mysql-adapter
|
182
|
+
prerelease: false
|
183
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
184
|
+
none: false
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
hash: 23
|
189
|
+
segments:
|
190
|
+
- 1
|
191
|
+
- 0
|
192
|
+
- 0
|
193
|
+
version: 1.0.0
|
194
|
+
type: :development
|
195
|
+
version_requirements: *id011
|
85
196
|
- !ruby/object:Gem::Dependency
|
86
197
|
name: mocha
|
87
198
|
prerelease: false
|
88
|
-
requirement: &
|
199
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
89
200
|
none: false
|
90
201
|
requirements:
|
91
202
|
- - ">="
|
@@ -97,11 +208,11 @@ dependencies:
|
|
97
208
|
- 8
|
98
209
|
version: 0.9.8
|
99
210
|
type: :development
|
100
|
-
version_requirements: *
|
211
|
+
version_requirements: *id012
|
101
212
|
- !ruby/object:Gem::Dependency
|
102
213
|
name: shoulda
|
103
214
|
prerelease: false
|
104
|
-
requirement: &
|
215
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
105
216
|
none: false
|
106
217
|
requirements:
|
107
218
|
- - ">="
|
@@ -113,11 +224,11 @@ dependencies:
|
|
113
224
|
- 0
|
114
225
|
version: 2.10.0
|
115
226
|
type: :development
|
116
|
-
version_requirements: *
|
227
|
+
version_requirements: *id013
|
117
228
|
- !ruby/object:Gem::Dependency
|
118
229
|
name: cucumber
|
119
230
|
prerelease: false
|
120
|
-
requirement: &
|
231
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
121
232
|
none: false
|
122
233
|
requirements:
|
123
234
|
- - ">="
|
@@ -129,8 +240,24 @@ dependencies:
|
|
129
240
|
- 0
|
130
241
|
version: 0.7.0
|
131
242
|
type: :development
|
132
|
-
version_requirements: *
|
133
|
-
|
243
|
+
version_requirements: *id014
|
244
|
+
- !ruby/object:Gem::Dependency
|
245
|
+
name: bundler
|
246
|
+
prerelease: false
|
247
|
+
requirement: &id015 !ruby/object:Gem::Requirement
|
248
|
+
none: false
|
249
|
+
requirements:
|
250
|
+
- - ">="
|
251
|
+
- !ruby/object:Gem::Version
|
252
|
+
hash: 23
|
253
|
+
segments:
|
254
|
+
- 1
|
255
|
+
- 0
|
256
|
+
- 0
|
257
|
+
version: 1.0.0
|
258
|
+
type: :development
|
259
|
+
version_requirements: *id015
|
260
|
+
description: Awesome replacement for factories and fixtures that focuses on being DRY and making developers type as little as possible.
|
134
261
|
email: sinsiliux@gmail.com
|
135
262
|
executables:
|
136
263
|
- blueprintify
|
@@ -146,7 +273,6 @@ files:
|
|
146
273
|
- LICENSE
|
147
274
|
- README.rdoc
|
148
275
|
- Rakefile
|
149
|
-
- VERSION
|
150
276
|
- bin/blueprintify
|
151
277
|
- blueprints.gemspec
|
152
278
|
- features/blueprints.feature
|
@@ -161,45 +287,52 @@ files:
|
|
161
287
|
- lib/blueprints/context.rb
|
162
288
|
- lib/blueprints/convertable.rb
|
163
289
|
- lib/blueprints/convertable/fixtures.rb
|
164
|
-
- lib/blueprints/
|
290
|
+
- lib/blueprints/database_cleaner_fix.rb
|
165
291
|
- lib/blueprints/dependency.rb
|
166
292
|
- lib/blueprints/errors.rb
|
293
|
+
- lib/blueprints/eval_context.rb
|
294
|
+
- lib/blueprints/extensions.rb
|
167
295
|
- lib/blueprints/extensions/cucumber.rb
|
168
296
|
- lib/blueprints/extensions/rspec.rb
|
169
297
|
- lib/blueprints/extensions/test_unit.rb
|
170
|
-
- lib/blueprints/file_context.rb
|
171
298
|
- lib/blueprints/helper.rb
|
172
299
|
- lib/blueprints/namespace.rb
|
173
300
|
- lib/blueprints/root_namespace.rb
|
174
|
-
-
|
175
|
-
- spec/
|
176
|
-
- spec/
|
177
|
-
- spec/
|
178
|
-
- spec/active_record/
|
179
|
-
- spec/active_record/
|
180
|
-
- spec/active_record/
|
181
|
-
- spec/
|
182
|
-
- spec/
|
183
|
-
- spec/
|
184
|
-
- spec/
|
185
|
-
- spec/
|
301
|
+
- lib/blueprints/version.rb
|
302
|
+
- spec/blueprint.rb
|
303
|
+
- spec/blueprints_spec.rb
|
304
|
+
- spec/spec_helper.rb
|
305
|
+
- spec/support/active_record/database.yml.example
|
306
|
+
- spec/support/active_record/initializer.rb
|
307
|
+
- spec/support/active_record/schema.rb
|
308
|
+
- spec/support/dm-core/initializer.rb
|
309
|
+
- spec/support/mongo_mapper/database.yml.example
|
310
|
+
- spec/support/mongo_mapper/initializer.rb
|
311
|
+
- spec/support/mongoid/database.yml.example
|
312
|
+
- spec/support/mongoid/initializer.rb
|
313
|
+
- spec/support/none/initializer.rb
|
186
314
|
- spec/unit/active_record_spec.rb
|
187
315
|
- spec/unit/blueprint_spec.rb
|
316
|
+
- spec/unit/blueprints_spec.rb
|
188
317
|
- spec/unit/buildable_spec.rb
|
189
318
|
- spec/unit/configuration_spec.rb
|
319
|
+
- spec/unit/context_spec.rb
|
190
320
|
- spec/unit/dependency_spec.rb
|
321
|
+
- spec/unit/eval_context_spec.rb
|
322
|
+
- spec/unit/fixtures.rb
|
191
323
|
- spec/unit/namespace_spec.rb
|
192
324
|
- spec/unit/spec_helper.rb
|
193
325
|
- test/blueprints_test.rb
|
194
326
|
- test/test_helper.rb
|
327
|
+
- test_all.sh
|
195
328
|
- uninstall.rb
|
196
329
|
has_rdoc: true
|
197
|
-
homepage: http://github.com/
|
330
|
+
homepage: http://sinsiliux.github.com/blueprints
|
198
331
|
licenses: []
|
199
332
|
|
200
333
|
post_install_message:
|
201
|
-
rdoc_options:
|
202
|
-
|
334
|
+
rdoc_options: []
|
335
|
+
|
203
336
|
require_paths:
|
204
337
|
- lib
|
205
338
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -216,34 +349,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
216
349
|
requirements:
|
217
350
|
- - ">="
|
218
351
|
- !ruby/object:Gem::Version
|
219
|
-
hash:
|
352
|
+
hash: 23
|
220
353
|
segments:
|
221
|
-
-
|
222
|
-
|
354
|
+
- 1
|
355
|
+
- 3
|
356
|
+
- 6
|
357
|
+
version: 1.3.6
|
223
358
|
requirements: []
|
224
359
|
|
225
|
-
rubyforge_project:
|
360
|
+
rubyforge_project: blueprints
|
226
361
|
rubygems_version: 1.3.7
|
227
362
|
signing_key:
|
228
363
|
specification_version: 3
|
229
|
-
summary:
|
230
|
-
test_files:
|
231
|
-
|
232
|
-
- spec/no_db/spec_helper.rb
|
233
|
-
- spec/no_db/blueprints_spec.rb
|
234
|
-
- spec/no_db/blueprint.rb
|
235
|
-
- spec/unit/active_record_spec.rb
|
236
|
-
- spec/unit/blueprint_spec.rb
|
237
|
-
- spec/unit/spec_helper.rb
|
238
|
-
- spec/unit/configuration_spec.rb
|
239
|
-
- spec/unit/namespace_spec.rb
|
240
|
-
- spec/unit/buildable_spec.rb
|
241
|
-
- spec/unit/dependency_spec.rb
|
242
|
-
- spec/active_record/fixtures/fruit.rb
|
243
|
-
- spec/active_record/fixtures/tree.rb
|
244
|
-
- spec/active_record/fixtures/schema.rb
|
245
|
-
- spec/active_record/spec_helper.rb
|
246
|
-
- spec/active_record/blueprints_spec.rb
|
247
|
-
- spec/active_record/blueprint.rb
|
248
|
-
- test/test_helper.rb
|
249
|
-
- test/blueprints_test.rb
|
364
|
+
summary: Awesome replacement for factories and fixtures
|
365
|
+
test_files: []
|
366
|
+
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.8.2
|
data/lib/blueprints/core_ext.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
# Include this module into your class if you need klass.blueprint and object.blueprint methods.
|
2
|
-
module Blueprints::Blueprintable
|
3
|
-
module ClassMethods
|
4
|
-
# Two forms of this method can be used. First one is typically used inside blueprint block. Essentially it does
|
5
|
-
# same as <tt>create!</tt>, except it does bypass attr_protected and attr_accessible. It accepts only a hash or attributes,
|
6
|
-
# same as <tt>create!</tt> does.
|
7
|
-
# blueprint :post => [:user, :board] do
|
8
|
-
# @user.posts.blueprint(:title => 'first post', :text => 'My first post')
|
9
|
-
# end
|
10
|
-
# The second form is used when you want to define new blueprint. It takes first argument as name of blueprint
|
11
|
-
# and second one as hash of attributes. As you cannot use instance variables outside of blueprint block, you need
|
12
|
-
# to prefix them with colon. So the example above could be rewritten like this:
|
13
|
-
# Post.blueprint(:post, :title => 'first post', :text => 'My first post', :user => d(:user)).depends_on(:board)
|
14
|
-
def blueprint(name_or_attrs, attrs = {})
|
15
|
-
if Blueprints::FileContext.current
|
16
|
-
define_blueprint(name_or_attrs, attrs)
|
17
|
-
else
|
18
|
-
if name_or_attrs.is_a?(Array)
|
19
|
-
name_or_attrs.collect { |attrs| blueprint(attrs) }
|
20
|
-
else
|
21
|
-
blueprint_object(name_or_attrs)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def define_blueprint(name, attrs)
|
29
|
-
klass = self
|
30
|
-
blueprint = Blueprints::Blueprint.new(name, Blueprints::FileContext.current.file) { klass.blueprint attributes }
|
31
|
-
blueprint.attributes(attrs)
|
32
|
-
blueprint
|
33
|
-
end
|
34
|
-
|
35
|
-
def blueprint_object(attrs)
|
36
|
-
object = new
|
37
|
-
object.blueprint(attrs)
|
38
|
-
object
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def self.included(mod)
|
43
|
-
mod.extend Blueprints::Blueprintable::ClassMethods
|
44
|
-
end
|
45
|
-
|
46
|
-
# Updates attributes of object by calling setter methods.
|
47
|
-
def blueprint(attributes)
|
48
|
-
Blueprints::Blueprint.normalize_attributes(attributes).each do |attr, val|
|
49
|
-
send(:"#{attr}=", val)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
# Include this instead of Blueprints::Blueprintable if record needs to persist, includes Blueprints::Blueprintable
|
55
|
-
module Blueprints::Saveable
|
56
|
-
include Blueprints::Blueprintable
|
57
|
-
|
58
|
-
def self.included(mod)
|
59
|
-
mod.extend Blueprints::Blueprintable::ClassMethods
|
60
|
-
end
|
61
|
-
|
62
|
-
# Overrides object.blueprint to also call save!
|
63
|
-
def blueprint(attributes)
|
64
|
-
super(attributes)
|
65
|
-
save!
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
::ActiveRecord::Base.send(:include, Blueprints::Saveable) if defined?(ActiveRecord)
|