apollo 1.3.0.beta.3 → 1.3.0.beta.4
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/apollo.gemspec +2 -2
- data/lib/apollo.rb +7 -1
- data/lib/apollo/active_record_extensions.rb +5 -2
- data/lib/apollo/specification.rb +10 -0
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.0.beta.
|
1
|
+
1.3.0.beta.4
|
data/apollo.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{apollo}
|
8
|
-
s.version = "1.3.0.beta.
|
8
|
+
s.version = "1.3.0.beta.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Travis D. Warlick, Jr.", "Charlie Savage", "Blake Chambers"]
|
12
|
-
s.date = %q{2010-06-
|
12
|
+
s.date = %q{2010-06-15}
|
13
13
|
s.email = ["warlickt@operissystems.com", "cfis@zerista.com", "chambb1@gmail.com"]
|
14
14
|
s.extra_rdoc_files = [
|
15
15
|
"LICENSE",
|
data/lib/apollo.rb
CHANGED
@@ -36,6 +36,8 @@ module Apollo
|
|
36
36
|
|
37
37
|
class NoTransitionAllowed < Exception; end
|
38
38
|
|
39
|
+
class StateNotFound < Exception; end
|
40
|
+
|
39
41
|
class ApolloError < Exception; end
|
40
42
|
|
41
43
|
class ApolloDefinitionError < Exception; end
|
@@ -93,6 +95,10 @@ module Apollo
|
|
93
95
|
@current_state = new_value.to_s
|
94
96
|
end
|
95
97
|
|
98
|
+
def default_state
|
99
|
+
self.class.state_machine.default_state
|
100
|
+
end
|
101
|
+
|
96
102
|
def halted?
|
97
103
|
@halted
|
98
104
|
end
|
@@ -211,7 +217,7 @@ module Apollo
|
|
211
217
|
#
|
212
218
|
# Default ActiveRecord implementation uses a 'current_state' database column.
|
213
219
|
def load_current_state
|
214
|
-
@current_state
|
220
|
+
(instance_variable_defined?(:@current_state) ? @current_state : nil) || default_state
|
215
221
|
end
|
216
222
|
end
|
217
223
|
|
@@ -2,11 +2,14 @@ module Apollo
|
|
2
2
|
module ActiveRecordExtensions
|
3
3
|
module InstanceMethods
|
4
4
|
def load_current_state
|
5
|
-
if self.class.persist_string_state_name?
|
5
|
+
result = if self.class.persist_string_state_name?
|
6
6
|
read_attribute(self.class.current_state_column)
|
7
7
|
else
|
8
|
-
|
8
|
+
id = read_attribute(self.class.current_state_id_column)
|
9
|
+
self.class.state_id_to_name(id) if id
|
9
10
|
end
|
11
|
+
|
12
|
+
result || self.default_state
|
10
13
|
end
|
11
14
|
|
12
15
|
def current_state=(new_value)
|
data/lib/apollo/specification.rb
CHANGED
@@ -9,6 +9,16 @@ module Apollo
|
|
9
9
|
instance_eval(&specification)
|
10
10
|
end
|
11
11
|
|
12
|
+
# TODO - Possibly allow passing of a block here to
|
13
|
+
# allow users more control over the default state
|
14
|
+
# under certain conditions
|
15
|
+
def default_state(state_name = nil)
|
16
|
+
return @default_state unless state_name
|
17
|
+
|
18
|
+
validate_state_name(state_name)
|
19
|
+
@default_state = state_name
|
20
|
+
end
|
21
|
+
|
12
22
|
private
|
13
23
|
|
14
24
|
def state(name, meta = {:meta => {}}, &events_and_etc)
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apollo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 62196411
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 3
|
9
9
|
- 0
|
10
10
|
- beta
|
11
|
-
-
|
12
|
-
version: 1.3.0.beta.
|
11
|
+
- 4
|
12
|
+
version: 1.3.0.beta.4
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Travis D. Warlick, Jr.
|
@@ -19,7 +19,7 @@ autorequire:
|
|
19
19
|
bindir: bin
|
20
20
|
cert_chain: []
|
21
21
|
|
22
|
-
date: 2010-06-
|
22
|
+
date: 2010-06-15 00:00:00 -05:00
|
23
23
|
default_executable:
|
24
24
|
dependencies: []
|
25
25
|
|