fabrika 0.0.1.pre
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/lib/fabrika.rb +6 -0
- data/lib/fabrika/process.rb +44 -0
- data/lib/fabrika/step.rb +59 -0
- metadata +82 -0
data/lib/fabrika.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
class Fabrika::Process
|
2
|
+
|
3
|
+
attr_accessor :steps
|
4
|
+
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def steps(&block)
|
8
|
+
@step_definition = block
|
9
|
+
end
|
10
|
+
|
11
|
+
def step_definition
|
12
|
+
@step_definition
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
initialize_steps
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_step(name, options = {})
|
22
|
+
klass_name = options.delete(:class_name) || "#{self.class}::Steps::#{name.to_s.camelcase}"
|
23
|
+
steps[name] = klass_name.constantize.new(self, options)
|
24
|
+
end
|
25
|
+
|
26
|
+
alias :step :add_step
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def initialize_steps
|
31
|
+
@steps = {}
|
32
|
+
instance_eval &self.class.step_definition
|
33
|
+
end
|
34
|
+
|
35
|
+
def method_missing(name, *args)
|
36
|
+
case name.to_s
|
37
|
+
when /^(.*)_step$/
|
38
|
+
steps[$1.to_sym]
|
39
|
+
else
|
40
|
+
super
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
data/lib/fabrika/step.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
class Fabrika::Step
|
2
|
+
|
3
|
+
class << self
|
4
|
+
|
5
|
+
def data(name, options = {}, &block)
|
6
|
+
raise "Block Missing" unless block_given?
|
7
|
+
define_method name do
|
8
|
+
instance_eval(&block)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def before(&block)
|
13
|
+
add_callback :before, &block
|
14
|
+
end
|
15
|
+
|
16
|
+
def after(&block)
|
17
|
+
add_callback :before, &block
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
def add_callback(event, &block)
|
22
|
+
@callbacks ||= {}
|
23
|
+
@callbacks[event] ||= []
|
24
|
+
@callbacks[event] << block
|
25
|
+
end
|
26
|
+
|
27
|
+
def callbacks
|
28
|
+
@callbacks || {}
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
|
33
|
+
def initialize(process, options = {})
|
34
|
+
@process, @options = process, options
|
35
|
+
end
|
36
|
+
|
37
|
+
def execute
|
38
|
+
raise "#execute called on the Process base class. Please implement this method in the sub-class."
|
39
|
+
end
|
40
|
+
|
41
|
+
def run(*args)
|
42
|
+
callbacks! :before
|
43
|
+
execute
|
44
|
+
callbacks! :after
|
45
|
+
end
|
46
|
+
|
47
|
+
protected
|
48
|
+
|
49
|
+
def callbacks!(event)
|
50
|
+
return if self.class.callbacks.empty?
|
51
|
+
|
52
|
+
self.class.callbacks[event].each do |callback|
|
53
|
+
instance_eval &callback
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
end
|
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fabrika
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.pre
|
5
|
+
prerelease: 6
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Nikolay Efimov
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2014-01-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.3'
|
21
|
+
none: false
|
22
|
+
prerelease: false
|
23
|
+
type: :development
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.3'
|
29
|
+
none: false
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ! '>='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
none: false
|
38
|
+
prerelease: false
|
39
|
+
type: :development
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
none: false
|
46
|
+
description: Mini-Framework for creating step-based processes for Rails
|
47
|
+
email:
|
48
|
+
- nik.efimov@yahoo.ca
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- lib/fabrika.rb
|
54
|
+
- lib/fabrika/process.rb
|
55
|
+
- lib/fabrika/step.rb
|
56
|
+
homepage: ''
|
57
|
+
licenses:
|
58
|
+
- MIT
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
none: false
|
69
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ! '>'
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 1.3.1
|
74
|
+
none: false
|
75
|
+
requirements: []
|
76
|
+
rubyforge_project:
|
77
|
+
rubygems_version: 1.8.25
|
78
|
+
signing_key:
|
79
|
+
specification_version: 3
|
80
|
+
summary: ''
|
81
|
+
test_files: []
|
82
|
+
has_rdoc:
|