skaar-daemon-kit 0.1.7.10
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/Configuration.txt +110 -0
- data/Deployment.txt +113 -0
- data/History.txt +97 -0
- data/Logging.txt +92 -0
- data/Manifest.txt +174 -0
- data/PostInstall.txt +6 -0
- data/README.rdoc +130 -0
- data/Rakefile +37 -0
- data/RuoteParticipants.txt +113 -0
- data/TODO.txt +37 -0
- data/app_generators/daemon_kit/USAGE +7 -0
- data/app_generators/daemon_kit/daemon_kit_generator.rb +178 -0
- data/app_generators/daemon_kit/templates/README +48 -0
- data/app_generators/daemon_kit/templates/Rakefile +6 -0
- data/app_generators/daemon_kit/templates/bin/daemon.erb +7 -0
- data/app_generators/daemon_kit/templates/config/arguments.rb +12 -0
- data/app_generators/daemon_kit/templates/config/boot.rb +68 -0
- data/app_generators/daemon_kit/templates/config/environment.rb +23 -0
- data/app_generators/daemon_kit/templates/config/environments/development.rb +2 -0
- data/app_generators/daemon_kit/templates/config/environments/production.rb +2 -0
- data/app_generators/daemon_kit/templates/config/environments/test.rb +2 -0
- data/app_generators/daemon_kit/templates/config/post-daemonize/readme +5 -0
- data/app_generators/daemon_kit/templates/config/pre-daemonize/readme +12 -0
- data/app_generators/daemon_kit/templates/lib/daemon.rb +2 -0
- data/app_generators/daemon_kit/templates/libexec/daemon.erb +18 -0
- data/app_generators/daemon_kit/templates/script/console +3 -0
- data/app_generators/daemon_kit/templates/script/destroy +14 -0
- data/app_generators/daemon_kit/templates/script/generate +14 -0
- data/bin/daemon_kit +18 -0
- data/daemon_generators/amqp/USAGE +5 -0
- data/daemon_generators/amqp/amqp_generator.rb +65 -0
- data/daemon_generators/amqp/templates/config/amqp.yml +28 -0
- data/daemon_generators/amqp/templates/config/initializers/amqp.rb +7 -0
- data/daemon_generators/amqp/templates/libexec/daemon.rb +37 -0
- data/daemon_generators/cron/USAGE +5 -0
- data/daemon_generators/cron/cron_generator.rb +64 -0
- data/daemon_generators/cron/templates/config/initializers/cron.rb +11 -0
- data/daemon_generators/cron/templates/libexec/daemon.rb +43 -0
- data/daemon_generators/cucumber/USAGE +11 -0
- data/daemon_generators/cucumber/cucumber_generator.rb +38 -0
- data/daemon_generators/cucumber/templates/cucumber +8 -0
- data/daemon_generators/cucumber/templates/cucumber.rake +13 -0
- data/daemon_generators/cucumber/templates/cucumber_environment.rb +2 -0
- data/daemon_generators/cucumber/templates/env.rb +7 -0
- data/daemon_generators/deploy_capistrano/deploy_capistrano_generator.rb +35 -0
- data/daemon_generators/deploy_capistrano/templates/Capfile +10 -0
- data/daemon_generators/deploy_capistrano/templates/USAGE +10 -0
- data/daemon_generators/deploy_capistrano/templates/config/deploy.rb +53 -0
- data/daemon_generators/deploy_capistrano/templates/config/deploy/production.rb +6 -0
- data/daemon_generators/deploy_capistrano/templates/config/deploy/staging.rb +6 -0
- data/daemon_generators/deploy_capistrano/templates/config/environments/staging.rb +0 -0
- data/daemon_generators/jabber/USAGE +5 -0
- data/daemon_generators/jabber/jabber_generator.rb +65 -0
- data/daemon_generators/jabber/templates/config/initializers/jabber.rb +7 -0
- data/daemon_generators/jabber/templates/config/jabber.yml +26 -0
- data/daemon_generators/jabber/templates/libexec/daemon.rb +27 -0
- data/daemon_generators/nanite_agent/USAGE +5 -0
- data/daemon_generators/nanite_agent/nanite_agent_generator.rb +68 -0
- data/daemon_generators/nanite_agent/templates/config/initializers/nanite_agent.rb +6 -0
- data/daemon_generators/nanite_agent/templates/config/nanite.yml +35 -0
- data/daemon_generators/nanite_agent/templates/lib/actors/sample.rb +11 -0
- data/daemon_generators/nanite_agent/templates/libexec/daemon.rb +31 -0
- data/daemon_generators/rspec/USAGE +5 -0
- data/daemon_generators/rspec/rspec_generator.rb +55 -0
- data/daemon_generators/rspec/templates/spec.rb +11 -0
- data/daemon_generators/rspec/templates/spec/spec.opts +1 -0
- data/daemon_generators/rspec/templates/spec/spec_helper.rb +21 -0
- data/daemon_generators/rspec/templates/tasks/rspec.rake +21 -0
- data/daemon_generators/ruote/USAGE +5 -0
- data/daemon_generators/ruote/ruote_generator.rb +67 -0
- data/daemon_generators/ruote/templates/config/amqp.yml +30 -0
- data/daemon_generators/ruote/templates/config/initializers/ruote.rb +13 -0
- data/daemon_generators/ruote/templates/config/ruote.yml +23 -0
- data/daemon_generators/ruote/templates/lib/daemon.rb +4 -0
- data/daemon_generators/ruote/templates/lib/sample.rb +26 -0
- data/daemon_generators/ruote/templates/libexec/daemon.rb +33 -0
- data/lib/daemon_kit.rb +62 -0
- data/lib/daemon_kit/abstract_logger.rb +235 -0
- data/lib/daemon_kit/amqp.rb +38 -0
- data/lib/daemon_kit/application.rb +187 -0
- data/lib/daemon_kit/arguments.rb +165 -0
- data/lib/daemon_kit/commands/console.rb +38 -0
- data/lib/daemon_kit/config.rb +108 -0
- data/lib/daemon_kit/console_daemon.rb +2 -0
- data/lib/daemon_kit/core_ext.rb +1 -0
- data/lib/daemon_kit/core_ext/configurable.rb +96 -0
- data/lib/daemon_kit/core_ext/string.rb +22 -0
- data/lib/daemon_kit/cron.rb +48 -0
- data/lib/daemon_kit/cucumber/world.rb +38 -0
- data/lib/daemon_kit/deployment/capistrano.rb +482 -0
- data/lib/daemon_kit/em.rb +43 -0
- data/lib/daemon_kit/error_handlers/base.rb +32 -0
- data/lib/daemon_kit/error_handlers/hoptoad.rb +61 -0
- data/lib/daemon_kit/error_handlers/mail.rb +85 -0
- data/lib/daemon_kit/exceptions.rb +15 -0
- data/lib/daemon_kit/initializer.rb +438 -0
- data/lib/daemon_kit/jabber.rb +170 -0
- data/lib/daemon_kit/nanite.rb +7 -0
- data/lib/daemon_kit/nanite/agent.rb +56 -0
- data/lib/daemon_kit/pid_file.rb +61 -0
- data/lib/daemon_kit/ruote_participants.rb +119 -0
- data/lib/daemon_kit/ruote_pseudo_participant.rb +68 -0
- data/lib/daemon_kit/ruote_workitem.rb +169 -0
- data/lib/daemon_kit/safety.rb +85 -0
- data/lib/daemon_kit/tasks.rb +2 -0
- data/lib/daemon_kit/tasks/environment.rake +10 -0
- data/lib/daemon_kit/tasks/framework.rake +120 -0
- data/lib/daemon_kit/tasks/god.rake +62 -0
- data/lib/daemon_kit/tasks/log.rake +8 -0
- data/lib/daemon_kit/tasks/monit.rake +29 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +71 -0
- data/spec/abstract_logger_spec.rb +126 -0
- data/spec/argument_spec.rb +70 -0
- data/spec/config_spec.rb +79 -0
- data/spec/configurable_spec.rb +56 -0
- data/spec/daemon_kit_spec.rb +7 -0
- data/spec/error_handlers_spec.rb +23 -0
- data/spec/fixtures/env.yml +15 -0
- data/spec/fixtures/noenv.yml +4 -0
- data/spec/initializer_spec.rb +26 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +27 -0
- data/tasks/rspec.rake +21 -0
- data/templates/god/god.erb +69 -0
- data/templates/monit/monit.erb +14 -0
- data/test/test_amqp_generator.rb +48 -0
- data/test/test_cron_generator.rb +45 -0
- data/test/test_daemon-kit_generator.rb +84 -0
- data/test/test_daemon_kit_config.rb +28 -0
- data/test/test_deploy_capistrano_generator.rb +48 -0
- data/test/test_generator_helper.rb +29 -0
- data/test/test_helper.rb +7 -0
- data/test/test_jabber_generator.rb +49 -0
- data/test/test_nanite_agent_generator.rb +49 -0
- data/test/test_ruote_generator.rb +45 -0
- data/vendor/tmail-1.2.3/tmail.rb +5 -0
- data/vendor/tmail-1.2.3/tmail/address.rb +426 -0
- data/vendor/tmail-1.2.3/tmail/attachments.rb +46 -0
- data/vendor/tmail-1.2.3/tmail/base64.rb +46 -0
- data/vendor/tmail-1.2.3/tmail/compat.rb +41 -0
- data/vendor/tmail-1.2.3/tmail/config.rb +67 -0
- data/vendor/tmail-1.2.3/tmail/core_extensions.rb +63 -0
- data/vendor/tmail-1.2.3/tmail/encode.rb +581 -0
- data/vendor/tmail-1.2.3/tmail/header.rb +960 -0
- data/vendor/tmail-1.2.3/tmail/index.rb +9 -0
- data/vendor/tmail-1.2.3/tmail/interface.rb +1130 -0
- data/vendor/tmail-1.2.3/tmail/loader.rb +3 -0
- data/vendor/tmail-1.2.3/tmail/mail.rb +578 -0
- data/vendor/tmail-1.2.3/tmail/mailbox.rb +495 -0
- data/vendor/tmail-1.2.3/tmail/main.rb +6 -0
- data/vendor/tmail-1.2.3/tmail/mbox.rb +3 -0
- data/vendor/tmail-1.2.3/tmail/net.rb +248 -0
- data/vendor/tmail-1.2.3/tmail/obsolete.rb +132 -0
- data/vendor/tmail-1.2.3/tmail/parser.rb +1476 -0
- data/vendor/tmail-1.2.3/tmail/port.rb +379 -0
- data/vendor/tmail-1.2.3/tmail/quoting.rb +118 -0
- data/vendor/tmail-1.2.3/tmail/require_arch.rb +58 -0
- data/vendor/tmail-1.2.3/tmail/scanner.rb +49 -0
- data/vendor/tmail-1.2.3/tmail/scanner_r.rb +261 -0
- data/vendor/tmail-1.2.3/tmail/stringio.rb +280 -0
- data/vendor/tmail-1.2.3/tmail/utils.rb +337 -0
- data/vendor/tmail-1.2.3/tmail/version.rb +39 -0
- data/vendor/tmail.rb +13 -0
- metadata +282 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Nanite agent configuration file
|
|
2
|
+
|
|
3
|
+
# These values will be used to configure the nanite agent, any values
|
|
4
|
+
# omitted will let the gem use it's own defaults.
|
|
5
|
+
|
|
6
|
+
# The configuration specifies the following keys:
|
|
7
|
+
# * user - Specify the rabbitmq username
|
|
8
|
+
# * pass - Specify the rabbitmq password
|
|
9
|
+
# * host - Specify the rabbitmq hostname
|
|
10
|
+
# * vhost - Specify the rabbitmq vhost
|
|
11
|
+
# * port - Specify the rabbitmq PORT, default 5672
|
|
12
|
+
# * token - Specify the agent identity
|
|
13
|
+
# * security - Use Security features of rabbitmq to restrict nanites to themselves
|
|
14
|
+
# * format - The serialization type to use for transfering data. Can be marshal, json or yaml. Default is marshal
|
|
15
|
+
# * tag - YAML array of tags
|
|
16
|
+
# * ping-time - Specify how often the agents contacts the mapper
|
|
17
|
+
# * actors - Comma separated list of actors to load (all ruby files in actors directory by default)
|
|
18
|
+
|
|
19
|
+
defaults: &defaults
|
|
20
|
+
username: nanite
|
|
21
|
+
password: testing
|
|
22
|
+
host: localhost
|
|
23
|
+
vhost: /nanite
|
|
24
|
+
# tag:
|
|
25
|
+
# - foo
|
|
26
|
+
# - bar
|
|
27
|
+
|
|
28
|
+
development:
|
|
29
|
+
<<: *defaults
|
|
30
|
+
|
|
31
|
+
test:
|
|
32
|
+
<<: *defaults
|
|
33
|
+
|
|
34
|
+
production:
|
|
35
|
+
<<: *defaults
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Generated nanite agent daemon
|
|
2
|
+
|
|
3
|
+
# Do your post daemonization configuration here
|
|
4
|
+
# At minimum you need just the first line (without the block), or a lot
|
|
5
|
+
# of strange things might start happening...
|
|
6
|
+
DaemonKit::Application.running! do |config|
|
|
7
|
+
# Trap signals with blocks or procs
|
|
8
|
+
# config.trap( 'INT' ) do
|
|
9
|
+
# # do something clever
|
|
10
|
+
# end
|
|
11
|
+
# config.trap( 'TERM', Proc.new { puts 'Going down' } )
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# IMPORTANT CONFIGURATION NOTE
|
|
15
|
+
#
|
|
16
|
+
# Please review and update 'config/nanite.yml' accordingly or this
|
|
17
|
+
# daemon won't work as advertised.
|
|
18
|
+
#
|
|
19
|
+
# Your actors live in DAEMON_ROOT/lib/actors
|
|
20
|
+
|
|
21
|
+
# Run the agent, and get the running agent.
|
|
22
|
+
DaemonKit::Nanite::Agent.run do |agent|
|
|
23
|
+
# Use the yielded agent instance to register your actors:
|
|
24
|
+
agent.register Sample.new
|
|
25
|
+
|
|
26
|
+
# This block can used to make your agent perform other tasks as
|
|
27
|
+
# well. Remember that you have access to a running EventMachine
|
|
28
|
+
# reactor since the AMQP gem used by nanite uses it. Other than that
|
|
29
|
+
# you can mostly leave this file alone and concentrate on developing
|
|
30
|
+
# your actors in the lib/actors/ directory of the project.
|
|
31
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
|
|
2
|
+
class RspecGenerator < RubiGen::Base
|
|
3
|
+
|
|
4
|
+
attr_reader :gem_name, :module_name
|
|
5
|
+
|
|
6
|
+
def initialize(runtime_args, runtime_options = {})
|
|
7
|
+
super
|
|
8
|
+
@destination_root = File.expand_path(destination_root)
|
|
9
|
+
@gem_name = base_name
|
|
10
|
+
@module_name = @gem_name.camelcase
|
|
11
|
+
extract_options
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def manifest
|
|
15
|
+
record do |m|
|
|
16
|
+
# Ensure appropriate folder(s) exists
|
|
17
|
+
m.directory 'spec'
|
|
18
|
+
m.directory 'tasks'
|
|
19
|
+
|
|
20
|
+
m.template 'spec.rb', "spec/#{gem_name}_spec.rb"
|
|
21
|
+
|
|
22
|
+
m.template_copy_each %w( spec.opts spec_helper.rb ), 'spec'
|
|
23
|
+
m.file_copy_each %w( rspec.rake ), 'tasks'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
protected
|
|
28
|
+
def banner
|
|
29
|
+
<<-EOS
|
|
30
|
+
Install rspec BDD testing support.
|
|
31
|
+
|
|
32
|
+
Includes a rake task (tasks/rspec.rake) to be loaded by the root Rakefile,
|
|
33
|
+
which provides a "spec" task.
|
|
34
|
+
|
|
35
|
+
USAGE: #{$0} [options]
|
|
36
|
+
EOS
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def add_options!(opts)
|
|
40
|
+
# opts.separator ''
|
|
41
|
+
# opts.separator 'Options:'
|
|
42
|
+
# For each option below, place the default
|
|
43
|
+
# at the top of the file next to "default_options"
|
|
44
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
|
45
|
+
# "Some comment about this option",
|
|
46
|
+
# "Default: none") { |x| options[:author] = x }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def extract_options
|
|
50
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
|
51
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
|
52
|
+
# raw instance variable value.
|
|
53
|
+
# @author = options[:author]
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--colour
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'spec'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
require 'rubygems'
|
|
5
|
+
gem 'rspec'
|
|
6
|
+
require 'spec'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
require File.dirname(__FILE__) + '/../config/environment'
|
|
10
|
+
DaemonKit::Application.running!
|
|
11
|
+
|
|
12
|
+
Spec::Runner.configure do |config|
|
|
13
|
+
# == Mock Framework
|
|
14
|
+
#
|
|
15
|
+
# RSpec uses it's own mocking framework by default. If you prefer to
|
|
16
|
+
# use mocha, flexmock or RR, uncomment the appropriate line:
|
|
17
|
+
#
|
|
18
|
+
config.mock_with :mocha
|
|
19
|
+
# config.mock_with :flexmock
|
|
20
|
+
# config.mock_with :rr
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'spec'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
require 'rubygems'
|
|
5
|
+
require 'spec'
|
|
6
|
+
end
|
|
7
|
+
begin
|
|
8
|
+
require 'spec/rake/spectask'
|
|
9
|
+
rescue LoadError
|
|
10
|
+
puts <<-EOS
|
|
11
|
+
To use rspec for testing you must install rspec gem:
|
|
12
|
+
gem install rspec
|
|
13
|
+
EOS
|
|
14
|
+
exit(0)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
desc "Run the specs under spec/"
|
|
18
|
+
Spec::Rake::SpecTask.new do |t|
|
|
19
|
+
t.spec_opts = ['--options', "spec/spec.opts"]
|
|
20
|
+
t.spec_files = FileList['spec/**/*_spec.rb']
|
|
21
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
class RuoteGenerator < RubiGen::Base
|
|
2
|
+
|
|
3
|
+
default_options :author => nil
|
|
4
|
+
|
|
5
|
+
attr_reader :name
|
|
6
|
+
|
|
7
|
+
def initialize(runtime_args, runtime_options = {})
|
|
8
|
+
super
|
|
9
|
+
usage if args.empty?
|
|
10
|
+
@name = args.shift
|
|
11
|
+
extract_options
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def manifest
|
|
15
|
+
record do |m|
|
|
16
|
+
# Ensure appropriate folder(s) exists
|
|
17
|
+
m.directory ''
|
|
18
|
+
|
|
19
|
+
# Create stubs
|
|
20
|
+
# m.template "template.rb.erb", "some_file_after_erb.rb"
|
|
21
|
+
# m.template_copy_each ["template.rb", "template2.rb"]
|
|
22
|
+
# m.template_copy_each ["template.rb", "template2.rb"], "some/path"
|
|
23
|
+
# m.file "file", "some_file_copied"
|
|
24
|
+
# m.file_copy_each ["path/to/file", "path/to/file2"]
|
|
25
|
+
# m.file_copy_each ["path/to/file", "path/to/file2"], "some/path"
|
|
26
|
+
|
|
27
|
+
m.directory 'config'
|
|
28
|
+
m.template 'config/amqp.yml', 'config/amqp.yml'
|
|
29
|
+
m.template 'config/ruote.yml', 'config/ruote.yml'
|
|
30
|
+
m.directory 'config/initializers'
|
|
31
|
+
m.template 'config/initializers/ruote.rb', "config/initializers/#{name}.rb"
|
|
32
|
+
|
|
33
|
+
m.directory 'lib'
|
|
34
|
+
m.template 'lib/daemon.rb', "lib/#{name}.rb"
|
|
35
|
+
m.template 'lib/sample.rb', 'lib/sample.rb'
|
|
36
|
+
m.directory 'libexec'
|
|
37
|
+
m.template 'libexec/daemon.rb', "libexec/#{name}-daemon.rb"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
protected
|
|
42
|
+
def banner
|
|
43
|
+
<<-EOS
|
|
44
|
+
Creates a ...
|
|
45
|
+
|
|
46
|
+
USAGE: #{$0} #{spec.name} name
|
|
47
|
+
EOS
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def add_options!(opts)
|
|
51
|
+
# opts.separator ''
|
|
52
|
+
# opts.separator 'Options:'
|
|
53
|
+
# For each option below, place the default
|
|
54
|
+
# at the top of the file next to "default_options"
|
|
55
|
+
# opts.on("-a", "--author=\"Your Name\"", String,
|
|
56
|
+
# "Some comment about this option",
|
|
57
|
+
# "Default: none") { |o| options[:author] = o }
|
|
58
|
+
# opts.on("-v", "--version", "Show the #{File.basename($0)} version number and quit.")
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def extract_options
|
|
62
|
+
# for each option, extract it into a local variable (and create an "attr_reader :author" at the top)
|
|
63
|
+
# Templates can access these value via the attr_reader-generated methods, but not the
|
|
64
|
+
# raw instance variable value.
|
|
65
|
+
# @author = options[:author]
|
|
66
|
+
end
|
|
67
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# AMQP client configuration file for ruote remote participants. If you are not
|
|
2
|
+
# planning to use the AMQP participant/listener pair in ruote, you can safely
|
|
3
|
+
# delete this file.
|
|
4
|
+
|
|
5
|
+
# These values will be used to configure the ampq gem, any values
|
|
6
|
+
# omitted will let the gem use it's own defaults.
|
|
7
|
+
|
|
8
|
+
# The configuration specifies the following keys:
|
|
9
|
+
# * user - Username for the broker
|
|
10
|
+
# * pass - Password for the broker
|
|
11
|
+
# * host - Hostname where the broker is running
|
|
12
|
+
# * vhost - Vhost to connect to
|
|
13
|
+
# * port - Port where the broker is running
|
|
14
|
+
# * ssl - Use ssl or not
|
|
15
|
+
# * timeout - Timeout
|
|
16
|
+
|
|
17
|
+
defaults: &defaults
|
|
18
|
+
user: guest
|
|
19
|
+
pass: guest
|
|
20
|
+
host: localhost
|
|
21
|
+
vhost: /
|
|
22
|
+
|
|
23
|
+
development:
|
|
24
|
+
<<: *defaults
|
|
25
|
+
|
|
26
|
+
test:
|
|
27
|
+
<<: *defaults
|
|
28
|
+
|
|
29
|
+
production:
|
|
30
|
+
<<: *defaults
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'json'
|
|
3
|
+
rescue LoadError
|
|
4
|
+
$stderr.puts "Missing json gem. Please run 'gem install json'"
|
|
5
|
+
exit 1
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
begin
|
|
9
|
+
require 'amqp'
|
|
10
|
+
require 'mq'
|
|
11
|
+
rescue LoadError
|
|
12
|
+
$stderr.puts "Missing amqp gem. Please run 'gem install amqp' if you wish to use the AMQP participant/listener pair in ruote"
|
|
13
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Sample configuration file for a remote participant daemon
|
|
2
|
+
|
|
3
|
+
# If your using the AMQP listener/participant pair in ruote, you only
|
|
4
|
+
# need to specify the names of the queues to subscribe to.
|
|
5
|
+
|
|
6
|
+
defaults: &defaults
|
|
7
|
+
amqp:
|
|
8
|
+
queues:
|
|
9
|
+
- work1
|
|
10
|
+
#- work2
|
|
11
|
+
#- work3
|
|
12
|
+
|
|
13
|
+
development:
|
|
14
|
+
<<: *defaults
|
|
15
|
+
|
|
16
|
+
test:
|
|
17
|
+
<<: *defaults
|
|
18
|
+
|
|
19
|
+
staging:
|
|
20
|
+
<<: *defaults
|
|
21
|
+
|
|
22
|
+
production:
|
|
23
|
+
<<: *defaults
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'open-uri'
|
|
2
|
+
|
|
3
|
+
# Sample pseudo participant
|
|
4
|
+
#
|
|
5
|
+
# See http://gist.github.com/144861 for a test engine
|
|
6
|
+
class Sample < DaemonKit::RuotePseudoParticipant
|
|
7
|
+
|
|
8
|
+
on_exception :dammit
|
|
9
|
+
|
|
10
|
+
on_complete do |workitem|
|
|
11
|
+
workitem['success'] = true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def quote
|
|
15
|
+
workitem["quote"] = open("http://www.iheartquotes.com/api/v1/random").read
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def err
|
|
19
|
+
raise ArgumentError, "Does not compute"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def dammit( exception )
|
|
23
|
+
workitem["error"] = exception.message
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Generated remote participant for the ruote workflow engine
|
|
2
|
+
# (http://openwferu.rubyforge.org)
|
|
3
|
+
|
|
4
|
+
# Do your post daemonization configuration here
|
|
5
|
+
# At minimum you need just the first line (without the block), or a lot
|
|
6
|
+
# of strange things might start happening...
|
|
7
|
+
DaemonKit::Application.running! do |config|
|
|
8
|
+
# Trap signals with blocks or procs
|
|
9
|
+
# config.trap( 'INT' ) do
|
|
10
|
+
# # do something clever
|
|
11
|
+
# end
|
|
12
|
+
# config.trap( 'TERM', Proc.new { puts 'Going down' } )
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# IMPORTANT CONFIGURATION NOTE
|
|
16
|
+
#
|
|
17
|
+
# Please review and update 'config/amqp.yml' accordingly if you wish to use
|
|
18
|
+
# AMQP as a transport mechanism for workitems sent between ruote and this
|
|
19
|
+
# daemon.
|
|
20
|
+
|
|
21
|
+
# Configuration of the remote participant shell
|
|
22
|
+
DaemonKit::RuoteParticipants.configure do |config|
|
|
23
|
+
# Use AMQP as a workitem transport mechanism
|
|
24
|
+
config.use :amqp
|
|
25
|
+
|
|
26
|
+
# Register your classes as pseudo-participants, with work being delegated
|
|
27
|
+
# according to the 'command' parameter passed in the process definition
|
|
28
|
+
config.register Sample
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
DaemonKit::RuoteParticipants.run do
|
|
32
|
+
# Place any additional daemon-specific code in here...
|
|
33
|
+
end
|
data/lib/daemon_kit.rb
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# TODO: Strip this out eventually so we can run without rubygems
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
|
|
4
|
+
# Seems in 1.9 we need to load openssl before em or there is failures all around.
|
|
5
|
+
# But we need to consider that people might not have ssl in the first place.
|
|
6
|
+
if RUBY_VERSION >= "1.9"
|
|
7
|
+
begin
|
|
8
|
+
require 'openssl'
|
|
9
|
+
rescue LoadError
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
require 'eventmachine'
|
|
13
|
+
|
|
14
|
+
require File.dirname(__FILE__) + '/daemon_kit/core_ext'
|
|
15
|
+
require File.dirname(__FILE__) + '/daemon_kit/exceptions'
|
|
16
|
+
|
|
17
|
+
$:.unshift( File.dirname(__FILE__).to_absolute_path ) unless
|
|
18
|
+
$:.include?( File.dirname(__FILE__).to_absolute_path )
|
|
19
|
+
|
|
20
|
+
module DaemonKit
|
|
21
|
+
VERSION = '0.1.7.10'
|
|
22
|
+
|
|
23
|
+
autoload :Initializer, 'daemon_kit/initializer'
|
|
24
|
+
autoload :Application, 'daemon_kit/application'
|
|
25
|
+
autoload :Arguments, 'daemon_kit/arguments'
|
|
26
|
+
autoload :Config, 'daemon_kit/config'
|
|
27
|
+
autoload :Safety, 'daemon_kit/safety'
|
|
28
|
+
autoload :PidFile, 'daemon_kit/pid_file'
|
|
29
|
+
autoload :AbstractLogger, 'daemon_kit/abstract_logger'
|
|
30
|
+
autoload :EM, 'daemon_kit/em'
|
|
31
|
+
autoload :Configurable, 'daemon_kit/core_ext/configurable'
|
|
32
|
+
|
|
33
|
+
autoload :Cron, 'daemon_kit/cron'
|
|
34
|
+
autoload :Jabber, 'daemon_kit/jabber'
|
|
35
|
+
autoload :AMQP, 'daemon_kit/amqp'
|
|
36
|
+
autoload :Nanite, 'daemon_kit/nanite'
|
|
37
|
+
autoload :RuoteParticipants, 'daemon_kit/ruote_participants'
|
|
38
|
+
autoload :RuoteWorkitem, 'daemon_kit/ruote_workitem'
|
|
39
|
+
autoload :RuotePseudoParticipant, 'daemon_kit/ruote_pseudo_participant'
|
|
40
|
+
|
|
41
|
+
class << self
|
|
42
|
+
def logger
|
|
43
|
+
@logger
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def logger=( logger )
|
|
47
|
+
@logger = logger
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def root
|
|
51
|
+
DAEMON_ROOT
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def env
|
|
55
|
+
DAEMON_ENV
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def framework_root
|
|
59
|
+
@framework_root ||= File.join( File.dirname(__FILE__), '..' ).to_absolute_path
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|