Skip to content

Commit 81d83df

Browse files
author
=
committed
New persistence/adapter language.
1 parent 29d27c0 commit 81d83df

File tree

10 files changed

+53
-39
lines changed

10 files changed

+53
-39
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## Jan 16 2012 - v0.1.0
2+
3+
* Migrated over to new persistence/adapter terminology
4+
15
## Jan 12 2012 - v0.0.4
26

37
* Bluff calls are stricter now to give us more control in the bluff definitions. A bluff call accepts a single hash argument and default block values can no longer be defined in the block signatures.

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ Feel free to use them or huck em to the curb and just work directly with the att
8686

8787
```
8888
User.bluff # returns an unsaved instance -- could also use Bluff.user
89-
User.bluff! # returns a saved instance -- could also use Bluff.user!
89+
User.bluff! # the "bang bluff" -- returns a persisted/saved instance, could also use Bluff.user!
9090
User.bluff({:name => 'Ryan'}) # supply overrides/defaults in the attributes hash
9191
```
9292

lib/bluff/builder.rb

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
require 'active_support/core_ext/array/conversions'
44
require 'active_support/core_ext/hash/indifferent_access'
55

6-
require 'bluff/support/backend'
7-
require 'bluff/support/backend/active_record'
6+
require 'bluff/support/persistence/base'
7+
require 'bluff/support/persistence/active_record'
88

99
module Bluff
1010
module Builder
@@ -97,7 +97,7 @@ def define_bluff(field, &block)
9797
def define_bluff_bang(field)
9898
define_singleton_method "#{field}!" do |*arguments|
9999
send(field, *arguments).tap do |record|
100-
Bluff::Support::Backend.save!(record, field)
100+
Bluff::Support.persist(record, {:as => field})
101101
end
102102
end
103103
end

lib/bluff/support/backend.rb

-21
This file was deleted.

lib/bluff/support/backend/active_record.rb lib/bluff/support/persistence/active_record.rb

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ class Base
33
end
44
end
55

6-
module Bluff::Support::ActiveRecord
7-
class Backend
6+
module Bluff::Support::Persistence
7+
class ActiveRecordAdapter
88
class << self
9-
def accepts?(record)
9+
def persists?(record)
1010
record.is_a?(ActiveRecord::Base)
1111
end
1212

13-
def save!(record)
13+
def persist(record)
1414
ActiveRecord::Base.transaction do
1515
record.class.reflect_on_all_associations(:belongs_to).each do |reflection|
1616
association = record.send(reflection.name)
@@ -22,6 +22,6 @@ def save!(record)
2222
end
2323
end
2424

25-
Bluff::Support::Backend.register(self)
25+
Bluff::Support::Persistence::Base.register(self)
2626
end
2727
end

lib/bluff/support/persistence/base.rb

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
module Bluff
2+
module Support
3+
module Persistence
4+
class Base
5+
@@adapters = []
6+
7+
class << self
8+
def register(adapter)
9+
@@adapters << adapter
10+
end
11+
12+
def persist(record, options = {})
13+
adapters = @@adapters.select {|adapter| adapter.persists?(record)}
14+
15+
if adapters.empty?
16+
raise "#{options[:as] || record.class} is not persistable (#{record})"
17+
else
18+
# should first try to persist new associations
19+
adapters.first.persist(record)
20+
end
21+
end
22+
end
23+
end
24+
end
25+
26+
# just looks a little cleaner in use
27+
def self.persist(record, options = {})
28+
Persistence::Base.persist(record, options)
29+
end
30+
end
31+
end

lib/bluff/support/support.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111

1212
module Bluff
1313
module Support
14-
# autoload
14+
# autoload bluffs for rspec
1515
end
1616
end

lib/bluff/version.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module Bluff
2-
VERSION = "0.0.4"
2+
VERSION = "0.1.0"
33
end

spec/models/api_spec.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class TransientClass
8686
end
8787

8888
Bluff.for(:transient_class) { TransientClass.new }
89-
lambda{ Bluff.transient_class! }.should raise_error(RuntimeError, /cannot be bang bluffed/)
89+
lambda{ Bluff.transient_class! }.should raise_error(RuntimeError, /transient_class is not persistable/)
9090
end
9191
end
9292

spec/support/bluffable_class.rb

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,18 @@ def new_record?
1212
end
1313
end
1414

15-
module Bluff::Support::BluffableClass
16-
class Backend
15+
module Bluff::Support::Persistence
16+
class BluffableClassAdapter
1717
class << self
18-
def accepts?(record)
18+
def persists?(record)
1919
record.is_a?(BluffableClass)
2020
end
2121

22-
def save!(record)
22+
def persist(record)
2323
record.save
2424
end
2525
end
26-
27-
Bluff::Support::Backend.register(self)
26+
27+
Bluff::Support::Persistence::Base.register(self)
2828
end
2929
end

0 commit comments

Comments
 (0)