everyx 1.0.0

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.
@@ -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: