preprocessor-aasm 2.0.6

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/CHANGELOG ADDED
@@ -0,0 +1,33 @@
1
+ * In AR persistence, move state column from class level variables into the StateMachine object for the class
2
+
3
+ * allowed :to array and :on_transition callback [Kevin Triplett]
4
+
5
+ * Support enter and exit actions on states
6
+
7
+ * Use named_scope in AR persistence layer, if available [Jan De Poorter]
8
+
9
+ * Incremented version number
10
+
11
+ * Cleaned up aasm_states_for_select to return the value as a string
12
+
13
+ * Specs and bug fixes for the ActiveRecordPersistence, keeping persistence columns in sync
14
+ Allowing for nil values in states for active record
15
+ Only set state to default state before_validation_on_create
16
+ New rake task to uninstall, build and reinstall the gem (useful for development)
17
+ Changed scott's email address to protect it from spambots when publishing rdocs
18
+ New non-(!) methods that allow for firing events without persisting [Jeff Dean]
19
+
20
+ * Added aasm_states_for_select that will return a select friendly collection of states.
21
+
22
+ * Add some event callbacks, #aasm_event_fired(from, to), and #aasm_event_failed(event)
23
+ Based on transition logging suggestion [Artem Vasiliev] and timestamp column suggestion [Mike Ferrier]
24
+
25
+ * Add #aasm_events_for_state and #aasm_events_for_current_state [Joao Paulo Lins]
26
+
27
+ * Ensure that a state is written for a new record even if aasm_current_state or
28
+ {state}= are never called.
29
+
30
+ * Fix AR persistence so new records have their state set. [Joao Paulo Lins]
31
+
32
+ * Make #event! methods return a boolean [Joel Chippindale]
33
+
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2008 Scott Barron
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,115 @@
1
+ = Fork description
2
+
3
+ This fork make possible use Integer columns in AR objects (for DB perfomance).
4
+
5
+ class Mary < ActiveRecord::Base
6
+ include AASM
7
+ aasm_integers 0 => :pending,
8
+ 1 => :started,
9
+ 2 => :finished
10
+
11
+ aasm_initial_state :pending
12
+
13
+ aasm_column :status
14
+
15
+ aasm_state :pending
16
+ aasm_state :started
17
+ aasm_state :finished
18
+
19
+ aasm_event :start do
20
+ transitions :to => :started, :from => [:pending]
21
+ end
22
+ end
23
+
24
+ mary = Mary.new
25
+
26
+ mary.aasm_current_state => :pending
27
+ mary.status => nil
28
+
29
+ mary.save
30
+
31
+ mary.aasm_current_state => :pending
32
+ mary.status => 0
33
+
34
+ mary.start!
35
+
36
+ mary.aasm_current_state => :started
37
+ mary.status => 1
38
+
39
+
40
+ Auto generated named scopes (Mary.pending, Mary.started) also works.
41
+
42
+ = AASM - Ruby state machines
43
+
44
+ This package contains AASM, a library for adding finite state machines to Ruby classes.
45
+
46
+ AASM started as the acts_as_state_machine plugin but has evolved into a more generic library that no longer targets only ActiveRecord models.
47
+
48
+ AASM has the following features:
49
+
50
+ * States
51
+ * Machines
52
+ * Events
53
+ * Transitions
54
+
55
+ == Download
56
+
57
+ The latest AASM can currently be pulled from the git repository on github.
58
+
59
+ * http://github.com/rubyist/aasm/tree/master
60
+
61
+ A release and a gem are forthcoming.
62
+
63
+
64
+
65
+ == Installation
66
+
67
+ === From GitHub hosted gems
68
+
69
+ % sudo gem sources -a http://gems.github.com # (you only need to do this once)
70
+ % sudo gem install rubyist-aasm
71
+
72
+ === Building your own gems
73
+
74
+ % rake gem
75
+ % sudo gem install pkg/aasm-2.0.1.gem
76
+
77
+
78
+ == Simple Example
79
+
80
+ Here's a quick example highlighting some of the features.
81
+
82
+ class Conversation
83
+ include AASM
84
+
85
+ aasm_initial_state :unread
86
+
87
+ aasm_state :unread
88
+ aasm_state :read
89
+ aasm_state :closed
90
+
91
+
92
+ aasm_event :view do
93
+ transitions :to => :read, :from => [:unread]
94
+ end
95
+
96
+ aasm_event :close do
97
+ transitions :to => :closed, :from => [:read, :unread]
98
+ end
99
+ end
100
+
101
+ = Other Stuff
102
+
103
+ Author:: Scott Barron <scott at elitists dot net>
104
+ License:: Copyright 2006, 2007, 2008 by Scott Barron.
105
+ Released under an MIT-style license. See the LICENSE file
106
+ included in the distribution.
107
+ Bugs:: http://rubyist.lighthouseapp.com/projects/13207-aasm/
108
+ GitHub:: http://github.com/rubyist/aasm/tree/master
109
+
110
+ == Warranty
111
+
112
+ This software is provided "as is" and without any express or
113
+ implied warranties, including, without limitation, the implied
114
+ warranties of merchantibility and fitness for a particular
115
+ purpose.
data/Rakefile ADDED
@@ -0,0 +1,94 @@
1
+ # Copyright 2008 Scott Barron (scott@elitists.net)
2
+ # All rights reserved
3
+
4
+ # This file may be distributed under an MIT style license.
5
+ # See MIT-LICENSE for details.
6
+
7
+ begin
8
+ require 'rubygems'
9
+ require 'rake/gempackagetask'
10
+ require 'rake/testtask'
11
+ require 'rake/rdoctask'
12
+ require 'spec/rake/spectask'
13
+ rescue Exception
14
+ nil
15
+ end
16
+
17
+ if `ruby -Ilib -raasm -e "print AASM.Version"` =~ /([0-9.]+)$/
18
+ CURRENT_VERSION = $1
19
+ else
20
+ CURRENT_VERSION = '0.0.0'
21
+ end
22
+ $package_version = CURRENT_VERSION
23
+
24
+ PKG_FILES = FileList['[A-Z]*',
25
+ 'lib/**/*.rb',
26
+ 'doc/**/*'
27
+ ]
28
+
29
+ desc 'Generate documentation for the acts as state machine plugin.'
30
+ rd = Rake::RDocTask.new(:rdoc) do |rdoc|
31
+ rdoc.rdoc_dir = 'html'
32
+ rdoc.template = 'doc/jamis.rb'
33
+ rdoc.rdoc_dir = 'rdoc'
34
+ rdoc.title = 'AASM'
35
+ rdoc.options << '--line-numbers' << '--inline-source' << '--main' << 'README.rdoc' << '--title' << 'AASM'
36
+ rdoc.rdoc_files.include('README.rdoc', 'MIT-LICENSE', 'TODO', 'CHANGELOG')
37
+ rdoc.rdoc_files.include('lib/**/*.rb', 'doc/**/*.rdoc')
38
+ end
39
+
40
+ if !defined?(Gem)
41
+ puts "Package target requires RubyGEMs"
42
+ else
43
+ spec = Gem::Specification.new do |s|
44
+ s.name = 'aasm'
45
+ s.version = $package_version
46
+ s.summary = 'State machine mixin for Ruby objects'
47
+ s.description = <<-EOF
48
+ AASM is a continuation of the acts as state machine rails plugin, built for plain Ruby objects.
49
+ EOF
50
+ s.files = PKG_FILES.to_a
51
+ s.require_path = 'lib'
52
+ s.has_rdoc = true
53
+ s.extra_rdoc_files = rd.rdoc_files.reject {|fn| fn =~ /\.rb$/}.to_a
54
+ s.rdoc_options = rd.options
55
+
56
+ s.author = 'Scott Barron'
57
+ s.email = 'scott@elitists.net'
58
+ s.homepage = 'http://rubyi.st/aasm'
59
+ end
60
+
61
+ package_task = Rake::GemPackageTask.new(spec) do |pkg|
62
+ pkg.need_zip = true
63
+ pkg.need_tar = true
64
+ end
65
+ end
66
+
67
+ if !defined?(Spec)
68
+ puts "spec and cruise targets require RSpec"
69
+ else
70
+ desc "Run all examples with RCov"
71
+ Spec::Rake::SpecTask.new('cruise') do |t|
72
+ t.spec_files = FileList['spec/**/*.rb']
73
+ t.rcov = true
74
+ t.rcov_opts = ['--exclude', 'spec', '--exclude', 'Library', '--exclude', 'rcov.rb']
75
+ end
76
+
77
+ desc "Run all examples"
78
+ Spec::Rake::SpecTask.new('spec') do |t|
79
+ t.spec_files = FileList['spec/**/*.rb']
80
+ t.rcov = false
81
+ t.spec_opts = ['-cfs']
82
+ end
83
+ end
84
+
85
+ if !defined?(Gem)
86
+ puts "Package target requires RubyGEMs"
87
+ else
88
+ desc "sudo gem uninstall aasm && rake gem && sudo gem install pkg/aasm-3.0.0.gem"
89
+ task :reinstall do
90
+ puts `sudo gem uninstall aasm && rake gem && sudo gem install pkg/aasm-3.0.0.gem`
91
+ end
92
+ end
93
+
94
+ task :default => [:spec]
data/TODO ADDED
@@ -0,0 +1,9 @@
1
+ Before Next Release:
2
+
3
+ * Add #aasm_next_state_for_event
4
+ * Add #aasm_next_states_for_event
5
+
6
+ Cool ideas from users:
7
+
8
+ * Support multiple state machines on one object (Chris Nelson)
9
+ * http://justbarebones.blogspot.com/2007/11/actsasstatemachine-enhancements.html (Chetan Patil)