rules_engine_templates 0.0.2 → 0.0.3

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.
Files changed (46) hide show
  1. data/VERSION +1 -1
  2. data/rails_generators/manifests/plan_start.rb +26 -0
  3. data/rails_generators/manifests/plan_start.yml +20 -0
  4. data/rails_generators/manifests/tweet_filter.rb +2 -4
  5. data/rails_generators/manifests/tweet_filter.yml +2 -5
  6. data/rails_generators/manifests/tweet_reader.rb +26 -0
  7. data/rails_generators/manifests/tweet_reader.yml +20 -0
  8. data/rails_generators/manifests/workflow_start.rb +26 -0
  9. data/rails_generators/manifests/workflow_start.yml +20 -0
  10. data/rails_generators/manifests/workflow_stop.rb +26 -0
  11. data/rails_generators/manifests/workflow_stop.yml +20 -0
  12. data/rails_generators/templates/app/rules/plan_start.rb +89 -0
  13. data/rails_generators/templates/app/rules/tweet_filter.rb +6 -3
  14. data/rails_generators/templates/app/rules/tweet_reader.rb +99 -0
  15. data/rails_generators/templates/app/rules/workflow_start.rb +84 -0
  16. data/rails_generators/templates/app/rules/workflow_stop.rb +80 -0
  17. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_edit.html.erb +1 -0
  18. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_form.html.erb +21 -0
  19. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_help.html.erb +1 -0
  20. data/rails_generators/templates/app/views/re_rule_definitions/plan_start/_new.html.erb +1 -0
  21. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_edit.html.erb +1 -5
  22. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_form.html.erb +34 -0
  23. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/{_word.html.erb → _form_word.html.erb} +0 -0
  24. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_help.html.erb +1 -1
  25. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_new.html.erb +1 -5
  26. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_edit.html.erb +1 -0
  27. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_form.html.erb +29 -0
  28. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_help.html.erb +1 -0
  29. data/rails_generators/templates/app/views/re_rule_definitions/tweet_reader/_new.html.erb +1 -0
  30. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_edit.html.erb +1 -0
  31. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_form.html.erb +21 -0
  32. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_help.html.erb +1 -0
  33. data/rails_generators/templates/app/views/re_rule_definitions/workflow_start/_new.html.erb +1 -0
  34. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_edit.html.erb +1 -0
  35. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_form.html.erb +25 -0
  36. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_help.html.erb +1 -0
  37. data/rails_generators/templates/app/views/re_rule_definitions/workflow_stop/_new.html.erb +1 -0
  38. data/rails_generators/templates/spec/lib/rules/plan_start_spec.rb +237 -0
  39. data/rails_generators/templates/spec/lib/rules/tweet_filter_spec.rb +61 -10
  40. data/rails_generators/templates/spec/lib/rules/tweet_reader_spec.rb +272 -0
  41. data/rails_generators/templates/spec/lib/rules/workflow_start_spec.rb +223 -0
  42. data/rails_generators/templates/spec/lib/rules/workflow_stop_spec.rb +212 -0
  43. metadata +38 -8
  44. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_script.html.erb +0 -8
  45. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_title.html.erb +0 -7
  46. data/rails_generators/templates/app/views/re_rule_definitions/tweet_filter/_words.html.erb +0 -16
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -0,0 +1,26 @@
1
+ class PlanStartManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ lib/tasks
8
+ spec/lib/rules
9
+ ).each do |dirname|
10
+ m.directory dirname
11
+ end
12
+
13
+ %W(
14
+ ).each do |filename|
15
+ m.file filename, filename
16
+ end
17
+
18
+ m.template "app/rules/plan_start.rb", "app/rules/#{rule_name}.rb"
19
+ m.template "app/views/re_rule_definitions/plan_start/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/plan_start/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/plan_start/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
+ m.template "app/views/re_rule_definitions/plan_start/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "spec/lib/rules/plan_start_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+ - lib/tasks
5
+
6
+ templates :
7
+ replacements :
8
+ - plan_start : rule_name
9
+ - PlanStart : rule_class
10
+
11
+ directories :
12
+ - app/views/re_rule_definitions/plan_start
13
+
14
+ files :
15
+ - app/rules/plan_start.rb
16
+ - app/views/re_rule_definitions/plan_start/_edit.html.erb
17
+ - app/views/re_rule_definitions/plan_start/_form.html.erb
18
+ - app/views/re_rule_definitions/plan_start/_help.html.erb
19
+ - app/views/re_rule_definitions/plan_start/_new.html.erb
20
+ - spec/lib/rules/plan_start_spec.rb
@@ -17,12 +17,10 @@ class TweetFilterManifest
17
17
 
18
18
  m.template "app/rules/tweet_filter.rb", "app/rules/#{rule_name}.rb"
19
19
  m.template "app/views/re_rule_definitions/tweet_filter/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/tweet_filter/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/tweet_filter/_form_word.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form_word.html.erb"
20
22
  m.template "app/views/re_rule_definitions/tweet_filter/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
21
23
  m.template "app/views/re_rule_definitions/tweet_filter/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
22
- m.template "app/views/re_rule_definitions/tweet_filter/_script.html.erb", "app/views/re_rule_definitions/#{rule_name}/_script.html.erb"
23
- m.template "app/views/re_rule_definitions/tweet_filter/_title.html.erb", "app/views/re_rule_definitions/#{rule_name}/_title.html.erb"
24
- m.template "app/views/re_rule_definitions/tweet_filter/_word.html.erb", "app/views/re_rule_definitions/#{rule_name}/_word.html.erb"
25
- m.template "app/views/re_rule_definitions/tweet_filter/_words.html.erb", "app/views/re_rule_definitions/#{rule_name}/_words.html.erb"
26
24
  m.template "spec/lib/rules/tweet_filter_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
27
25
 
28
26
  end
@@ -14,11 +14,8 @@ templates :
14
14
  files :
15
15
  - app/rules/tweet_filter.rb
16
16
  - app/views/re_rule_definitions/tweet_filter/_edit.html.erb
17
+ - app/views/re_rule_definitions/tweet_filter/_form_word.html.erb
18
+ - app/views/re_rule_definitions/tweet_filter/_form.html.erb
17
19
  - app/views/re_rule_definitions/tweet_filter/_help.html.erb
18
20
  - app/views/re_rule_definitions/tweet_filter/_new.html.erb
19
- - app/views/re_rule_definitions/tweet_filter/_script.html.erb
20
- - app/views/re_rule_definitions/tweet_filter/_title.html.erb
21
- - app/views/re_rule_definitions/tweet_filter/_word.html.erb
22
- - app/views/re_rule_definitions/tweet_filter/_words.html.erb
23
21
  - spec/lib/rules/tweet_filter_spec.rb
24
-
@@ -0,0 +1,26 @@
1
+ class TweetReaderManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ lib/tasks
8
+ spec/lib/rules
9
+ ).each do |dirname|
10
+ m.directory dirname
11
+ end
12
+
13
+ %W(
14
+ ).each do |filename|
15
+ m.file filename, filename
16
+ end
17
+
18
+ m.template "app/rules/tweet_reader.rb", "app/rules/#{rule_name}.rb"
19
+ m.template "app/views/re_rule_definitions/tweet_reader/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/tweet_reader/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/tweet_reader/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
+ m.template "app/views/re_rule_definitions/tweet_reader/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "spec/lib/rules/tweet_reader_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+ - lib/tasks
5
+
6
+ templates :
7
+ replacements :
8
+ - tweet_reader : rule_name
9
+ - TweetReader : rule_class
10
+
11
+ directories :
12
+ - app/views/re_rule_definitions/tweet_reader
13
+
14
+ files :
15
+ - app/rules/tweet_reader.rb
16
+ - app/views/re_rule_definitions/tweet_reader/_edit.html.erb
17
+ - app/views/re_rule_definitions/tweet_reader/_form.html.erb
18
+ - app/views/re_rule_definitions/tweet_reader/_help.html.erb
19
+ - app/views/re_rule_definitions/tweet_reader/_new.html.erb
20
+ - spec/lib/rules/tweet_reader_spec.rb
@@ -0,0 +1,26 @@
1
+ class WorkflowStartManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ lib/tasks
8
+ spec/lib/rules
9
+ ).each do |dirname|
10
+ m.directory dirname
11
+ end
12
+
13
+ %W(
14
+ ).each do |filename|
15
+ m.file filename, filename
16
+ end
17
+
18
+ m.template "app/rules/workflow_start.rb", "app/rules/#{rule_name}.rb"
19
+ m.template "app/views/re_rule_definitions/workflow_start/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/workflow_start/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/workflow_start/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
+ m.template "app/views/re_rule_definitions/workflow_start/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "spec/lib/rules/workflow_start_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+ - lib/tasks
5
+
6
+ templates :
7
+ replacements :
8
+ - workflow_start : rule_name
9
+ - WorkflowStart : rule_class
10
+
11
+ directories :
12
+ - app/views/re_rule_definitions/workflow_start
13
+
14
+ files :
15
+ - app/rules/workflow_start.rb
16
+ - app/views/re_rule_definitions/workflow_start/_edit.html.erb
17
+ - app/views/re_rule_definitions/workflow_start/_form.html.erb
18
+ - app/views/re_rule_definitions/workflow_start/_help.html.erb
19
+ - app/views/re_rule_definitions/workflow_start/_new.html.erb
20
+ - spec/lib/rules/workflow_start_spec.rb
@@ -0,0 +1,26 @@
1
+ class WorkflowStopManifest
2
+ def self.populate_record(m, rule_name ,rule_class)
3
+
4
+ %W(
5
+ app/rules
6
+ app/views/re_rule_definitions/#{rule_name}
7
+ lib/tasks
8
+ spec/lib/rules
9
+ ).each do |dirname|
10
+ m.directory dirname
11
+ end
12
+
13
+ %W(
14
+ ).each do |filename|
15
+ m.file filename, filename
16
+ end
17
+
18
+ m.template "app/rules/workflow_stop.rb", "app/rules/#{rule_name}.rb"
19
+ m.template "app/views/re_rule_definitions/workflow_stop/_edit.html.erb", "app/views/re_rule_definitions/#{rule_name}/_edit.html.erb"
20
+ m.template "app/views/re_rule_definitions/workflow_stop/_form.html.erb", "app/views/re_rule_definitions/#{rule_name}/_form.html.erb"
21
+ m.template "app/views/re_rule_definitions/workflow_stop/_help.html.erb", "app/views/re_rule_definitions/#{rule_name}/_help.html.erb"
22
+ m.template "app/views/re_rule_definitions/workflow_stop/_new.html.erb", "app/views/re_rule_definitions/#{rule_name}/_new.html.erb"
23
+ m.template "spec/lib/rules/workflow_stop_spec.rb", "spec/lib/rules/#{rule_name}_spec.rb"
24
+
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ directories :
2
+ - app/rules
3
+ - spec/lib/rules
4
+ - lib/tasks
5
+
6
+ templates :
7
+ replacements :
8
+ - workflow_stop : rule_name
9
+ - WorkflowStop : rule_class
10
+
11
+ directories :
12
+ - app/views/re_rule_definitions/workflow_stop
13
+
14
+ files :
15
+ - app/rules/workflow_stop.rb
16
+ - app/views/re_rule_definitions/workflow_stop/_edit.html.erb
17
+ - app/views/re_rule_definitions/workflow_stop/_form.html.erb
18
+ - app/views/re_rule_definitions/workflow_stop/_help.html.erb
19
+ - app/views/re_rule_definitions/workflow_stop/_new.html.erb
20
+ - spec/lib/rules/workflow_stop_spec.rb
@@ -0,0 +1,89 @@
1
+ module RulesEngine
2
+ module Rule
3
+ class <%=rule_class%> < RulesEngine::Rule::Definition
4
+
5
+ attr_reader :plan
6
+
7
+ ##################################################################
8
+ # class options
9
+ self.options =
10
+ {
11
+ :group => 'Workflow',
12
+ :display_name => 'Plan Start',
13
+ :help_partial => '/re_rule_definitions/<%=rule_name%>/help',
14
+ :new_partial => '/re_rule_definitions/<%=rule_name%>/new',
15
+ :edit_partial => '/re_rule_definitions/<%=rule_name%>/edit'
16
+ }
17
+
18
+ ##################################################################
19
+ # set the rule data
20
+ def data= data
21
+ if data.nil?
22
+ @title = nil
23
+ @plan = nil
24
+ else
25
+ @title, @plan = ActiveSupport::JSON.decode(data)
26
+ end
27
+ end
28
+
29
+ ##################################################################
30
+ # get the rule attributes
31
+ def title
32
+ @title
33
+ end
34
+
35
+ def summary
36
+ "Run the plan : #{plan}"
37
+ end
38
+
39
+ def data
40
+ [title, plan].to_json
41
+ end
42
+
43
+ def expected_outcomes
44
+ [{:outcome => RulesEngine::Rule::Outcome::NEXT}, {:outcome => RulesEngine::Rule::Outcome::STOP_FAILURE}]
45
+ end
46
+
47
+ ##################################################################
48
+ # set the rule attributes
49
+ def attributes=(params)
50
+ param_hash = params.symbolize_keys
51
+
52
+ @title = param_hash[:<%=rule_name%>_title]
53
+ @plan = param_hash[:<%=rule_name%>_plan]
54
+ end
55
+
56
+ ##################################################################
57
+ # validation and errors
58
+ def valid?
59
+ @errors = {}
60
+ @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
61
+ @errors[:<%=rule_name%>_plan] = "Plan required" if plan.blank?
62
+ return @errors.empty?
63
+ end
64
+
65
+ ##################################################################
66
+ # callbacks when the rule is added and removed from a workflow
67
+ def before_create()
68
+ end
69
+
70
+ def before_update()
71
+ end
72
+
73
+ def before_destroy()
74
+ end
75
+
76
+ ##################################################################
77
+ # execute the rule
78
+ def process(process_id, data)
79
+ sub_process_id = RulesEngine::Process.runner.create
80
+
81
+ RulesEngine::Process.auditor.audit(process_id, "Starting Sub Plan #{sub_process_id}", RulesEngine::Process::AUDIT_INFO)
82
+ success = RulesEngine::Process.runner.run(sub_process_id, plan, data)
83
+ RulesEngine::Process.auditor.audit(process_id, "Finished Sub Plan #{sub_process_id}", success ? RulesEngine::Process::AUDIT_SUCCESS : RulesEngine::Process::AUDIT_FAILURE)
84
+
85
+ return success ? RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::NEXT) : RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_FAILURE)
86
+ end
87
+ end
88
+ end
89
+ end
@@ -72,10 +72,13 @@ module RulesEngine
72
72
 
73
73
  ##################################################################
74
74
  # callbacks when the rule is added and removed from a workflow
75
- def after_add_to_workflow(workflow_code)
75
+ def before_create()
76
76
  end
77
77
 
78
- def before_remove_from_workflow(workflow_code)
78
+ def before_update()
79
+ end
80
+
81
+ def before_destroy()
79
82
  end
80
83
 
81
84
  ##################################################################
@@ -91,7 +94,7 @@ module RulesEngine
91
94
 
92
95
  words.each do |word|
93
96
  if /#{word}/i =~ tweet
94
- RulesEngine::Process.auditor.audit(process_id, "#{title} Found #{word}", RulesEngine::Process::AUDIT_INFO)
97
+ RulesEngine::Process.auditor.audit(process_id, "Found #{word}", RulesEngine::Process::AUDIT_INFO)
95
98
  data[:match] = word
96
99
  return RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_SUCCESS)
97
100
  end
@@ -0,0 +1,99 @@
1
+ require 'twitter'
2
+
3
+ MAX_PAGES = 5 unless defined?(MAX_PAGES)
4
+ TWITTER_RPP = 40 unless defined?(TWITTER_RPP)
5
+
6
+ module RulesEngine
7
+ module Rule
8
+ class <%=rule_class%> < RulesEngine::Rule::Definition
9
+
10
+ attr_reader :message
11
+ attr_reader :plan
12
+
13
+ ##################################################################
14
+ # class options
15
+ self.options =
16
+ {
17
+ :group => 'Twitter',
18
+ :display_name => 'Twitter Reader',
19
+ :help_partial => '/re_rule_definitions/<%=rule_name%>/help',
20
+ :new_partial => '/re_rule_definitions/<%=rule_name%>/new',
21
+ :edit_partial => '/re_rule_definitions/<%=rule_name%>/edit'
22
+ }
23
+
24
+ ##################################################################
25
+ # set the rule data
26
+ def data= data
27
+ if data.nil?
28
+ @title = nil
29
+ @message = nil
30
+ @plan = nil
31
+ else
32
+ @title, @message, @plan = ActiveSupport::JSON.decode(data)
33
+ end
34
+ end
35
+
36
+ ##################################################################
37
+ # get the rule attributes
38
+ def title
39
+ @title
40
+ end
41
+
42
+ def summary
43
+ "Look for \"#{message}\" and send matches to the plan : #{plan}"
44
+ end
45
+
46
+ def data
47
+ [title, message, plan].to_json
48
+ end
49
+
50
+ def expected_outcomes
51
+ [{:outcome => RulesEngine::Rule::Outcome::NEXT}, {:outcome => RulesEngine::Rule::Outcome::STOP_FAILURE}]
52
+ end
53
+
54
+ ##################################################################
55
+ # set the rule attributes
56
+ def attributes=(params)
57
+ param_hash = params.symbolize_keys
58
+
59
+ @title = param_hash[:<%=rule_name%>_title]
60
+ @message = param_hash[:<%=rule_name%>_message]
61
+ @plan = param_hash[:<%=rule_name%>_plan]
62
+ end
63
+
64
+ ##################################################################
65
+ # validation and errors
66
+ def valid?
67
+ @errors = {}
68
+ @errors[:<%=rule_name%>_title] = "Title required" if title.blank?
69
+ @errors[:<%=rule_name%>_message] = "Message required" if message.blank?
70
+ @errors[:<%=rule_name%>_plan] = "Plan required" if plan.blank?
71
+ return @errors.empty?
72
+ end
73
+
74
+ ##################################################################
75
+ # callbacks when the rule is added and removed from a workflow
76
+ def before_create()
77
+ end
78
+
79
+ def before_update()
80
+ end
81
+
82
+ def before_destroy()
83
+ end
84
+
85
+ ##################################################################
86
+ # execute the rule
87
+ def process(process_id, data)
88
+
89
+ sub_process_id = RulesEngine::Process.runner.create
90
+
91
+ RulesEngine::Process.auditor.audit(process_id, "Starting Sub Plan #{sub_process_id}", RulesEngine::Process::AUDIT_INFO)
92
+ success = RulesEngine::Process.runner.run(sub_process_id, plan, data.merge(:message => message))
93
+ RulesEngine::Process.auditor.audit(process_id, "Finished Sub Plan #{sub_process_id}", success ? RulesEngine::Process::AUDIT_SUCCESS : RulesEngine::Process::AUDIT_FAILURE)
94
+
95
+ return success ? RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::NEXT) : RulesEngine::Rule::Outcome.new(RulesEngine::Rule::Outcome::STOP_FAILURE)
96
+ end
97
+ end
98
+ end
99
+ end