simple_state_machine 0.5.0.beta → 0.5.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.
data/README.rdoc CHANGED
@@ -53,26 +53,33 @@ To add a state machine:
53
53
  - turn methods into events
54
54
 
55
55
  class LampWithHotelSwitch
56
-
56
+
57
57
  extend SimpleStateMachine
58
-
58
+
59
59
  def initialize
60
- self.state = :off
60
+ self.state = 'off'
61
61
  end
62
-
62
+
63
63
  def push_switch_1
64
- puts 'pushed switch 1 #{state}'
64
+ puts "pushed switch 1 #{state}"
65
65
  end
66
66
  event :push_switch_1, :off => :on,
67
67
  :on => :off
68
-
68
+
69
69
  # define another event
70
70
  # note that implementation of :push_switch_2 is optional
71
71
  event :push_switch_2, :off => :on,
72
72
  :on => :off
73
-
73
+
74
74
  end
75
75
 
76
+ lamp = LampWithHotelSwitch.new
77
+ lamp.state # => 'off'
78
+ lamp.push_switch_1
79
+ lamp.state # => 'on'
80
+ lamp.push_siwtch_2
81
+ lamp.state # => 'off'
82
+
76
83
  == ActiveRecord Example
77
84
 
78
85
  To add a state machine with ActiveRecord persistence:
@@ -83,8 +90,6 @@ To add a state machine with ActiveRecord persistence:
83
90
  class User < ActiveRecord::Base
84
91
 
85
92
  extend SimpleStateMachine::ActiveRecord
86
- # define a custum state_method (state is default)
87
- state_machine_definition.state_method = :ssm_state
88
93
 
89
94
  def after_initialize
90
95
  self.ssm_state ||= 'new'
@@ -110,11 +115,18 @@ To add a state machine with ActiveRecord persistence:
110
115
  event :suspend, :all => :suspended
111
116
  end
112
117
 
113
- This generates the following methods
114
- - {event}_and_save works like save
115
- - {event}_and_save! works like save!
116
- - {event}! works the same as {event}_and_save!
117
- - {state}? whether or not the current state is {state}
118
+ This generates the following event methods
119
+ - invite!
120
+ - confirm_invitation!
121
+ - suspend!
122
+ And the following methods to query the state:
123
+ - invited?
124
+ - active?
125
+ - suspended?
126
+
127
+ If you want to be more verbose you can also use:
128
+ - invite_and_save (behave like ActiveRecord save)
129
+ - invite_and_save! (is equal to invite! and behaves like save!)
118
130
 
119
131
 
120
132
  This code was just released, we do not claim it to be stable.
@@ -0,0 +1,2 @@
1
+ Dir["#{Gem.searcher.find('simple_state_machine').full_gem_path}/**/tasks/*.rake"].each { |ext| load ext }
2
+
@@ -0,0 +1,11 @@
1
+ require 'simple_state_machine'
2
+ require 'rails'
3
+
4
+ module SimpleStateMachine
5
+ class Railtie < Rails::Railtie
6
+ rake_tasks do
7
+ load "tasks/graphiz.rake"
8
+ end
9
+ end
10
+ end
11
+
@@ -1,3 +1,3 @@
1
1
  module SimpleStateMachine
2
- VERSION = "0.5.0.beta"
2
+ VERSION = "0.5.1"
3
3
  end
@@ -1,2 +1,4 @@
1
1
  require 'simple_state_machine/simple_state_machine'
2
2
  require 'simple_state_machine/active_record'
3
+ require "simple_state_machine/railtie" if defined?(Rails::Railtie)
4
+
@@ -0,0 +1,13 @@
1
+ namespace :ssm do
2
+ namespace :graph do
3
+ desc 'Generate a url for a google chart for [class]'
4
+ task :url => :environment do
5
+ puts ENV['class'].constantize.state_machine_definition.google_chart_url
6
+ end
7
+
8
+ desc 'Opens the google chart in the browser for [class]'
9
+ task :open => :environment do
10
+ `open '#{::CGI.unescape(ENV['class'].constantize.state_machine_definition.google_chart_url)}'`
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ namespace :ssm do
2
+
3
+ namespace :graph do
4
+
5
+ desc 'url'
6
+ task 'url' do |t|
7
+ end
8
+
9
+ desc 'image'
10
+ task 'image' do |t|
11
+ end
12
+
13
+ end
14
+
15
+ end
16
+
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.platform = Gem::Platform::RUBY
9
9
 
10
10
  s.authors = ["Marek de Heus", "Petrik de Heus"]
11
- s.description = %q{A simple DSL to decorate existing methods with logic that guards state transitions.}
11
+ s.description = %q{Simple State Machine is a state machine that focuses on events instead of states}
12
12
  s.email = ["FIX@example.com"]
13
13
  s.homepage = %q{http://github.com/mdh/ssm}
14
14
  s.extra_rdoc_files = [
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.rdoc_options = ["--charset=UTF-8"]
21
21
  s.require_paths = ["lib"]
22
22
  s.rubygems_version = %q{1.3.7}
23
- s.summary = %q{A statemachine that focuses on events instead of states}
23
+ s.summary = %q{A simple DSL to decorate existing methods with logic that guards state transitions.}
24
24
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
25
  s.add_development_dependency "rake"
26
26
  s.add_development_dependency "ZenTest"
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_state_machine
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31098217
5
- prerelease: 6
4
+ hash: 9
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 5
9
- - 0
10
- - beta
11
- version: 0.5.0.beta
9
+ - 1
10
+ version: 0.5.1
12
11
  platform: ruby
13
12
  authors:
14
13
  - Marek de Heus
@@ -17,7 +16,7 @@ autorequire:
17
16
  bindir: bin
18
17
  cert_chain: []
19
18
 
20
- date: 2011-02-08 00:00:00 +01:00
19
+ date: 2011-03-06 00:00:00 +01:00
21
20
  default_executable:
22
21
  dependencies:
23
22
  - !ruby/object:Gem::Dependency
@@ -92,7 +91,7 @@ dependencies:
92
91
  version: "0"
93
92
  type: :development
94
93
  version_requirements: *id005
95
- description: A simple DSL to decorate existing methods with logic that guards state transitions.
94
+ description: Simple State Machine is a state machine that focuses on events instead of states
96
95
  email:
97
96
  - FIX@example.com
98
97
  executables: []
@@ -106,7 +105,6 @@ files:
106
105
  - .gitignore
107
106
  - .rspec
108
107
  - Gemfile
109
- - Gemfile.lock
110
108
  - LICENSE
111
109
  - README.rdoc
112
110
  - Rakefile
@@ -118,8 +116,12 @@ files:
118
116
  - examples/user.rb
119
117
  - lib/simple_state_machine.rb
120
118
  - lib/simple_state_machine/active_record.rb
119
+ - lib/simple_state_machine/rails2_task_loader.rb
120
+ - lib/simple_state_machine/railtie.rb
121
121
  - lib/simple_state_machine/simple_state_machine.rb
122
122
  - lib/simple_state_machine/version.rb
123
+ - lib/tasks/graphiz.rake
124
+ - rails/graphiz.rake
123
125
  - simple_state_machine.gemspec
124
126
  - spec/active_record_spec.rb
125
127
  - spec/decorator_spec.rb
@@ -150,21 +152,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
152
  required_rubygems_version: !ruby/object:Gem::Requirement
151
153
  none: false
152
154
  requirements:
153
- - - ">"
155
+ - - ">="
154
156
  - !ruby/object:Gem::Version
155
- hash: 25
157
+ hash: 3
156
158
  segments:
157
- - 1
158
- - 3
159
- - 1
160
- version: 1.3.1
159
+ - 0
160
+ version: "0"
161
161
  requirements: []
162
162
 
163
163
  rubyforge_project:
164
- rubygems_version: 1.5.0
164
+ rubygems_version: 1.5.2
165
165
  signing_key:
166
166
  specification_version: 3
167
- summary: A statemachine that focuses on events instead of states
167
+ summary: A simple DSL to decorate existing methods with logic that guards state transitions.
168
168
  test_files:
169
169
  - spec/active_record_spec.rb
170
170
  - spec/decorator_spec.rb
data/Gemfile.lock DELETED
@@ -1,34 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- simple_state_machine (1.5.0)
5
-
6
- GEM
7
- remote: http://rubygems.org/
8
- specs:
9
- ZenTest (4.4.2)
10
- activerecord (2.3.10)
11
- activesupport (= 2.3.10)
12
- activesupport (2.3.10)
13
- diff-lcs (1.1.2)
14
- rake (0.8.7)
15
- rspec (2.5.0)
16
- rspec-core (~> 2.5.0)
17
- rspec-expectations (~> 2.5.0)
18
- rspec-mocks (~> 2.5.0)
19
- rspec-core (2.5.1)
20
- rspec-expectations (2.5.0)
21
- diff-lcs (~> 1.1.2)
22
- rspec-mocks (2.5.0)
23
- sqlite3-ruby (1.3.1)
24
-
25
- PLATFORMS
26
- ruby
27
-
28
- DEPENDENCIES
29
- ZenTest
30
- activerecord (~> 2.3.5)
31
- rake
32
- rspec
33
- simple_state_machine!
34
- sqlite3-ruby