everyx 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,5 @@
1
+ == 1.0.0 / 2007-11-09
2
+
3
+ * First release. Very simple periodict task runner. They run every x seconds.
4
+ * RSSNotifier task. Very dirty, but works.
5
+
@@ -0,0 +1,8 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ bin/everyx
6
+ lib/everyx.rb
7
+ test/test_everyx.rb
8
+
@@ -0,0 +1,39 @@
1
+ everyx
2
+ by Jon Moses
3
+ http://burningbush.rubyforge.org/everyx/
4
+
5
+ == DESCRIPTION:
6
+
7
+ Everyx is a simple class for managing and runner periodic tasks. It comes with some simple, common tasks. At least, it will. Right now it just has a RSS checker.
8
+
9
+ == features/PROBLEMS:
10
+
11
+ * Schedule tasks to run every X seconds
12
+ * Multiple schedules
13
+
14
+ == SYNOPSIS:
15
+
16
+ ex = Everyx::Everyx.new ## Create new runner
17
+
18
+ pt = Everyx::PeriodicTasks::RSSNotifier.new ## Create notifier
19
+ pt.uri = "http://path.to/rss-feed" ## Set it to uri
20
+
21
+ ex.add( pt, (60*15) ) ## Add to runner to run every 15 minutes
22
+ es.join ## Join, so the process doesn't exit. Calls Thread.join on all
23
+ ## task threads.
24
+
25
+ The requirements listed below are not for Everyx, but for the periodic tasks. Everyx (just the runner) has no dependencies.
26
+
27
+ == REQUIREMENTS:
28
+
29
+ * rss
30
+ * open-uri
31
+ * nserver
32
+
33
+ == INSTALL:
34
+
35
+ % gem install everyx
36
+
37
+ == LICENSE:
38
+
39
+ Everyx is released under the GPL. Text is available at http://www.gnu.org/copyleft/gpl.html
@@ -0,0 +1,24 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require './lib/everyx.rb'
6
+
7
+ Hoe.new('everyx', Everyx::VERSION) do |p|
8
+ p.rubyforge_name = 'burningbush'
9
+ p.author = 'Jon Moses'
10
+ p.email = 'jon@burningbush.us'
11
+ p.summary = 'Code to run some classes every x seconds'
12
+ p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
13
+ p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
14
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
15
+ p.rubyforge_name = 'burningbush'
16
+ end
17
+
18
+ desc "Release and publish documentation"
19
+ task :repubdoc => [:release, :publish_docs]
20
+
21
+ desc "Publish actions"
22
+ task :release_all => [:release, :publish_docs, :post_news]
23
+
24
+ # vim: syntax=Ruby
File without changes
@@ -0,0 +1,66 @@
1
+ module Everyx
2
+ VERSION = '1.0.0'
3
+ class Everyx
4
+ def initialize
5
+ @threads = []
6
+ end
7
+
8
+ def add( runner, delay = 60 )
9
+ @threads << Thread.new(runner, delay) do |r,delay|
10
+ loop do
11
+ r.run
12
+ sleep delay
13
+ end
14
+ end
15
+ end
16
+
17
+ def join
18
+ @threads.each {|t| t.join }
19
+ end
20
+ end
21
+
22
+
23
+ module PeriodicTasks
24
+ class RSSNotifier
25
+ require 'rss/1.0'
26
+ require 'rss/2.0'
27
+ require 'open-uri'
28
+ require 'rubygems'
29
+ require 'nserver'
30
+
31
+ attr :uri, :writable => true
32
+ attr :delay, :writable => true
33
+
34
+ def initialize
35
+ @uri, @delay = nil, ( 60 * 15 )
36
+ @last = nil
37
+ end
38
+
39
+ def run
40
+ rss = RSS::Parser.parse( open(@uri) {|s| s.read }, false )
41
+ new = []
42
+ first_new = nil
43
+ rss.items.each do |item|
44
+ if item.link != @last
45
+ first_new = item.link unless first_new
46
+ new << item.title
47
+ else
48
+ break
49
+ end
50
+ end
51
+
52
+ @last = first_new if first_new
53
+
54
+ if new.size > 0
55
+ puts "#{new.size} items"
56
+ NServer::Client.try_notify( new.join("\n") )
57
+ else
58
+ puts "No new items."
59
+ end
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+ end
66
+
File without changes
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4.5
3
+ specification_version: 2
4
+ name: everyx
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2007-11-09 00:00:00 -05:00
8
+ summary: Code to run some classes every x seconds
9
+ require_paths:
10
+ - lib
11
+ email: jon@burningbush.us
12
+ homepage: " by Jon Moses"
13
+ rubyforge_project: burningbush
14
+ description: "== features/PROBLEMS: * Schedule tasks to run every X seconds * Multiple schedules == SYNOPSIS: ex = Everyx::Everyx.new ## Create new runner pt = Everyx::PeriodicTasks::RSSNotifier.new ## Create notifier pt.uri = \"http://path.to/rss-feed\" ## Set it to uri"
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ required_rubygems_version: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: "0"
30
+ version:
31
+ platform: ruby
32
+ signing_key:
33
+ cert_chain: []
34
+
35
+ post_install_message:
36
+ authors:
37
+ - Jon Moses
38
+ files:
39
+ - History.txt
40
+ - Manifest.txt
41
+ - README.txt
42
+ - Rakefile
43
+ - bin/everyx
44
+ - lib/everyx.rb
45
+ - test/test_everyx.rb
46
+ test_files:
47
+ - test/test_everyx.rb
48
+ rdoc_options:
49
+ - --main
50
+ - README.txt
51
+ extra_rdoc_files:
52
+ - History.txt
53
+ - Manifest.txt
54
+ - README.txt
55
+ executables:
56
+ - everyx
57
+ extensions: []
58
+
59
+ requirements: []
60
+
61
+ dependencies:
62
+ - !ruby/object:Gem::Dependency
63
+ name: hoe
64
+ version_requirement:
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.3.0
70
+ version: