dm-is-state_machine 0.10.1 → 0.10.2
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/LICENSE +1 -1
- data/Rakefile +23 -18
- data/VERSION +1 -0
- data/dm-is-state_machine.gemspec +84 -0
- data/lib/dm-is-state_machine/is/dsl/event_dsl.rb +2 -2
- data/lib/dm-is-state_machine/is/state_machine.rb +3 -3
- data/spec/integration/slot_machine_spec.rb +0 -4
- data/spec/integration/traffic_light_spec.rb +0 -4
- data/spec/rcov.opts +6 -0
- data/spec/spec.opts +2 -0
- data/tasks/ci.rake +1 -0
- data/tasks/metrics.rake +36 -0
- data/tasks/spec.rake +41 -0
- data/tasks/yard.rake +9 -0
- data/tasks/yardstick.rake +19 -0
- metadata +35 -17
- data/History.rdoc +0 -37
- data/Manifest.txt +0 -35
- data/TODO +0 -52
- data/lib/dm-is-state_machine/is/version.rb +0 -7
- data/tasks/install.rb +0 -13
- data/tasks/spec.rb +0 -25
data/LICENSE
CHANGED
data/Rakefile
CHANGED
@@ -1,24 +1,29 @@
|
|
1
|
-
require '
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
SUDO = (WINDOWS || JRUBY) ? '' : ('sudo' unless ENV['SUDOLESS'])
|
4
|
+
begin
|
5
|
+
gem 'jeweler', '~> 1.4'
|
6
|
+
require 'jeweler'
|
7
7
|
|
8
|
-
|
8
|
+
Jeweler::Tasks.new do |gem|
|
9
|
+
gem.name = 'dm-is-state_machine'
|
10
|
+
gem.summary = 'DataMapper plugin for creating state machines'
|
11
|
+
gem.description = gem.summary
|
12
|
+
gem.email = 'djwonk [a] collectiveinsight [d] net'
|
13
|
+
gem.homepage = 'http://github.com/datamapper/dm-more/tree/master/%s' % gem.name
|
14
|
+
gem.authors = [ 'David James' ]
|
9
15
|
|
10
|
-
|
11
|
-
EMAIL = 'djwonk [a] collectiveinsight [d] net'
|
12
|
-
GEM_NAME = 'dm-is-state_machine'
|
13
|
-
GEM_VERSION = DataMapper::Is::StateMachine::VERSION
|
14
|
-
GEM_DEPENDENCIES = [['dm-core', GEM_VERSION]]
|
15
|
-
GEM_CLEAN = %w[ log pkg coverage ]
|
16
|
-
GEM_EXTRAS = { :has_rdoc => true, :extra_rdoc_files => %w[ README.rdoc LICENSE TODO History.rdoc] }
|
16
|
+
gem.rubyforge_project = 'datamapper'
|
17
17
|
|
18
|
-
|
19
|
-
PROJECT_URL = "http://github.com/datamapper/dm-more/tree/master/#{GEM_NAME}"
|
20
|
-
PROJECT_DESCRIPTION = PROJECT_SUMMARY = 'DataMapper plugin for creating state machines'
|
18
|
+
gem.add_dependency 'dm-core', '~> 0.10.2'
|
21
19
|
|
22
|
-
|
23
|
-
|
20
|
+
gem.add_development_dependency 'rspec', '~> 1.2.9'
|
21
|
+
gem.add_development_dependency 'yard', '~> 0.4.0'
|
22
|
+
end
|
23
|
+
|
24
|
+
Jeweler::GemcutterTasks.new
|
25
|
+
|
26
|
+
FileList['tasks/**/*.rake'].each { |task| import task }
|
27
|
+
rescue LoadError
|
28
|
+
puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
|
24
29
|
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.10.2
|
@@ -0,0 +1,84 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{dm-is-state_machine}
|
8
|
+
s.version = "0.10.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["David James"]
|
12
|
+
s.date = %q{2009-12-11}
|
13
|
+
s.description = %q{DataMapper plugin for creating state machines}
|
14
|
+
s.email = %q{djwonk [a] collectiveinsight [d] net}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
"LICENSE",
|
21
|
+
"README.rdoc",
|
22
|
+
"Rakefile",
|
23
|
+
"VERSION",
|
24
|
+
"dm-is-state_machine.gemspec",
|
25
|
+
"lib/dm-is-state_machine.rb",
|
26
|
+
"lib/dm-is-state_machine/is/data/event.rb",
|
27
|
+
"lib/dm-is-state_machine/is/data/machine.rb",
|
28
|
+
"lib/dm-is-state_machine/is/data/state.rb",
|
29
|
+
"lib/dm-is-state_machine/is/dsl/event_dsl.rb",
|
30
|
+
"lib/dm-is-state_machine/is/dsl/state_dsl.rb",
|
31
|
+
"lib/dm-is-state_machine/is/state_machine.rb",
|
32
|
+
"spec/examples/invalid_events.rb",
|
33
|
+
"spec/examples/invalid_states.rb",
|
34
|
+
"spec/examples/invalid_transitions_1.rb",
|
35
|
+
"spec/examples/invalid_transitions_2.rb",
|
36
|
+
"spec/examples/slot_machine.rb",
|
37
|
+
"spec/examples/traffic_light.rb",
|
38
|
+
"spec/integration/invalid_events_spec.rb",
|
39
|
+
"spec/integration/invalid_states_spec.rb",
|
40
|
+
"spec/integration/invalid_transitions_spec.rb",
|
41
|
+
"spec/integration/slot_machine_spec.rb",
|
42
|
+
"spec/integration/traffic_light_spec.rb",
|
43
|
+
"spec/rcov.opts",
|
44
|
+
"spec/spec.opts",
|
45
|
+
"spec/spec_helper.rb",
|
46
|
+
"spec/unit/data/event_spec.rb",
|
47
|
+
"spec/unit/data/machine_spec.rb",
|
48
|
+
"spec/unit/data/state_spec.rb",
|
49
|
+
"spec/unit/dsl/event_dsl_spec.rb",
|
50
|
+
"spec/unit/dsl/state_dsl_spec.rb",
|
51
|
+
"spec/unit/state_machine_spec.rb",
|
52
|
+
"tasks/ci.rake",
|
53
|
+
"tasks/metrics.rake",
|
54
|
+
"tasks/spec.rake",
|
55
|
+
"tasks/yard.rake",
|
56
|
+
"tasks/yardstick.rake"
|
57
|
+
]
|
58
|
+
s.homepage = %q{http://github.com/datamapper/dm-more/tree/master/dm-is-state_machine}
|
59
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
60
|
+
s.require_paths = ["lib"]
|
61
|
+
s.rubyforge_project = %q{datamapper}
|
62
|
+
s.rubygems_version = %q{1.3.5}
|
63
|
+
s.summary = %q{DataMapper plugin for creating state machines}
|
64
|
+
|
65
|
+
if s.respond_to? :specification_version then
|
66
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
67
|
+
s.specification_version = 3
|
68
|
+
|
69
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
70
|
+
s.add_runtime_dependency(%q<dm-core>, ["~> 0.10.2"])
|
71
|
+
s.add_development_dependency(%q<rspec>, ["~> 1.2.9"])
|
72
|
+
s.add_development_dependency(%q<yard>, ["~> 0.4.0"])
|
73
|
+
else
|
74
|
+
s.add_dependency(%q<dm-core>, ["~> 0.10.2"])
|
75
|
+
s.add_dependency(%q<rspec>, ["~> 1.2.9"])
|
76
|
+
s.add_dependency(%q<yard>, ["~> 0.4.0"])
|
77
|
+
end
|
78
|
+
else
|
79
|
+
s.add_dependency(%q<dm-core>, ["~> 0.10.2"])
|
80
|
+
s.add_dependency(%q<rspec>, ["~> 1.2.9"])
|
81
|
+
s.add_dependency(%q<yard>, ["~> 0.4.0"])
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
@@ -51,9 +51,9 @@ module DataMapper
|
|
51
51
|
#
|
52
52
|
# self.class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
53
53
|
# def #{name}!
|
54
|
-
# machine.current_state_name =
|
54
|
+
# machine.current_state_name = __send__(:"#{column}")
|
55
55
|
# machine.fire_event(name, self)
|
56
|
-
#
|
56
|
+
# __send__(:"#{column}="), machine.current_state_name
|
57
57
|
# end
|
58
58
|
# RUBY
|
59
59
|
|
@@ -106,16 +106,16 @@ module DataMapper
|
|
106
106
|
if hook.respond_to?(:call)
|
107
107
|
hook.call(self)
|
108
108
|
else
|
109
|
-
|
109
|
+
__send__(hook)
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
113
|
def transition!(event_name)
|
114
114
|
machine = model.instance_variable_get(:@is_state_machine)[:machine]
|
115
115
|
column = machine.column
|
116
|
-
machine.current_state_name =
|
116
|
+
machine.current_state_name = __send__(column)
|
117
117
|
machine.fire_event(event_name, self)
|
118
|
-
|
118
|
+
__send__("#{column}=", machine.current_state_name)
|
119
119
|
end
|
120
120
|
|
121
121
|
end # InstanceMethods
|
data/spec/rcov.opts
ADDED
data/spec/spec.opts
CHANGED
data/tasks/ci.rake
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
task :ci => [ :verify_measurements, 'metrics:all' ]
|
data/tasks/metrics.rake
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
begin
|
2
|
+
require 'metric_fu'
|
3
|
+
rescue LoadError
|
4
|
+
namespace :metrics do
|
5
|
+
task :all do
|
6
|
+
abort 'metric_fu is not available. In order to run metrics:all, you must: gem install metric_fu'
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'reek/adapters/rake_task'
|
13
|
+
|
14
|
+
Reek::RakeTask.new do |t|
|
15
|
+
t.fail_on_error = true
|
16
|
+
t.verbose = false
|
17
|
+
t.source_files = 'lib/**/*.rb'
|
18
|
+
end
|
19
|
+
rescue LoadError
|
20
|
+
task :reek do
|
21
|
+
abort 'Reek is not available. In order to run reek, you must: gem install reek'
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
begin
|
26
|
+
require 'roodi'
|
27
|
+
require 'roodi_task'
|
28
|
+
|
29
|
+
RoodiTask.new do |t|
|
30
|
+
t.verbose = false
|
31
|
+
end
|
32
|
+
rescue LoadError
|
33
|
+
task :roodi do
|
34
|
+
abort 'Roodi is not available. In order to run roodi, you must: gem install roodi'
|
35
|
+
end
|
36
|
+
end
|
data/tasks/spec.rake
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
spec_defaults = lambda do |spec|
|
2
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
3
|
+
spec.libs << 'lib' << 'spec'
|
4
|
+
spec.spec_opts << '--options' << 'spec/spec.opts'
|
5
|
+
end
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'spec/rake/spectask'
|
9
|
+
|
10
|
+
Spec::Rake::SpecTask.new(:spec, &spec_defaults)
|
11
|
+
rescue LoadError
|
12
|
+
task :spec do
|
13
|
+
abort 'rspec is not available. In order to run spec, you must: gem install rspec'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
begin
|
18
|
+
require 'rcov'
|
19
|
+
require 'spec/rake/verify_rcov'
|
20
|
+
|
21
|
+
Spec::Rake::SpecTask.new(:rcov) do |rcov|
|
22
|
+
spec_defaults.call(rcov)
|
23
|
+
rcov.rcov = true
|
24
|
+
rcov.rcov_opts = File.read('spec/rcov.opts').split(/\s+/)
|
25
|
+
end
|
26
|
+
|
27
|
+
RCov::VerifyTask.new(:verify_rcov => :rcov) do |rcov|
|
28
|
+
rcov.threshold = 100
|
29
|
+
end
|
30
|
+
rescue LoadError
|
31
|
+
%w[ rcov verify_rcov ].each do |name|
|
32
|
+
task name do
|
33
|
+
abort "rcov is not available. In order to run #{name}, you must: gem install rcov"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
task :spec => :check_dependencies
|
39
|
+
task :rcov => :check_dependencies
|
40
|
+
|
41
|
+
task :default => :spec
|
data/tasks/yard.rake
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
begin
|
2
|
+
require 'pathname'
|
3
|
+
require 'yardstick/rake/measurement'
|
4
|
+
require 'yardstick/rake/verify'
|
5
|
+
|
6
|
+
# yardstick_measure task
|
7
|
+
Yardstick::Rake::Measurement.new
|
8
|
+
|
9
|
+
# verify_measurements task
|
10
|
+
Yardstick::Rake::Verify.new do |verify|
|
11
|
+
verify.threshold = 100
|
12
|
+
end
|
13
|
+
rescue LoadError
|
14
|
+
%w[ yardstick_measure verify_measurements ].each do |name|
|
15
|
+
task name.to_s do
|
16
|
+
abort "Yardstick is not available. In order to run #{name}, you must: gem install yardstick"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dm-is-state_machine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David James
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-11 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -18,29 +18,45 @@ dependencies:
|
|
18
18
|
version_requirement:
|
19
19
|
version_requirements: !ruby/object:Gem::Requirement
|
20
20
|
requirements:
|
21
|
-
- -
|
21
|
+
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.10.
|
23
|
+
version: 0.10.2
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.2.9
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: yard
|
37
|
+
type: :development
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.4.0
|
24
44
|
version:
|
25
45
|
description: DataMapper plugin for creating state machines
|
26
|
-
email:
|
27
|
-
- djwonk [a] collectiveinsight [d] net
|
46
|
+
email: djwonk [a] collectiveinsight [d] net
|
28
47
|
executables: []
|
29
48
|
|
30
49
|
extensions: []
|
31
50
|
|
32
51
|
extra_rdoc_files:
|
33
|
-
- README.rdoc
|
34
52
|
- LICENSE
|
35
|
-
-
|
36
|
-
- History.rdoc
|
53
|
+
- README.rdoc
|
37
54
|
files:
|
38
|
-
- History.rdoc
|
39
55
|
- LICENSE
|
40
|
-
- Manifest.txt
|
41
56
|
- README.rdoc
|
42
57
|
- Rakefile
|
43
|
-
-
|
58
|
+
- VERSION
|
59
|
+
- dm-is-state_machine.gemspec
|
44
60
|
- lib/dm-is-state_machine.rb
|
45
61
|
- lib/dm-is-state_machine/is/data/event.rb
|
46
62
|
- lib/dm-is-state_machine/is/data/machine.rb
|
@@ -48,7 +64,6 @@ files:
|
|
48
64
|
- lib/dm-is-state_machine/is/dsl/event_dsl.rb
|
49
65
|
- lib/dm-is-state_machine/is/dsl/state_dsl.rb
|
50
66
|
- lib/dm-is-state_machine/is/state_machine.rb
|
51
|
-
- lib/dm-is-state_machine/is/version.rb
|
52
67
|
- spec/examples/invalid_events.rb
|
53
68
|
- spec/examples/invalid_states.rb
|
54
69
|
- spec/examples/invalid_transitions_1.rb
|
@@ -60,6 +75,7 @@ files:
|
|
60
75
|
- spec/integration/invalid_transitions_spec.rb
|
61
76
|
- spec/integration/slot_machine_spec.rb
|
62
77
|
- spec/integration/traffic_light_spec.rb
|
78
|
+
- spec/rcov.opts
|
63
79
|
- spec/spec.opts
|
64
80
|
- spec/spec_helper.rb
|
65
81
|
- spec/unit/data/event_spec.rb
|
@@ -68,16 +84,18 @@ files:
|
|
68
84
|
- spec/unit/dsl/event_dsl_spec.rb
|
69
85
|
- spec/unit/dsl/state_dsl_spec.rb
|
70
86
|
- spec/unit/state_machine_spec.rb
|
71
|
-
- tasks/
|
72
|
-
- tasks/
|
87
|
+
- tasks/ci.rake
|
88
|
+
- tasks/metrics.rake
|
89
|
+
- tasks/spec.rake
|
90
|
+
- tasks/yard.rake
|
91
|
+
- tasks/yardstick.rake
|
73
92
|
has_rdoc: true
|
74
93
|
homepage: http://github.com/datamapper/dm-more/tree/master/dm-is-state_machine
|
75
94
|
licenses: []
|
76
95
|
|
77
96
|
post_install_message:
|
78
97
|
rdoc_options:
|
79
|
-
- --
|
80
|
-
- README.rdoc
|
98
|
+
- --charset=UTF-8
|
81
99
|
require_paths:
|
82
100
|
- lib
|
83
101
|
required_ruby_version: !ruby/object:Gem::Requirement
|
data/History.rdoc
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
=== 0.10.1 / 2009-09-30
|
2
|
-
|
3
|
-
* No changes this version
|
4
|
-
|
5
|
-
=== 0.10.0 / 2009-09-15
|
6
|
-
|
7
|
-
* Updated to work with dm-core 0.10.0
|
8
|
-
|
9
|
-
=== 0.9.11 / 2009-03-29
|
10
|
-
|
11
|
-
* No changes this version
|
12
|
-
|
13
|
-
=== 0.9.10 / 2009-01-19
|
14
|
-
|
15
|
-
* No changes this version
|
16
|
-
|
17
|
-
=== 0.9.9 / 2009-01-04
|
18
|
-
|
19
|
-
* 1 minor enhancement:
|
20
|
-
|
21
|
-
* Added transition! to allow before/after hooks to execute on state
|
22
|
-
transitions.
|
23
|
-
|
24
|
-
=== 0.9.8 / 2008-12-07
|
25
|
-
|
26
|
-
* No changes this version
|
27
|
-
|
28
|
-
=== 0.9.7 / 2008-11-18
|
29
|
-
|
30
|
-
* 4 minor enhancements:
|
31
|
-
|
32
|
-
* Added support to pass a symbol to a transition, which will call the
|
33
|
-
corresponding method. This means you don't have to put a whole
|
34
|
-
Proc inside the state machine definition if you don't want to.
|
35
|
-
* Added support for the :exit transition.
|
36
|
-
* Created a new example called SlotMachine in /spec/integration
|
37
|
-
* Updated README and TODO.
|
data/Manifest.txt
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
History.rdoc
|
2
|
-
LICENSE
|
3
|
-
Manifest.txt
|
4
|
-
README.rdoc
|
5
|
-
Rakefile
|
6
|
-
TODO
|
7
|
-
lib/dm-is-state_machine.rb
|
8
|
-
lib/dm-is-state_machine/is/data/event.rb
|
9
|
-
lib/dm-is-state_machine/is/data/machine.rb
|
10
|
-
lib/dm-is-state_machine/is/data/state.rb
|
11
|
-
lib/dm-is-state_machine/is/dsl/event_dsl.rb
|
12
|
-
lib/dm-is-state_machine/is/dsl/state_dsl.rb
|
13
|
-
lib/dm-is-state_machine/is/state_machine.rb
|
14
|
-
lib/dm-is-state_machine/is/version.rb
|
15
|
-
spec/examples/invalid_events.rb
|
16
|
-
spec/examples/invalid_states.rb
|
17
|
-
spec/examples/invalid_transitions_1.rb
|
18
|
-
spec/examples/invalid_transitions_2.rb
|
19
|
-
spec/examples/slot_machine.rb
|
20
|
-
spec/examples/traffic_light.rb
|
21
|
-
spec/integration/invalid_events_spec.rb
|
22
|
-
spec/integration/invalid_states_spec.rb
|
23
|
-
spec/integration/invalid_transitions_spec.rb
|
24
|
-
spec/integration/slot_machine_spec.rb
|
25
|
-
spec/integration/traffic_light_spec.rb
|
26
|
-
spec/spec.opts
|
27
|
-
spec/spec_helper.rb
|
28
|
-
spec/unit/data/event_spec.rb
|
29
|
-
spec/unit/data/machine_spec.rb
|
30
|
-
spec/unit/data/state_spec.rb
|
31
|
-
spec/unit/dsl/event_dsl_spec.rb
|
32
|
-
spec/unit/dsl/state_dsl_spec.rb
|
33
|
-
spec/unit/state_machine_spec.rb
|
34
|
-
tasks/install.rb
|
35
|
-
tasks/spec.rb
|
data/TODO
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
TODO
|
2
|
-
====
|
3
|
-
|
4
|
-
* Take a look at using DataMapper's Enum type.
|
5
|
-
- Does the Enum type support for all databases? (SQLite?)
|
6
|
-
|
7
|
-
|
8
|
-
* I am not real happy with spec/unit/dsl:
|
9
|
-
- The specs are brittle.
|
10
|
-
- The specs don't actually test much.
|
11
|
-
|
12
|
-
However, the integration specs are pretty thorough. Maybe each
|
13
|
-
serves their own purpose.
|
14
|
-
|
15
|
-
|
16
|
-
API QUESTIONS
|
17
|
-
=============
|
18
|
-
|
19
|
-
* Some people are asking for convenience methods.
|
20
|
-
|
21
|
-
For example, instead of:
|
22
|
-
light = TrafficLight.new
|
23
|
-
light.color == "yellow"
|
24
|
-
|
25
|
-
We could possibly offer:
|
26
|
-
light.yellow?
|
27
|
-
|
28
|
-
Advantages:
|
29
|
-
- More compact syntax.
|
30
|
-
|
31
|
-
Disadvantages:
|
32
|
-
- Namespace pollution
|
33
|
-
- Possible namespace collision if you have more than one state machine
|
34
|
-
in your model.
|
35
|
-
|
36
|
-
|
37
|
-
* Should skipping to a new state automatically trigger the :enter event?
|
38
|
-
|
39
|
-
|
40
|
-
* Should we add loopback checking?
|
41
|
-
|
42
|
-
In other words, if there is a transition defined from one state back to
|
43
|
-
the same state, should the :enter and :exit events fire?
|
44
|
-
|
45
|
-
|
46
|
-
* Should we add support for DataMapper callbacks? (e.g. after saving)
|
47
|
-
|
48
|
-
|
49
|
-
SOMEDAY / MAYBE
|
50
|
-
===============
|
51
|
-
|
52
|
-
* Consider trying out a nested state machine.
|
data/tasks/install.rb
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
def sudo_gem(cmd)
|
2
|
-
sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
|
3
|
-
end
|
4
|
-
|
5
|
-
desc "Install #{GEM_NAME} #{GEM_VERSION}"
|
6
|
-
task :install => [ :package ] do
|
7
|
-
sudo_gem "install pkg/#{GEM_NAME}-#{GEM_VERSION} --no-update-sources"
|
8
|
-
end
|
9
|
-
|
10
|
-
desc "Uninstall #{GEM_NAME} #{GEM_VERSION}"
|
11
|
-
task :uninstall => [ :clobber ] do
|
12
|
-
sudo_gem "uninstall #{GEM_NAME} -v#{GEM_VERSION} -Ix"
|
13
|
-
end
|
data/tasks/spec.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'spec/rake/spectask'
|
3
|
-
|
4
|
-
task :default => [ :spec ]
|
5
|
-
|
6
|
-
desc 'Run specifications'
|
7
|
-
Spec::Rake::SpecTask.new(:spec) do |t|
|
8
|
-
t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
|
9
|
-
t.libs << 'lib' << 'spec' # needed for CI rake spec task, duplicated in spec_helper
|
10
|
-
|
11
|
-
begin
|
12
|
-
require 'rcov'
|
13
|
-
t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
|
14
|
-
t.rcov_opts << '--exclude' << 'spec'
|
15
|
-
t.rcov_opts << '--text-summary'
|
16
|
-
t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
|
17
|
-
rescue LoadError
|
18
|
-
# rcov not installed
|
19
|
-
rescue SyntaxError
|
20
|
-
# rcov syntax invalid
|
21
|
-
end
|
22
|
-
end
|
23
|
-
rescue LoadError
|
24
|
-
# rspec not installed
|
25
|
-
end
|