daemon-kit 0.1.8.2 → 0.2.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.
- data/History.txt +10 -3
- data/README.rdoc +1 -0
- data/daemon-kit.gemspec +6 -2
- data/lib/daemon_kit.rb +1 -0
- data/lib/daemon_kit/application.rb +3 -3
- data/lib/daemon_kit/arguments.rb +18 -8
- data/lib/daemon_kit/config.rb +2 -0
- data/lib/daemon_kit/dk_sqs.rb +35 -0
- data/lib/daemon_kit/generators.rb +1 -3
- data/lib/daemon_kit/initializer.rb +10 -3
- data/lib/daemon_kit/version.rb +1 -1
- data/lib/generators/daemon_kit/amqp/templates/libexec/%app_name%-daemon.rb +3 -5
- data/lib/generators/daemon_kit/app/app_generator.rb +3 -1
- data/lib/generators/daemon_kit/app/templates/Gemfile +2 -2
- data/lib/generators/daemon_kit/app/templates/README.tt +7 -0
- data/lib/generators/daemon_kit/app/templates/config/environment.rb.tt +1 -1
- data/lib/generators/daemon_kit/rspec/rspec_generator.rb +10 -0
- data/lib/generators/daemon_kit/rspec/templates/spec/spec_helper.rb +3 -4
- data/lib/generators/daemon_kit/rspec/templates/tasks/rspec.rake +9 -17
- data/lib/generators/daemon_kit/sqs/USAGE +5 -0
- data/lib/generators/daemon_kit/sqs/sqs_generator.rb +24 -0
- data/lib/generators/daemon_kit/sqs/templates/config/pre-daemonize/sqs.rb +6 -0
- data/lib/generators/daemon_kit/sqs/templates/config/sqs.yml +20 -0
- data/lib/generators/daemon_kit/sqs/templates/libexec/%app_name%-daemon.rb +39 -0
- data/spec/daemon_kit_spec.rb +3 -1
- data/spec/initializer_spec.rb +4 -0
- data/tasks/rspec.rake +5 -17
- data/test/test_sqs_generator.rb +48 -0
- metadata +148 -181
- data/PostInstall.txt +0 -6
- data/lib/daemon_kit/vendor/thor-0.13.6/CHANGELOG.rdoc +0 -89
- data/lib/daemon_kit/vendor/thor-0.13.6/LICENSE +0 -20
- data/lib/daemon_kit/vendor/thor-0.13.6/README.rdoc +0 -297
- data/lib/daemon_kit/vendor/thor-0.13.6/Thorfile +0 -69
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor.rb +0 -244
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions.rb +0 -296
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/create_file.rb +0 -103
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/directory.rb +0 -91
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/empty_directory.rb +0 -134
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/file_manipulation.rb +0 -223
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/inject_into_file.rb +0 -104
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/base.rb +0 -540
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/core_ext/file_binary_read.rb +0 -9
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/core_ext/hash_with_indifferent_access.rb +0 -75
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/core_ext/ordered_hash.rb +0 -100
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/error.rb +0 -30
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/group.rb +0 -271
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/invocation.rb +0 -180
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser.rb +0 -4
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser/argument.rb +0 -67
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser/arguments.rb +0 -150
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser/option.rb +0 -128
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser/options.rb +0 -169
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/rake_compat.rb +0 -66
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/runner.rb +0 -314
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/shell.rb +0 -83
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/shell/basic.rb +0 -239
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/shell/color.rb +0 -108
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/task.rb +0 -102
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/util.rb +0 -224
- data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/version.rb +0 -3
data/History.txt
CHANGED
@@ -1,10 +1,17 @@
|
|
1
|
-
== 0.
|
1
|
+
== 0.2.0 2012-09-30
|
2
2
|
|
3
3
|
* Depend on the 'safely' gem for the safely method and logging backtraces
|
4
4
|
* Fixed compatibility with ruote-amqp 2.2.0
|
5
|
-
* AMQP fixes by @marcbowes
|
5
|
+
* AMQP fixes by @marcbowes (version, reconnect)
|
6
6
|
* Updated to rspec 2 (various contributors)
|
7
|
-
*
|
7
|
+
* Various documentation fixes by @ktrix
|
8
|
+
* Remove vendored Thor
|
9
|
+
* Various load/require fixes by @ktrix
|
10
|
+
* SQS generator by @marcbowes
|
11
|
+
|
12
|
+
== 0.1.8.2 2011-05-18
|
13
|
+
|
14
|
+
* Convert to use Bundler
|
8
15
|
|
9
16
|
== 0.1.18.1 2010-08-04
|
10
17
|
|
data/README.rdoc
CHANGED
data/daemon-kit.gemspec
CHANGED
@@ -10,7 +10,9 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.post_install_message = %q{
|
11
11
|
For more information on daemon-kit, see http://kit.rubyforge.org/daemon-kit
|
12
12
|
|
13
|
-
|
13
|
+
For usage options, run:
|
14
|
+
|
15
|
+
$ daemon-kit -h
|
14
16
|
|
15
17
|
|
16
18
|
}
|
@@ -27,12 +29,12 @@ To get started quickly run 'daemon-kit' without any arguments
|
|
27
29
|
"Deployment.txt",
|
28
30
|
"History.txt",
|
29
31
|
"Logging.txt",
|
30
|
-
"PostInstall.txt",
|
31
32
|
"README.rdoc",
|
32
33
|
"RuoteParticipants.txt",
|
33
34
|
"TODO.txt",
|
34
35
|
]
|
35
36
|
|
37
|
+
gem.add_dependency(%q<thor>)
|
36
38
|
gem.add_development_dependency(%q<bundler>)
|
37
39
|
gem.add_development_dependency(%q<rake>)
|
38
40
|
gem.add_development_dependency(%q<rdoc>)
|
@@ -42,4 +44,6 @@ To get started quickly run 'daemon-kit' without any arguments
|
|
42
44
|
gem.add_development_dependency(%q<SyslogLogger>)
|
43
45
|
gem.add_runtime_dependency(%q<eventmachine>, [">= 0.12.10"])
|
44
46
|
gem.add_runtime_dependency(%q<safely>, [">= 0.3.1"])
|
47
|
+
gem.add_runtime_dependency(%q<rubigen>)
|
48
|
+
gem.add_runtime_dependency(%q<i18n>)
|
45
49
|
end
|
data/lib/daemon_kit.rb
CHANGED
@@ -29,6 +29,7 @@ module DaemonKit
|
|
29
29
|
autoload :Cron, 'daemon_kit/cron'
|
30
30
|
autoload :Jabber, 'daemon_kit/jabber'
|
31
31
|
autoload :AMQP, 'daemon_kit/dk_amqp'
|
32
|
+
autoload :SQS, 'daemon_kit/dk_sqs'
|
32
33
|
autoload :Nanite, 'daemon_kit/nanite'
|
33
34
|
autoload :RuoteParticipants, 'daemon_kit/ruote_participants'
|
34
35
|
autoload :RuoteWorkitem, 'daemon_kit/ruote_workitem'
|
@@ -32,7 +32,7 @@ module DaemonKit
|
|
32
32
|
self.chroot
|
33
33
|
self.clean_fd
|
34
34
|
self.redirect_io( true )
|
35
|
-
|
35
|
+
|
36
36
|
DaemonKit.configuration.log_stdout = true
|
37
37
|
|
38
38
|
require file
|
@@ -50,7 +50,7 @@ module DaemonKit
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def stop
|
53
|
-
@pid_file = PidFile.new( DaemonKit.configuration.pid_file )
|
53
|
+
@pid_file = PidFile.new( DaemonKit.configuration.pid_file( DaemonKit.configuration.instance ) )
|
54
54
|
|
55
55
|
unless @pid_file.running?
|
56
56
|
@pid_file.cleanup
|
@@ -153,7 +153,7 @@ module DaemonKit
|
|
153
153
|
|
154
154
|
# Daemonize the process
|
155
155
|
def daemonize
|
156
|
-
@pid_file = PidFile.new( DaemonKit.configuration.pid_file )
|
156
|
+
@pid_file = PidFile.new( DaemonKit.configuration.pid_file( DaemonKit.configuration.instance ) )
|
157
157
|
@pid_file.ensure_stopped!
|
158
158
|
|
159
159
|
if RUBY_VERSION < "1.9"
|
data/lib/daemon_kit/arguments.rb
CHANGED
@@ -65,13 +65,13 @@ module DaemonKit
|
|
65
65
|
|
66
66
|
i = 0
|
67
67
|
while i < argv.size
|
68
|
-
if argv[i] == "--config"
|
68
|
+
if argv[i] == "-c" || argv[i] == "--config"
|
69
69
|
argv.delete_at( i )
|
70
70
|
configs << argv.delete_at(i)
|
71
71
|
next
|
72
72
|
end
|
73
73
|
|
74
|
-
if argv[i] == "-e" || argv[i] == "--env"
|
74
|
+
if argv[i] == "-e" || argv[i] == "--env" || argv[i] == "--environment"
|
75
75
|
argv.delete_at( i )
|
76
76
|
configs << "environment=#{argv.delete_at(i)}"
|
77
77
|
next
|
@@ -83,7 +83,13 @@ module DaemonKit
|
|
83
83
|
next
|
84
84
|
end
|
85
85
|
|
86
|
-
if argv[i] == "
|
86
|
+
if argv[i] == "-i" || argv[i] == "--instance"
|
87
|
+
argv.delete_at( i )
|
88
|
+
configs << "instance=#{argv.delete_at(i)}"
|
89
|
+
next
|
90
|
+
end
|
91
|
+
|
92
|
+
if argv[i] == "-p" || argv[i] == "--pidfile" || argv[i] == "--pid"
|
87
93
|
argv.delete_at( i )
|
88
94
|
configs << "pid_file=#{argv.delete_at(i)}"
|
89
95
|
next
|
@@ -123,23 +129,27 @@ module DaemonKit
|
|
123
129
|
arg_file = File.join( DaemonKit.root, 'config', 'arguments.rb' )
|
124
130
|
eval(IO.read(arg_file), binding, arg_file) if File.exists?( arg_file )
|
125
131
|
|
126
|
-
opts.on("-e", "--env
|
132
|
+
opts.on("-e", "--env", "--environment ENV", "Environment for the process", " Default: development") do
|
133
|
+
# Nothing, just here for show
|
134
|
+
end
|
135
|
+
|
136
|
+
opts.on("-i", "--instance N", "Process instance number", " Default: 1") do
|
127
137
|
# Nothing, just here for show
|
128
138
|
end
|
129
139
|
|
130
|
-
opts.on("--pidfile PATH", "Path to the pidfile", "
|
140
|
+
opts.on("-p", "--pid", "--pidfile PATH", "Path to the pidfile", " Default: log/#{DaemonKit.configuration.daemon_name}.N.pid") do
|
131
141
|
# Nothing, just here for show
|
132
142
|
end
|
133
143
|
|
134
|
-
opts.on("-l", "--log
|
144
|
+
opts.on("-l", "--log PATH", "Path to the log file", " Default: log/[environment].log") do
|
135
145
|
# Nothing, just here for show
|
136
146
|
end
|
137
147
|
|
138
148
|
opts.separator ""
|
139
149
|
opts.separator "Advanced configurations:"
|
140
|
-
opts.on("--config ATTRIBUTE=VALUE",
|
150
|
+
opts.on("-c", "--config ATTRIBUTE=VALUE",
|
141
151
|
"Change values of the daemon-kit Configuration instance",
|
142
|
-
"Example: log_dir=/path/to/log-directory") do
|
152
|
+
" Example: log_dir=/path/to/log-directory") do
|
143
153
|
# Nothing, just here for show
|
144
154
|
end
|
145
155
|
|
data/lib/daemon_kit/config.rb
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
require "aws/sqs"
|
2
|
+
|
3
|
+
module DaemonKit
|
4
|
+
# Thin wrapper around the aws-sdk gem, specifically designed to ease
|
5
|
+
# configuration of the SQS client
|
6
|
+
class SQS
|
7
|
+
|
8
|
+
@@instance = nil
|
9
|
+
|
10
|
+
class << self
|
11
|
+
|
12
|
+
def instance
|
13
|
+
@instance ||= new
|
14
|
+
end
|
15
|
+
|
16
|
+
private :new
|
17
|
+
|
18
|
+
def run(config = {}, &block)
|
19
|
+
instance.run(config, &block)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize
|
24
|
+
@config = DaemonKit::Config.load("sqs").to_h(true)
|
25
|
+
end
|
26
|
+
|
27
|
+
def run(config = {}, &block)
|
28
|
+
sqs_config = @config.merge(config)
|
29
|
+
DaemonKit.logger.debug("AWS::SQS.new(#{sqs_config.inspect})")
|
30
|
+
sqs = ::AWS::SQS.new(sqs_config)
|
31
|
+
DaemonKit.logger.debug("# => #{sqs.client.inspect}")
|
32
|
+
block.call(sqs)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -1,6 +1,3 @@
|
|
1
|
-
# TODO: Don't always depend on bundled thor
|
2
|
-
$:.unshift File.dirname(__FILE__) + '/vendor/thor-0.13.6/lib'
|
3
|
-
|
4
1
|
require 'daemon_kit/generators/base'
|
5
2
|
|
6
3
|
module DaemonKit
|
@@ -8,6 +5,7 @@ module DaemonKit
|
|
8
5
|
autoload :AppGenerator, 'generators/daemon_kit/app/app_generator'
|
9
6
|
autoload :CucumberGenerator, 'generators/daemon_kit/cucumber/cucumber_generator'
|
10
7
|
autoload :AmqpGenerator, 'generators/daemon_kit/amqp/amqp_generator'
|
8
|
+
autoload :SqsGenerator, 'generators/daemon_kit/sqs/sqs_generator'
|
11
9
|
autoload :CronGenerator, 'generators/daemon_kit/cron/cron_generator'
|
12
10
|
autoload :CapistranoGenerator, 'generators/daemon_kit/capistrano/capistrano_generator'
|
13
11
|
autoload :NaniteAgentGenerator, 'generators/daemon_kit/nanite_agent/nanite_agent_generator'
|
@@ -241,8 +241,11 @@ module DaemonKit
|
|
241
241
|
# Duplicate log data to stdout
|
242
242
|
attr_accessor :log_stdout
|
243
243
|
|
244
|
+
# Process instance number, defaults to 1
|
245
|
+
attr_accessor :instance
|
246
|
+
|
244
247
|
# Path to the pid file, defaults to 'log/<daemon_name>.pid'
|
245
|
-
|
248
|
+
attr_writer :pid_file
|
246
249
|
|
247
250
|
# The application name
|
248
251
|
configurable :daemon_name, :locked => true
|
@@ -322,8 +325,12 @@ module DaemonKit
|
|
322
325
|
@shutdown_hooks << ( proc || block )
|
323
326
|
end
|
324
327
|
|
325
|
-
def pid_file
|
326
|
-
@pid_file ||= "#{File.dirname(self.log_path)}/#{self.daemon_name}.pid"
|
328
|
+
def pid_file( instance = nil )
|
329
|
+
@pid_file ||= "#{File.dirname(self.log_path)}/#{self.daemon_name}.#{instance}.pid"
|
330
|
+
end
|
331
|
+
|
332
|
+
def instance
|
333
|
+
@instance ||= 1
|
327
334
|
end
|
328
335
|
|
329
336
|
# Set the log level
|
data/lib/daemon_kit/version.rb
CHANGED
@@ -17,17 +17,15 @@ end
|
|
17
17
|
# daemon won't work as advertised.
|
18
18
|
|
19
19
|
# Run an event-loop for processing
|
20
|
-
DaemonKit::AMQP.run do
|
20
|
+
DaemonKit::AMQP.run do |connection|
|
21
21
|
# Inside this block we're running inside the reactor setup by the
|
22
22
|
# amqp gem. Any code in the examples (from the gem) would work just
|
23
23
|
# fine here.
|
24
24
|
|
25
25
|
# Uncomment this for connection keep-alive
|
26
|
-
#
|
26
|
+
# connection.on_tcp_connection_loss do |client, settings|
|
27
27
|
# DaemonKit.logger.debug("AMQP connection status changed: #{status}")
|
28
|
-
#
|
29
|
-
# AMQP.conn.reconnect(true)
|
30
|
-
# end
|
28
|
+
# client.reconnect(false, 1)
|
31
29
|
# end
|
32
30
|
|
33
31
|
amq = AMQP::Channel.new
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module DaemonKit
|
2
2
|
module Generators
|
3
3
|
class AppGenerator < Base
|
4
|
-
INSTALLERS = %w( default amqp cron nanite_agent ruote xmpp )
|
4
|
+
INSTALLERS = %w( default amqp sqs cron nanite_agent ruote xmpp )
|
5
5
|
DEPLOYERS = %w( capistrano )
|
6
6
|
TEST_FRAMEWORKS = %w( none rspec test_unit )
|
7
7
|
add_shebang_option!
|
@@ -93,6 +93,8 @@ module DaemonKit
|
|
93
93
|
directory 'libexec'
|
94
94
|
when 'amqp'
|
95
95
|
invoke DaemonKit::Generators::AmqpGenerator
|
96
|
+
when 'sqs'
|
97
|
+
invoke DaemonKit::Generators::SqsGenerator
|
96
98
|
when 'cron'
|
97
99
|
invoke DaemonKit::Generators::CronGenerator
|
98
100
|
when 'nanite_agent'
|
@@ -3,6 +3,8 @@
|
|
3
3
|
# 'bundle install' to get them all installed. Daemon-kit's capistrano
|
4
4
|
# deployment will ensure that the bundle required by your daemon is properly
|
5
5
|
# installed.
|
6
|
+
#
|
7
|
+
# For more information on bundler, please visit http://gembundler.com
|
6
8
|
|
7
9
|
source :gemcutter
|
8
10
|
|
@@ -13,5 +15,3 @@ gem 'daemon-kit'
|
|
13
15
|
gem 'safely'
|
14
16
|
# gem 'toadhopper' # For reporting exceptions to hoptoad
|
15
17
|
# gem 'mail' # For reporting exceptions via mail
|
16
|
-
|
17
|
-
# For more information on bundler, please visit http://gembundler.com
|
@@ -34,6 +34,13 @@ vendor/
|
|
34
34
|
tmp/
|
35
35
|
Scratch folder
|
36
36
|
|
37
|
+
Rake Tasks
|
38
|
+
==========
|
39
|
+
|
40
|
+
Note that the Rakefile does not load the `config/environments.rb` file, so if you have
|
41
|
+
environment-specific tasks (such as tests), you will need to call rake with the environment:
|
42
|
+
|
43
|
+
DAEMON_ENV=staging bundle exec rake -T
|
37
44
|
|
38
45
|
Logging
|
39
46
|
=======
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# Boot up
|
7
7
|
require File.join(File.dirname(__FILE__), 'boot')
|
8
8
|
|
9
|
-
# Auto-require default libraries and those for the current
|
9
|
+
# Auto-require default libraries and those for the current ruby environment.
|
10
10
|
Bundler.require :default, DaemonKit.env
|
11
11
|
|
12
12
|
DaemonKit::Initializer.run do |config|
|
@@ -2,6 +2,16 @@ module DaemonKit
|
|
2
2
|
module Generators
|
3
3
|
class SpecGenerator < Base
|
4
4
|
|
5
|
+
def update_gemfile
|
6
|
+
append_file 'Gemfile', "group :development, :test do\n gem 'rspec'\nend\n"
|
7
|
+
append_file 'Gemfile', <<-GEM
|
8
|
+
group :development, :test do
|
9
|
+
gem 'rake'
|
10
|
+
gem 'rspec'
|
11
|
+
end
|
12
|
+
GEM
|
13
|
+
end
|
14
|
+
|
5
15
|
def create_specs
|
6
16
|
directory 'spec'
|
7
17
|
end
|
@@ -1,17 +1,16 @@
|
|
1
1
|
DAEMON_ENV = 'test' unless defined?( DAEMON_ENV )
|
2
2
|
|
3
3
|
begin
|
4
|
-
require '
|
4
|
+
require 'rspec'
|
5
5
|
rescue LoadError
|
6
6
|
require 'rubygems'
|
7
|
-
|
8
|
-
require 'spec'
|
7
|
+
require 'rspec'
|
9
8
|
end
|
10
9
|
|
11
10
|
require File.dirname(__FILE__) + '/../config/environment'
|
12
11
|
DaemonKit::Application.running!
|
13
12
|
|
14
|
-
|
13
|
+
RSpec.configure do |config|
|
15
14
|
# == Mock Framework
|
16
15
|
#
|
17
16
|
# RSpec uses it's own mocking framework by default. If you prefer to
|
@@ -1,21 +1,13 @@
|
|
1
|
-
|
2
|
-
require '
|
3
|
-
require '
|
4
|
-
rescue LoadError
|
5
|
-
puts <<-EOS
|
6
|
-
To use rspec for testing you must install rspec gem:
|
7
|
-
gem install rspec
|
8
|
-
EOS
|
9
|
-
end
|
10
|
-
|
11
|
-
begin
|
12
|
-
require 'spec/rake/spectask'
|
1
|
+
if ['test', 'development'].include?(DAEMON_ENV)
|
2
|
+
require 'rspec'
|
3
|
+
require 'rspec/core/rake_task'
|
13
4
|
|
14
5
|
desc "Run the specs under spec/"
|
15
|
-
|
16
|
-
t.
|
17
|
-
t.spec_files = FileList['spec/**/*_spec.rb']
|
6
|
+
RSpec::Core::RakeTask.new do |t|
|
7
|
+
t.rspec_opts = ['--options', "spec/spec.opts"]
|
18
8
|
end
|
19
|
-
|
20
|
-
#
|
9
|
+
|
10
|
+
# Want other tests/tasks run by default?
|
11
|
+
# Add them to the list
|
12
|
+
task :default => [:spec] #, :features]
|
21
13
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module DaemonKit
|
2
|
+
module Generators
|
3
|
+
class SqsGenerator < Base
|
4
|
+
|
5
|
+
def update_gemfile
|
6
|
+
append_file 'Gemfile', "gem 'aws-sdk'\n"
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_config_files
|
10
|
+
directory 'config'
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_daemon
|
14
|
+
directory 'libexec'
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
|
19
|
+
def self.source_root
|
20
|
+
File.expand_path( File.join( File.dirname(__FILE__), 'templates') )
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|