daemon-kit 0.1.8.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/History.txt +10 -3
  2. data/README.rdoc +1 -0
  3. data/daemon-kit.gemspec +6 -2
  4. data/lib/daemon_kit.rb +1 -0
  5. data/lib/daemon_kit/application.rb +3 -3
  6. data/lib/daemon_kit/arguments.rb +18 -8
  7. data/lib/daemon_kit/config.rb +2 -0
  8. data/lib/daemon_kit/dk_sqs.rb +35 -0
  9. data/lib/daemon_kit/generators.rb +1 -3
  10. data/lib/daemon_kit/initializer.rb +10 -3
  11. data/lib/daemon_kit/version.rb +1 -1
  12. data/lib/generators/daemon_kit/amqp/templates/libexec/%app_name%-daemon.rb +3 -5
  13. data/lib/generators/daemon_kit/app/app_generator.rb +3 -1
  14. data/lib/generators/daemon_kit/app/templates/Gemfile +2 -2
  15. data/lib/generators/daemon_kit/app/templates/README.tt +7 -0
  16. data/lib/generators/daemon_kit/app/templates/config/environment.rb.tt +1 -1
  17. data/lib/generators/daemon_kit/rspec/rspec_generator.rb +10 -0
  18. data/lib/generators/daemon_kit/rspec/templates/spec/spec_helper.rb +3 -4
  19. data/lib/generators/daemon_kit/rspec/templates/tasks/rspec.rake +9 -17
  20. data/lib/generators/daemon_kit/sqs/USAGE +5 -0
  21. data/lib/generators/daemon_kit/sqs/sqs_generator.rb +24 -0
  22. data/lib/generators/daemon_kit/sqs/templates/config/pre-daemonize/sqs.rb +6 -0
  23. data/lib/generators/daemon_kit/sqs/templates/config/sqs.yml +20 -0
  24. data/lib/generators/daemon_kit/sqs/templates/libexec/%app_name%-daemon.rb +39 -0
  25. data/spec/daemon_kit_spec.rb +3 -1
  26. data/spec/initializer_spec.rb +4 -0
  27. data/tasks/rspec.rake +5 -17
  28. data/test/test_sqs_generator.rb +48 -0
  29. metadata +148 -181
  30. data/PostInstall.txt +0 -6
  31. data/lib/daemon_kit/vendor/thor-0.13.6/CHANGELOG.rdoc +0 -89
  32. data/lib/daemon_kit/vendor/thor-0.13.6/LICENSE +0 -20
  33. data/lib/daemon_kit/vendor/thor-0.13.6/README.rdoc +0 -297
  34. data/lib/daemon_kit/vendor/thor-0.13.6/Thorfile +0 -69
  35. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor.rb +0 -244
  36. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions.rb +0 -296
  37. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/create_file.rb +0 -103
  38. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/directory.rb +0 -91
  39. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/empty_directory.rb +0 -134
  40. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/file_manipulation.rb +0 -223
  41. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/actions/inject_into_file.rb +0 -104
  42. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/base.rb +0 -540
  43. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/core_ext/file_binary_read.rb +0 -9
  44. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/core_ext/hash_with_indifferent_access.rb +0 -75
  45. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/core_ext/ordered_hash.rb +0 -100
  46. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/error.rb +0 -30
  47. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/group.rb +0 -271
  48. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/invocation.rb +0 -180
  49. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser.rb +0 -4
  50. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser/argument.rb +0 -67
  51. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser/arguments.rb +0 -150
  52. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser/option.rb +0 -128
  53. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/parser/options.rb +0 -169
  54. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/rake_compat.rb +0 -66
  55. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/runner.rb +0 -314
  56. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/shell.rb +0 -83
  57. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/shell/basic.rb +0 -239
  58. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/shell/color.rb +0 -108
  59. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/task.rb +0 -102
  60. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/util.rb +0 -224
  61. data/lib/daemon_kit/vendor/thor-0.13.6/lib/thor/version.rb +0 -3
data/PostInstall.txt DELETED
@@ -1,6 +0,0 @@
1
-
2
- For more information on daemon-kit, see http://kit.rubyforge.org/daemon-kit
3
-
4
- To get started quickly run 'daemon-kit' without any arguments
5
-
6
-
@@ -1,89 +0,0 @@
1
- == 0.13, released 2010-02-03
2
-
3
- * Several bug fixes
4
- * Decoupled Thor::Group and Thor, so it's easier to vendor
5
- * Added check_unknown_options! in case you want error messages to be raised in valid switches.
6
- * run(command) should return the results of command
7
-
8
- == 0.12, released 2010-01-02
9
-
10
- * Methods generated by attr_* are automatically not marked as tasks
11
- * inject_into_file does not add the same content twice, unless :force is set
12
- * Removed rr in favor to rspec mock framework
13
- * Improved output for thor -T
14
- * [#7] Do not force white color on status
15
- * [#8] Yield a block with the filename on directory
16
-
17
- == 0.11, released 2009-07-01
18
-
19
- * Added a rake compatibility layer. It allows you to use spec and rdoc tasks on
20
- Thor classes.
21
-
22
- * BACKWARDS INCOMPATIBLE: aliases are not generated automatically anymore
23
- since it wrong behavior to the invocation system.
24
-
25
- * thor help now show information about any class/task. All those calls are
26
- possible:
27
-
28
- thor help describe
29
- thor help describe:amazing
30
-
31
- Or even with default namespaces:
32
-
33
- thor help :spec
34
-
35
- * Thor::Runner now invokes the default task if none is supplied:
36
-
37
- thor describe # invokes the default task, usually help
38
-
39
- * Thor::Runner now works with mappings:
40
-
41
- thor describe -h
42
-
43
- * Added some documentation and code refactoring.
44
-
45
- == 0.9.8, released 2008-10-20
46
-
47
- * Fixed some tiny issues that were introduced lately.
48
-
49
- == 0.9.7, released 2008-10-13
50
-
51
- * Setting global method options on the initialize method works as expected:
52
- All other tasks will accept these global options in addition to their own.
53
- * Added 'group' notion to Thor task sets (class Thor); by default all tasks
54
- are in the 'standard' group. Running 'thor -T' will only show the standard
55
- tasks - adding --all will show all tasks. You can also filter on a specific
56
- group using the --group option: thor -T --group advanced
57
-
58
- == 0.9.6, released 2008-09-13
59
-
60
- * Generic improvements
61
-
62
- == 0.9.5, released 2008-08-27
63
-
64
- * Improve Windows compatibility
65
- * Update (incorrect) README and task.thor sample file
66
- * Options hash is now frozen (once returned)
67
- * Allow magic predicates on options object. For instance: `options.force?`
68
- * Add support for :numeric type
69
- * BACKWARDS INCOMPATIBLE: Refactor Thor::Options. You cannot access shorthand forms in options hash anymore (for instance, options[:f])
70
- * Allow specifying optional args with default values: method_options(:user => "mislav")
71
- * Don't write options for nil or false values. This allows, for example, turning color off when running specs.
72
- * Exit with the status of the spec command to help CI stuff out some.
73
-
74
- == 0.9.4, released 2008-08-13
75
-
76
- * Try to add Windows compatibility.
77
- * BACKWARDS INCOMPATIBLE: options hash is now accessed as a property in your class and is not passed as last argument anymore
78
- * Allow options at the beginning of the argument list as well as the end.
79
- * Make options available with symbol keys in addition to string keys.
80
- * Allow true to be passed to Thor#method_options to denote a boolean option.
81
- * If loading a thor file fails, don't give up, just print a warning and keep going.
82
- * Make sure that we re-raise errors if they happened further down the pipe than we care about.
83
- * Only delete the old file on updating when the installation of the new one is a success
84
- * Make it Ruby 1.8.5 compatible.
85
- * Don't raise an error if a boolean switch is defined multiple times.
86
- * Thor::Options now doesn't parse through things that look like options but aren't.
87
- * Add URI detection to install task, and make sure we don't append ".thor" to URIs
88
- * Add rake2thor to the gem binfiles.
89
- * Make sure local Thorfiles override system-wide ones.
@@ -1,20 +0,0 @@
1
- Copyright (c) 2008 Yehuda Katz
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,297 +0,0 @@
1
- = thor
2
-
3
- Map options to a class. Simply create a class with the appropriate annotations
4
- and have options automatically map to functions and parameters.
5
-
6
- Example:
7
-
8
- class App < Thor # [1]
9
- map "-L" => :list # [2]
10
-
11
- desc "install APP_NAME", "install one of the available apps" # [3]
12
- method_options :force => :boolean, :alias => :string # [4]
13
- def install(name)
14
- user_alias = options[:alias]
15
- if options.force?
16
- # do something
17
- end
18
- # other code
19
- end
20
-
21
- desc "list [SEARCH]", "list all of the available apps, limited by SEARCH"
22
- def list(search="")
23
- # list everything
24
- end
25
- end
26
-
27
- Thor automatically maps commands as such:
28
-
29
- thor app:install myname --force
30
-
31
- That gets converted to:
32
-
33
- App.new.install("myname")
34
- # with {'force' => true} as options hash
35
-
36
- 1. Inherit from Thor to turn a class into an option mapper
37
- 2. Map additional non-valid identifiers to specific methods. In this case, convert -L to :list
38
- 3. Describe the method immediately below. The first parameter is the usage information, and the second parameter is the description
39
- 4. Provide any additional options that will be available the instance method options.
40
-
41
- == Types for <tt>method_options</tt>
42
-
43
- * :boolean - is parsed as <tt>--option</tt> or <tt>--option=true</tt>
44
- * :string - is parsed as <tt>--option=VALUE</tt>
45
- * :numeric - is parsed as <tt>--option=N</tt>
46
- * :array - is parsed as <tt>--option=one two three</tt>
47
- * :hash - is parsed as <tt>--option=name:string age:integer</tt>
48
-
49
- Besides, method_option allows a default value to be given, examples:
50
-
51
- method_options :force => false
52
- #=> Creates a boolean option with default value false
53
-
54
- method_options :alias => "bar"
55
- #=> Creates a string option with default value "bar"
56
-
57
- method_options :threshold => 3.0
58
- #=> Creates a numeric option with default value 3.0
59
-
60
- You can also supply <tt>:option => :required</tt> to mark an option as required. The
61
- type is assumed to be string. If you want a required hash with default values
62
- as option, you can use <tt>method_option</tt> which uses a more declarative style:
63
-
64
- method_option :attributes, :type => :hash, :default => {}, :required => true
65
-
66
- All arguments can be set to nil (except required arguments), by suppling a no or
67
- skip variant. For example:
68
-
69
- thor app name --no-attributes
70
-
71
- In previous versions, aliases for options were created automatically, but now
72
- they should be explicit. You can supply aliases in both short and declarative
73
- styles:
74
-
75
- method_options %w( force -f ) => :boolean
76
-
77
- Or:
78
-
79
- method_option :force, :type => :boolean, :aliases => "-f"
80
-
81
- You can supply as many aliases as you want.
82
-
83
- NOTE: Type :optional available in Thor 0.9.0 was deprecated. Use :string or :boolean instead.
84
-
85
- == Namespaces
86
-
87
- By default, your Thor tasks are invoked using Ruby namespace. In the example
88
- above, tasks are invoked as:
89
-
90
- thor app:install name --force
91
-
92
- However, you could namespace your class as:
93
-
94
- module Sinatra
95
- class App < Thor
96
- # tasks
97
- end
98
- end
99
-
100
- And then you should invoke your tasks as:
101
-
102
- thor sinatra:app:install name --force
103
-
104
- If desired, you can change the namespace:
105
-
106
- module Sinatra
107
- class App < Thor
108
- namespace :myapp
109
- # tasks
110
- end
111
- end
112
-
113
- And then your tasks hould be invoked as:
114
-
115
- thor myapp:install name --force
116
-
117
- == Invocations
118
-
119
- Thor comes with a invocation-dependency system as well which allows a task to be
120
- invoked only once. For example:
121
-
122
- class Counter < Thor
123
- desc "one", "Prints 1, 2, 3"
124
- def one
125
- puts 1
126
- invoke :two
127
- invoke :three
128
- end
129
-
130
- desc "two", "Prints 2, 3"
131
- def two
132
- puts 2
133
- invoke :three
134
- end
135
-
136
- desc "three", "Prints 3"
137
- def three
138
- puts 3
139
- end
140
- end
141
-
142
- When invoking the task one:
143
-
144
- thor counter:one
145
-
146
- The output is "1 2 3", which means that the three task was invoked only once.
147
- You can even invoke tasks from another class, so be sure to check the
148
- documentation[http://rdoc.info/rdoc/wycats/thor/blob/f939a3e8a854616784cac1dcff04ef4f3ee5f7ff/Thor.html].
149
-
150
- == Thor::Group
151
-
152
- Thor has a special class called Thor::Group. The main difference to Thor class
153
- is that it invokes all tasks at once. The example above could be rewritten in
154
- Thor::Group as this:
155
-
156
- class Counter < Thor::Group
157
- desc "Prints 1, 2, 3"
158
-
159
- def one
160
- puts 1
161
- end
162
-
163
- def two
164
- puts 2
165
- end
166
-
167
- def three
168
- puts 3
169
- end
170
- end
171
-
172
- When invoked:
173
-
174
- thor counter
175
-
176
- It prints "1 2 3" as well. Notice you should describe (using the method <tt>desc</tt>)
177
- only the class and not each task anymore. Thor::Group is a great tool to create
178
- generators, since you can define several steps which are invoked in the order they
179
- are defined (Thor::Group is the tool use in generators in Rails 3.0).
180
-
181
- Besides, Thor::Group can parse arguments and options as Thor tasks:
182
-
183
- class Counter < Thor::Group
184
- # number will be available as attr_accessor
185
- argument :number, :type => :numeric, :desc => "The number to start counting"
186
- desc "Prints the 'number' given upto 'number+2'"
187
-
188
- def one
189
- puts number + 0
190
- end
191
-
192
- def two
193
- puts number + 1
194
- end
195
-
196
- def three
197
- puts number + 2
198
- end
199
- end
200
-
201
- The counter above expects one parameter and has the folling outputs:
202
-
203
- thor counter 5
204
- # Prints "5 6 7"
205
-
206
- thor counter 11
207
- # Prints "11 12 13"
208
-
209
- You can also give options to Thor::Group, but instead of using <tt>method_option</tt>
210
- and <tt>method_options</tt>, you should use <tt>class_option</tt> and <tt>class_options</tt>.
211
- Both argument and class_options methods are available to Thor class as well.
212
-
213
- == Actions
214
-
215
- Thor comes with several actions which helps with script and generator tasks. You
216
- might be familiar with them since some came from Rails Templates. They are:
217
- <tt>say</tt>, <tt>ask</tt>, <tt>yes?</tt>, <tt>no?</tt>, <tt>add_file</tt>,
218
- <tt>remove_file</tt>, <tt>copy_file</tt>, <tt>template</tt>, <tt>directory</tt>,
219
- <tt>inside</tt>, <tt>run</tt>, <tt>inject_into_file</tt> and a couple more.
220
-
221
- To use them, you just need to include Thor::Actions in your Thor classes:
222
-
223
- class App < Thor
224
- include Thor::Actions
225
- # tasks
226
- end
227
-
228
- Some actions like copy file requires that a class method called source_root is
229
- defined in your class. This is the directory where your templates should be
230
- placed. Be sure to check the documentation on actions[http://rdoc.info/rdoc/wycats/thor/blob/f939a3e8a854616784cac1dcff04ef4f3ee5f7ff/Thor/Actions.html].
231
-
232
- == Generators
233
-
234
- A great use for Thor is creating custom generators. Combining Thor::Group,
235
- Thor::Actions and ERB templates makes this very easy. Here is an example:
236
-
237
- class Newgem < Thor::Group
238
- include Thor::Actions
239
-
240
- # Define arguments and options
241
- argument :name
242
- class_option :test_framework, :default => :test_unit
243
-
244
- def self.source_root
245
- File.dirname(__FILE__)
246
- end
247
-
248
- def create_lib_file
249
- template('templates/newgem.tt', "#{name}/lib/#{name}.rb")
250
- end
251
-
252
- def create_test_file
253
- test = options[:test_framework] == "rspec" ? :spec : :test
254
- create_file "#{name}/#{test}/#{name}_#{test}.rb"
255
- end
256
-
257
- def copy_licence
258
- if yes?("Use MIT license?")
259
- # Make a copy of the MITLICENSE file at the source root
260
- copy_file "MITLICENSE", "#{name}/MITLICENSE"
261
- else
262
- say "Shame on you…", :red
263
- end
264
- end
265
- end
266
-
267
- Doing a <tt>thor -T</tt> will show how to run our generator. It should read:
268
- <tt>thor newgem NAME</tt>. This shows that we have to supply a NAME
269
- argument for our generator to run.
270
-
271
- The <tt>create_lib_file</tt> uses an ERB template. This is what it looks like:
272
-
273
- class <%= name.capitalize %>
274
- end
275
-
276
- The arguments that you set in your generator will automatically be passed in
277
- when <tt>template</tt> gets called. Be sure to read the documentation[http://rdoc.info/rdoc/wycats/thor/blob/f939a3e8a854616784cac1dcff04ef4f3ee5f7ff/Thor/Actions.html] for
278
- more options.
279
-
280
- Running the generator with <tt>thor newgem devise</tt> will
281
- create two files: "devise/lib/devise.rb",
282
- "devise/test/devise_test.rb". The user will then be prompt (with the
283
- use of the method <tt>yes?</tt>) if he wants to copy the MITLICENSE. If you
284
- want to change the test framework, you can add the option:
285
- <tt>thor newgem devise --test-framework=rspec</tt>
286
- This will generate: "devise/lib/devise.rb" and
287
- "devise/spec/devise_spec.rb".
288
-
289
- == Further Reading
290
-
291
- Thor has many scripting possibilities beyond these examples. Be sure to read
292
- through the documentation[http://rdoc.info/rdoc/wycats/thor/blob/f939a3e8a854616784cac1dcff04ef4f3ee5f7ff/Thor.html] and specs[http://github.com/wycats/thor/tree/master/spec/] to get a better understanding of all the
293
- options Thor offers.
294
-
295
- == License
296
-
297
- See MIT LICENSE.
@@ -1,69 +0,0 @@
1
- # enconding: utf-8
2
-
3
- require File.join(File.dirname(__FILE__), "lib", "thor", "version")
4
- require 'rubygems'
5
- require 'thor/rake_compat'
6
- require 'spec/rake/spectask'
7
- begin
8
- require 'rdoc/task'
9
- rescue LoadError
10
- end
11
-
12
- GEM_NAME = 'thor'
13
- EXTRA_RDOC_FILES = ["README.rdoc", "LICENSE", "CHANGELOG.rdoc", "VERSION", "Thorfile"]
14
-
15
- class Default < Thor
16
- include Thor::RakeCompat
17
-
18
- Spec::Rake::SpecTask.new(:spec) do |t|
19
- t.libs << 'lib'
20
- t.spec_opts = ['--options', "spec/spec.opts"]
21
- t.spec_files = FileList['spec/**/*_spec.rb']
22
- end
23
-
24
- Spec::Rake::SpecTask.new(:rcov) do |t|
25
- t.libs << 'lib'
26
- t.spec_opts = ['--options', "spec/spec.opts"]
27
- t.spec_files = FileList['spec/**/*_spec.rb']
28
- t.rcov = true
29
- t.rcov_dir = "rcov"
30
- end
31
-
32
- if defined?(RDoc)
33
- RDoc::Task.new do |rdoc|
34
- rdoc.main = "README.rdoc"
35
- rdoc.rdoc_dir = "rdoc"
36
- rdoc.title = GEM_NAME
37
- rdoc.rdoc_files.include(*EXTRA_RDOC_FILES)
38
- rdoc.rdoc_files.include('lib/**/*.rb')
39
- rdoc.options << '--line-numbers' << '--inline-source'
40
- end
41
- end
42
-
43
- begin
44
- require 'jeweler'
45
- Jeweler::Tasks.new do |s|
46
- s.name = GEM_NAME
47
- s.version = Thor::VERSION
48
- s.rubyforge_project = "textmate"
49
- s.platform = Gem::Platform::RUBY
50
- s.summary = "A scripting framework that replaces rake, sake and rubigen"
51
- s.email = "ruby-thor@googlegroups.com"
52
- s.homepage = "http://yehudakatz.com"
53
- s.description = "A scripting framework that replaces rake, sake and rubigen"
54
- s.authors = ['Yehuda Katz', 'José Valim']
55
- s.has_rdoc = true
56
- s.extra_rdoc_files = EXTRA_RDOC_FILES
57
- s.require_path = 'lib'
58
- s.bindir = "bin"
59
- s.executables = %w( thor rake2thor )
60
- s.files = s.extra_rdoc_files + Dir.glob("{bin,lib}/**/*")
61
- s.test_files.include 'spec/**/*'
62
- s.test_files.exclude 'spec/sandbox/**/*'
63
- end
64
-
65
- Jeweler::GemcutterTasks.new
66
- rescue LoadError
67
- puts "Jeweler, or one of its dependencies, is not available. Install it with: gem install jeweler"
68
- end
69
- end