gregfitz23-chrono_trigger 0.1.0 → 0.1.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
@@ -10,18 +10,19 @@ A cron framework for defining cron tasks using a readable DSL.
10
10
 
11
11
  == SYNOPSIS:
12
12
 
13
- Create trigger files (by default in the lib/triggers) directory.
13
+ Create trigger files directory.
14
14
  Triggers should follow the pattern:
15
15
 
16
- do
17
- trigger "name" do
18
- runs { code to execute }
19
- on :monday
20
- every :minutes=>10
21
- at :hour=>9, :minute=>[30,50]
22
- end
23
- end
24
- Run chrono_trigger -t{full path to trigger file}
16
+ trigger "name" do
17
+ runs { code to execute }
18
+ on :monday
19
+ every :minutes=>10
20
+ at :hour=>9, :minute=>[30,50]
21
+ end
22
+ Run `chrono_trigger -t{full path to trigger file}`.
23
+ Other available options are:
24
+ * -a - Specify an application context for the triggers to run against.
25
+ * -e - Specify the environment the triggers should run against
25
26
 
26
27
  == REQUIREMENTS:
27
28
 
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 0
2
+ :patch: 1
3
3
  :major: 0
4
4
  :minor: 1
@@ -1,3 +1,4 @@
1
+ require "chrono_trigger"
1
2
  module ChronoTrigger
2
3
 
3
4
  class Process
@@ -7,7 +8,7 @@ module ChronoTrigger
7
8
  setup(options)
8
9
 
9
10
  shell = ChronoTrigger::Shell.new
10
- shell.load_triggers(options[:trigger_file])
11
+ shell.load_triggers(options[:trigger_files].split(":"))
11
12
  loop do
12
13
  shell.execute_triggers
13
14
  sleep 1.minute.to_i
@@ -64,8 +64,8 @@ module ChronoTrigger
64
64
  opts.separator ""
65
65
  opts.separator ""; opts.separator "ChronoTrigger Options:"
66
66
 
67
- opts.on("-tTRIGGER_FILE", "--triggers TRIGGERS", "Path to file specifying triggers to be executed. When also specifying -a, this path will be relative to the application path") do |trigger_file|
68
- options[:trigger_file] = trigger_file
67
+ opts.on("-tTRIGGER_FILES", "--triggers TRIGGER_FILES", "Path to file(s) specifying triggers to be executed. Multiple files should be separated by a :. When also specifying -a, this path will be relative to the application path") do |trigger_files|
68
+ options[:trigger_files] = trigger_files
69
69
  end
70
70
 
71
71
  opts.on("-f", "--force", "Force restart of ChronoTrigger process (can be used in conjunction with -P).") do
@@ -55,7 +55,12 @@ module ChronoTrigger
55
55
  end
56
56
 
57
57
  def execute
58
- @exec_block.call
58
+ begin
59
+ @exec_block.call
60
+ rescue Exception
61
+ STDERR.puts "Exception #{$!.inspect} caught in Trigger##{self.name}. Backtrace:"
62
+ STDERR.puts $!.backtrace
63
+ end
59
64
  end
60
65
 
61
66
 
@@ -1,8 +1,13 @@
1
1
  trigger "trigger1" do
2
- runs { puts "trigger 1 runs every 1 minutes; executed at #{Time.now}"}}
2
+ runs { puts "trigger 1 runs every 1 minutes; executed at #{Time.now}" }
3
3
  every :minutes=>1
4
4
  end
5
5
 
6
+ trigger "exception trigger" do
7
+ runs { raise Exception.new("test exception")}
8
+ every :minutes=>2
9
+ end
10
+
6
11
  trigger "trigger2" do
7
12
  runs { puts "trigger 2 runs every 5 minutes; executed at #{Time.now}"}
8
13
  every :minutes=>5
data/test/test_helper.rb CHANGED
@@ -2,4 +2,12 @@ require 'stringio'
2
2
  require 'test/unit'
3
3
  require File.dirname(__FILE__) + '/../lib/chrono_trigger'
4
4
  require "shoulda"
5
- require "mocha"
5
+ require "mocha"
6
+
7
+
8
+ def quietly
9
+ old_stderr = $stderr
10
+ STDERR.reopen("/dev/null", 'w')
11
+ yield
12
+ $stderr = old_stderr
13
+ end
data/test/test_trigger.rb CHANGED
@@ -18,6 +18,18 @@ class TestTrigger < Test::Unit::TestCase
18
18
  should "execute @block_to_run on call to execute" do
19
19
  assert_equal @block_to_run, @trigger.execute
20
20
  end
21
+
22
+ context "that raises an exception" do
23
+ setup do
24
+ @trigger.runs { raise Exception.new("test error")}
25
+ end
26
+
27
+ should "be caught and logged by the trigger" do
28
+ assert_nothing_raised do
29
+ quietly { @trigger.execute }
30
+ end
31
+ end
32
+ end #that raises an exception
21
33
  end #and a block of code to run
22
34
 
23
35
  context "and a call to #on with some days" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gregfitz23-chrono_trigger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Greg Fitzgerald
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-09 00:00:00 -07:00
12
+ date: 2009-04-17 00:00:00 -07:00
13
13
  default_executable: chrono_trigger
14
14
  dependencies: []
15
15