waves-stable 0.7.7

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.
Files changed (185) hide show
  1. data/app/Rakefile +72 -0
  2. data/app/bin/waves-console +4 -0
  3. data/app/bin/waves-server +4 -0
  4. data/app/configurations/development.rb.erb +31 -0
  5. data/app/configurations/mapping.rb.erb +14 -0
  6. data/app/configurations/production.rb.erb +31 -0
  7. data/app/controllers/.gitignore +0 -0
  8. data/app/doc/.gitignore +0 -0
  9. data/app/helpers/.gitignore +0 -0
  10. data/app/lib/application.rb.erb +5 -0
  11. data/app/lib/tasks/.gitignore +0 -0
  12. data/app/log/.gitignore +0 -0
  13. data/app/models/.gitignore +0 -0
  14. data/app/public/css/.gitignore +0 -0
  15. data/app/public/flash/.gitignore +0 -0
  16. data/app/public/images/.gitignore +0 -0
  17. data/app/public/javascript/.gitignore +0 -0
  18. data/app/schema/migrations/.gitignore +0 -0
  19. data/app/startup.rb +5 -0
  20. data/app/templates/errors/not_found_404.mab +2 -0
  21. data/app/templates/errors/server_error_500.mab +2 -0
  22. data/app/templates/layouts/default.mab +14 -0
  23. data/app/tmp/sessions/.gitignore +0 -0
  24. data/app/views/.gitignore +0 -0
  25. data/bin/waves +84 -0
  26. data/bin/waves-console +4 -0
  27. data/bin/waves-server +4 -0
  28. data/doc/HISTORY +44 -0
  29. data/doc/LICENSE +22 -0
  30. data/lib/commands/waves-console.rb +21 -0
  31. data/lib/commands/waves-server.rb +55 -0
  32. data/lib/controllers/base.rb +11 -0
  33. data/lib/controllers/mixin.rb +165 -0
  34. data/lib/dispatchers/base.rb +67 -0
  35. data/lib/dispatchers/default.rb +81 -0
  36. data/lib/foundations/default.rb +27 -0
  37. data/lib/foundations/simple.rb +30 -0
  38. data/lib/helpers/asset_helper.rb +67 -0
  39. data/lib/helpers/common.rb +66 -0
  40. data/lib/helpers/default.rb +13 -0
  41. data/lib/helpers/form.rb +40 -0
  42. data/lib/helpers/formatting.rb +30 -0
  43. data/lib/helpers/model.rb +33 -0
  44. data/lib/helpers/number_helper.rb +25 -0
  45. data/lib/helpers/tag_helper.rb +58 -0
  46. data/lib/helpers/url_helper.rb +77 -0
  47. data/lib/helpers/view.rb +24 -0
  48. data/lib/layers/default_errors.rb +26 -0
  49. data/lib/layers/inflect/english.rb +24 -0
  50. data/lib/layers/inflect/english/rules.rb +88 -0
  51. data/lib/layers/inflect/english/string.rb +24 -0
  52. data/lib/layers/mvc.rb +54 -0
  53. data/lib/layers/orm/active_record.rb +92 -0
  54. data/lib/layers/orm/active_record/migrations/empty.rb.erb +9 -0
  55. data/lib/layers/orm/active_record/tasks/generate.rb +28 -0
  56. data/lib/layers/orm/active_record/tasks/schema.rb +22 -0
  57. data/lib/layers/orm/data_mapper.rb +38 -0
  58. data/lib/layers/orm/filebase.rb +22 -0
  59. data/lib/layers/orm/migration.rb +79 -0
  60. data/lib/layers/orm/sequel.rb +86 -0
  61. data/lib/layers/orm/sequel/migrations/empty.rb.erb +9 -0
  62. data/lib/layers/orm/sequel/tasks/generate.rb +28 -0
  63. data/lib/layers/orm/sequel/tasks/schema.rb +16 -0
  64. data/lib/layers/simple.rb +32 -0
  65. data/lib/layers/simple_errors.rb +23 -0
  66. data/lib/mapping/mapping.rb +289 -0
  67. data/lib/mapping/pretty_urls.rb +96 -0
  68. data/lib/renderers/erubis.rb +63 -0
  69. data/lib/renderers/haml.rb +45 -0
  70. data/lib/renderers/markaby.rb +33 -0
  71. data/lib/renderers/mixin.rb +50 -0
  72. data/lib/runtime/application.rb +69 -0
  73. data/lib/runtime/blackboard.rb +57 -0
  74. data/lib/runtime/configuration.rb +185 -0
  75. data/lib/runtime/console.rb +20 -0
  76. data/lib/runtime/debugger.rb +9 -0
  77. data/lib/runtime/logger.rb +59 -0
  78. data/lib/runtime/mime_types.rb +22 -0
  79. data/lib/runtime/request.rb +78 -0
  80. data/lib/runtime/response.rb +40 -0
  81. data/lib/runtime/response_mixin.rb +38 -0
  82. data/lib/runtime/response_proxy.rb +30 -0
  83. data/lib/runtime/server.rb +107 -0
  84. data/lib/runtime/session.rb +66 -0
  85. data/lib/tasks/cluster.rb +26 -0
  86. data/lib/tasks/gem.rb +31 -0
  87. data/lib/tasks/generate.rb +80 -0
  88. data/lib/utilities/hash.rb +31 -0
  89. data/lib/utilities/inflect.rb +110 -0
  90. data/lib/utilities/integer.rb +24 -0
  91. data/lib/utilities/module.rb +21 -0
  92. data/lib/utilities/object.rb +25 -0
  93. data/lib/utilities/proc.rb +16 -0
  94. data/lib/utilities/string.rb +49 -0
  95. data/lib/utilities/symbol.rb +10 -0
  96. data/lib/utilities/tempfile.rb +9 -0
  97. data/lib/views/base.rb +9 -0
  98. data/lib/views/mixin.rb +110 -0
  99. data/lib/waves.rb +84 -0
  100. data/samples/blog/Rakefile +14 -0
  101. data/samples/blog/bin/waves-console +3 -0
  102. data/samples/blog/bin/waves-server +3 -0
  103. data/samples/blog/configurations/development.rb +31 -0
  104. data/samples/blog/configurations/mapping.rb +23 -0
  105. data/samples/blog/configurations/production.rb +30 -0
  106. data/samples/blog/doc/EMTPY +0 -0
  107. data/samples/blog/lib/application.rb +5 -0
  108. data/samples/blog/models/comment.rb +14 -0
  109. data/samples/blog/models/entry.rb +14 -0
  110. data/samples/blog/public/css/site.css +2 -0
  111. data/samples/blog/public/javascript/site.js +13 -0
  112. data/samples/blog/schema/migrations/001_initial_schema.rb +17 -0
  113. data/samples/blog/schema/migrations/002_add_comments.rb +18 -0
  114. data/samples/blog/schema/migrations/templates/empty.rb.erb +9 -0
  115. data/samples/blog/startup.rb +6 -0
  116. data/samples/blog/templates/comment/add.mab +10 -0
  117. data/samples/blog/templates/comment/list.mab +6 -0
  118. data/samples/blog/templates/entry/editor.mab +13 -0
  119. data/samples/blog/templates/entry/list.mab +11 -0
  120. data/samples/blog/templates/entry/show.mab +9 -0
  121. data/samples/blog/templates/entry/summary.mab +5 -0
  122. data/samples/blog/templates/errors/not_found_404.mab +2 -0
  123. data/samples/blog/templates/errors/server_error_500.mab +2 -0
  124. data/samples/blog/templates/layouts/default.mab +17 -0
  125. data/verify/app_generation/helpers.rb +24 -0
  126. data/verify/app_generation/startup.rb +39 -0
  127. data/verify/blackboard/blackboard_verify.rb +92 -0
  128. data/verify/blackboard/helpers.rb +5 -0
  129. data/verify/configurations/attributes.rb +37 -0
  130. data/verify/configurations/helpers.rb +1 -0
  131. data/verify/configurations/rack_integration.rb +29 -0
  132. data/verify/controllers/base.rb +37 -0
  133. data/verify/controllers/helpers.rb +13 -0
  134. data/verify/controllers/interface.rb +51 -0
  135. data/verify/core/helpers.rb +3 -0
  136. data/verify/core/utilities.rb +177 -0
  137. data/verify/foundations/default.rb +86 -0
  138. data/verify/foundations/default_application/Rakefile +14 -0
  139. data/verify/foundations/default_application/bin/waves-console +3 -0
  140. data/verify/foundations/default_application/bin/waves-server +3 -0
  141. data/verify/foundations/default_application/configurations/development.rb +26 -0
  142. data/verify/foundations/default_application/configurations/mapping.rb +14 -0
  143. data/verify/foundations/default_application/configurations/production.rb +30 -0
  144. data/verify/foundations/default_application/controllers/default.rb +15 -0
  145. data/verify/foundations/default_application/controllers/loaded.rb +15 -0
  146. data/verify/foundations/default_application/defaultapplication.db +0 -0
  147. data/verify/foundations/default_application/helpers/loaded.rb +10 -0
  148. data/verify/foundations/default_application/lib/application.rb +5 -0
  149. data/verify/foundations/default_application/models/default.rb +13 -0
  150. data/verify/foundations/default_application/models/loaded.rb +13 -0
  151. data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +9 -0
  152. data/verify/foundations/default_application/startup.rb +7 -0
  153. data/verify/foundations/default_application/templates/errors/not_found_404.mab +2 -0
  154. data/verify/foundations/default_application/templates/errors/server_error_500.mab +2 -0
  155. data/verify/foundations/default_application/templates/layouts/default.mab +14 -0
  156. data/verify/foundations/default_application/views/default.rb +7 -0
  157. data/verify/foundations/default_application/views/loaded.rb +15 -0
  158. data/verify/foundations/helpers.rb +1 -0
  159. data/verify/foundations/simple.rb +25 -0
  160. data/verify/helpers.rb +76 -0
  161. data/verify/layers/data_mapper/association_verify.rb +87 -0
  162. data/verify/layers/default_errors.rb +29 -0
  163. data/verify/layers/helpers.rb +1 -0
  164. data/verify/layers/migration.rb +33 -0
  165. data/verify/layers/sequel/model.rb +41 -0
  166. data/verify/mapping/always.rb +19 -0
  167. data/verify/mapping/filters.rb +65 -0
  168. data/verify/mapping/handle.rb +24 -0
  169. data/verify/mapping/helpers.rb +7 -0
  170. data/verify/mapping/matches.rb +27 -0
  171. data/verify/mapping/named.rb +29 -0
  172. data/verify/mapping/options.rb +17 -0
  173. data/verify/mapping/path.rb +40 -0
  174. data/verify/mapping/response_proxy.rb +50 -0
  175. data/verify/mapping/threaded.rb +25 -0
  176. data/verify/requests/helpers.rb +16 -0
  177. data/verify/requests/request.rb +73 -0
  178. data/verify/requests/response.rb +59 -0
  179. data/verify/requests/session.rb +54 -0
  180. data/verify/views/helpers.rb +1 -0
  181. data/verify/views/rendering.rb +34 -0
  182. data/verify/views/templates/foo.erb +0 -0
  183. data/verify/views/templates/moo.erb +0 -0
  184. data/verify/views/templates/moo.mab +0 -0
  185. metadata +439 -0
data/app/Rakefile ADDED
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Warning: This file is clobbered when you update your
4
+ # application with the waves script. Accordingly, you may
5
+ # wish to keep your tasks in .rb or .rake files in lib/tasks
6
+
7
+ begin
8
+ require 'startup'
9
+ Waves::Console.load(:mode => ENV['mode'])
10
+
11
+ # load tasks from waves framework
12
+ %w( cluster generate gem ).each { |task| require "tasks/#{task}.rb" }
13
+
14
+ # load tasks from this app's lib/tasks
15
+ Dir["lib/tasks/*.{rb,rake}"].each { |task| require task }
16
+
17
+ rescue LoadError => e
18
+ if e.message == 'no such file to load -- waves'
19
+ puts "Can't find Waves source. Install gem, freeze Waves, or define WAVES in startup.rb"
20
+ puts
21
+ else
22
+ raise e
23
+ end
24
+ end
25
+
26
+ namespace :waves do
27
+
28
+ desc "freeze src=<wherever> to ./waves"
29
+ task :freeze do
30
+
31
+ target = "#{Dir.pwd}/waves"
32
+ src = ENV['src']
33
+ raise "Please specify the location of waves using src=wherever" unless src
34
+ raise "No directory found at '#{src}'" unless File.directory?(src)
35
+
36
+ items = FileList["#{src}/*"]
37
+ puts "Freezing from: #{src}"
38
+ items.each do |item|
39
+ puts "copying #{item}"
40
+ cp_r item, target
41
+ end
42
+
43
+ end
44
+
45
+ desc "unfreeze (i.e. delete) the waves source at ./waves"
46
+ task :unfreeze do
47
+ frozen = "#{Dir.pwd}/waves"
48
+ rm_r frozen if File.exist?(frozen)
49
+ end
50
+
51
+ # Convenience task to allow you to freeze the current Waves
52
+ # source without knowing where it is. This task only gets
53
+ # defined when the Rakefile successfully loaded Waves and if
54
+ # there's nothing in the way at ./waves
55
+ if defined?(WAVES) && !File.exist?("#{Dir.pwd}/waves")
56
+ namespace :freeze do
57
+ desc "freeze current Waves source to ./waves"
58
+ task :current do
59
+ target = "#{Dir.pwd}/waves"
60
+ current = File.expand_path( WAVES )
61
+ items = FileList["#{current}/*"]
62
+ puts "Freezing from: #{current}"
63
+ items.each do |item|
64
+ puts "copying #{item}"
65
+ cp_r item, target
66
+ end
67
+
68
+ end
69
+ end
70
+ end
71
+
72
+ end
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'startup'
4
+ require 'commands/waves-console'
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'startup'
4
+ require 'commands/waves-server'
@@ -0,0 +1,31 @@
1
+ module <%= @name %>
2
+
3
+ module Configurations
4
+
5
+ class Development < Default
6
+
7
+ database :adapter => 'sqlite', :database => '<%= @name.downcase %>'
8
+
9
+ reloadable [ <%= @name %> ]
10
+
11
+ log :level => :debug
12
+
13
+ host '127.0.0.1'
14
+
15
+ port 3000
16
+
17
+ handler ::Rack::Handler::Mongrel, :Host => host, :Port => port
18
+ # handler ::Rack::Handler::WEBrick, :BindAddress => host, :Port => port
19
+ # handler ::Rack::Handler::Thin, :Host => host, :Port => port
20
+
21
+ application do
22
+ use ::Rack::ShowExceptions
23
+ use ::Rack::Static, :urls => [ '/css/', '/javascript/', '/images/' ], :root => 'public'
24
+ run ::Waves::Dispatchers::Default.new
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,14 @@
1
+ module <%= @name %>
2
+
3
+ module Configurations
4
+
5
+ module Mapping
6
+ extend Waves::Mapping
7
+ # your custom rules go here
8
+ include Waves::Mapping::PrettyUrls::RestRules
9
+ include Waves::Mapping::PrettyUrls::GetRules
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,31 @@
1
+ module <%= @name %>
2
+
3
+ module Configurations
4
+
5
+ class Production < Default
6
+
7
+ database :host => 'localhost', :adapter => 'mysql', :database => '<%= @name.downcase %>',
8
+ :user => 'root', :password => ''
9
+
10
+ reloadable []
11
+
12
+ log :level => :error,
13
+ :output => ( :log / "waves.#{$$}" ),
14
+ :rotation => :weekly
15
+
16
+ host '0.0.0.0'
17
+
18
+ port 80
19
+
20
+ handler ::Rack::Handler::Mongrel, :Host => host, :Port => port
21
+ # handler ::Rack::Handler::WEBrick, :BindAddress => host, :Port => port
22
+ # handler ::Rack::Handler::Thin, :Host => host, :Port => port
23
+
24
+ application do
25
+ use ::Rack::Static, :urls => [ '/css/', '/javascript/', '/images/' ], :root => 'public'
26
+ run ::Waves::Dispatchers::Default.new
27
+ end
28
+
29
+ end
30
+ end
31
+ end
File without changes
File without changes
File without changes
@@ -0,0 +1,5 @@
1
+ <%= @orm_require %>
2
+ module <%= @name %>
3
+ include Waves::Foundations::Default
4
+ <%= @orm_include %>
5
+ end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/app/startup.rb ADDED
@@ -0,0 +1,5 @@
1
+ lambda {
2
+ waves = ( ( WAVES if defined? WAVES ) || ENV['WAVES'] || File.join(File.dirname(__FILE__), 'waves') )
3
+ $:.unshift(File.join( waves, "lib" )) if File.exist? waves
4
+ }.call
5
+ require 'waves'
@@ -0,0 +1,2 @@
1
+ h1 '404'
2
+ p %q( That URL does not exist on this server. )
@@ -0,0 +1,2 @@
1
+ h1 '500'
2
+ p %q( Internal server error. Sorry, but your request could not be processed. )
@@ -0,0 +1,14 @@
1
+ doctype :html4_strict
2
+
3
+ html do
4
+
5
+ head do
6
+ title @title
7
+ end
8
+
9
+ body do
10
+ layout_content
11
+ end
12
+
13
+ end
14
+
File without changes
File without changes
data/bin/waves ADDED
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # = Generate or update a Waves application
4
+ #
5
+ # The +waves+ script generates a new Waves application or updates an existing app. The script uses {RakeGen}[http://github.com/automatthew/rakegen] for file copies and template processing, and the current version of RakeGen requires you to affirm that you want to clobber each and every file when doing an update.
6
+ #
7
+ # == Usage
8
+ #
9
+ # # Generate a Waves app using the default ORM layer, which is currently Sequel
10
+ # waves /path/to/app
11
+ #
12
+ # # Generate an app using the default ORM layer, which is currently Sequel
13
+ # waves /path/to/app --orm=active_record
14
+ #
15
+ # # Generate an app that does not include an ORM layer
16
+ # waves /path/to/app -o none
17
+
18
+ require 'rubygems'
19
+ require 'choice'
20
+ require 'rakegen'
21
+
22
+
23
+
24
+ # if we're in the waves source, prepend it to the load path
25
+ waves_lib = File.expand_path( "#{File.dirname(__FILE__)}/../../waves/lib" )
26
+ $:.unshift waves_lib if File.exist?(waves_lib)
27
+ require 'waves'
28
+
29
+ begin
30
+ require 'utilities/string'
31
+ rescue LoadError
32
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'utilities', 'string')
33
+ end
34
+
35
+ Choice.options do
36
+ banner 'Usage: waves path/to/app [-h]'
37
+ option :help do
38
+ long '--help'
39
+ desc 'Show this message'
40
+ end
41
+
42
+ option :orm do
43
+ short '-o'
44
+ long '--orm=ORM'
45
+ desc "Select an ORM (e.g. active_record, sequel, none)"
46
+ default "sequel"
47
+ end
48
+
49
+ end
50
+
51
+ orm = Choice.choices.orm.snake_case
52
+ orm_require, orm_include = case orm
53
+ when 'sequel'
54
+ ["require 'layers/orm/sequel'", "include Waves::Layers::ORM::Sequel"]
55
+ when 'active_record'
56
+ ["require 'layers/orm/active_record'", "include Waves::Layers::ORM::ActiveRecord"]
57
+ when 'none'
58
+ ['', '# This app was generated without an ORM layer']
59
+ end
60
+
61
+ app_path = ARGV[0]
62
+ app_name = File.basename(app_path)
63
+ if app_name =~ /[^\w\d_]/
64
+ raise ArgumentError, <<-TEXT
65
+ Unusable name: \"#{app_name}\"
66
+ Application names may contain only letters, numbers, and underscores."
67
+ TEXT
68
+ end
69
+
70
+ template = "#{WAVES}/app"
71
+
72
+ generator = Rakegen.new("waves:app") do |gen|
73
+ gen.source = template
74
+ gen.target = app_path
75
+ gen.template_assigns = {:name => app_name.camel_case, :orm_require => orm_require, :orm_include => orm_include }
76
+ gen.executables = %w{ bin/waves-console bin/waves-server}
77
+ end
78
+
79
+ puts "** Creating new Waves application ..."
80
+
81
+ Rake::Task["waves:app"].invoke
82
+
83
+ puts "** Application created!"
84
+
data/bin/waves-console ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'startup'
4
+ require 'commands/waves-console'
data/bin/waves-server ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'startup'
4
+ require 'commands/waves-server'
data/doc/HISTORY ADDED
@@ -0,0 +1,44 @@
1
+ 0.7.7
2
+ - ActiveRecord ORM layer
3
+ - base controller helpers that rely on a particular ORM are now defined in the ORM layers
4
+ - Sequel requires moved into the self.included block, to help with the mem footprint
5
+ - rake generate:model reappeared
6
+ - rake waves:freeze and waves:unfreeze
7
+ - Rack::Static declared for /css, /javascript, and /images in generated applications
8
+ - added Lawrence Pit's Haml renderer
9
+ - English inflector pulled into its own layer, in the hope of allowing localization someday
10
+ - utility monkeypatches pulled into modules where possible, for better troubleshooting
11
+ - docs, samples, and verify now actually included in the gem
12
+ - monkeypatch to Tempfile to work around problem with file uploading and Rack.
13
+ 0.7.6
14
+ - added metaid as gem dependency
15
+ - Special handling in Windows for interrupts ('cause Windows has trouble with those)
16
+ - Fixed query param destructuring to work for 3+ levels
17
+ 0.7.5
18
+ - Foundations and Layers
19
+ - Sequel ORM is now a Layer, instead of being baked in
20
+ - Almost all boilerplate code removed from generated app, by virtue of the Layers refactoring
21
+ - Configuration attribute for selecting a Rack handler
22
+ - Mapping#handle method to register blocks that handle exceptions (e.g. NotFoundError)
23
+ - Blackboard, a very simple shared storaged usable during request processing.
24
+ - Fixed waves script to work when installed as gem (regression)
25
+ - Revised and extended documentation
26
+ - Expanded spec coverage
27
+ 0.7.3:
28
+ - Added explicit require for daemons gem
29
+ - Added support for running off source
30
+ - Added support for using SQLite
31
+ - Improved inflection
32
+ - Windows support for waves, waves-server, and waves-console
33
+ 0.7.2:
34
+ - Minor bug fixes, improved documentation
35
+ 0.7.1:
36
+ - Minor bug fixes, improved documentation
37
+ 0.7.0:
38
+ - Minor bug fixes, improved documentation
39
+ 0.6.9:
40
+ - Minor bug fixes, improved documentation
41
+ 0.6.8:
42
+ - Minor bug fixes, improved documentation
43
+ 0.6.7:
44
+ - Initial gem release.
data/doc/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2007-8 Dan Yoder
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,21 @@
1
+ require 'choice'
2
+
3
+ Choice.options do
4
+ header 'Run waves in console mode.'
5
+ header ''
6
+ option :mode do
7
+ short '-c'
8
+ long '--config=CONFIG'
9
+ desc 'Configuration to use.'
10
+ desc 'Defaults to development.'
11
+ cast Symbol
12
+ end
13
+ separator ''
14
+ end
15
+
16
+ console = Waves::Console.load( Choice.choices )
17
+ Object.send(:define_method, :waves) { console }
18
+ require 'irb'
19
+ require 'irb/completion'
20
+ ARGV.clear
21
+ IRB.start
@@ -0,0 +1,55 @@
1
+ require 'choice'
2
+
3
+ Choice.options do
4
+ header 'Run a waves application server.'
5
+ header ''
6
+ option :port do
7
+ short '-p'
8
+ long '--port=PORT'
9
+ desc 'Port to listen on.'
10
+ desc 'Defaults to value given in configuration.'
11
+ cast Integer
12
+ end
13
+ separator ''
14
+ option :host do
15
+ short '-h'
16
+ long '--host=HOST'
17
+ desc 'Host or IP address of the host to bind.'
18
+ desc 'Defaults to value given in configuration.'
19
+ end
20
+ separator ''
21
+ option :mode do
22
+ short '-c'
23
+ long '--config=CONFIG'
24
+ desc 'Configuration to use.'
25
+ desc 'Defaults to development.'
26
+ cast Symbol
27
+ end
28
+ separator ''
29
+ option :directory do
30
+ short '-D'
31
+ long '--dir=DIR'
32
+ desc 'Directory containing the application.'
33
+ desc 'Defaults to the current directory.'
34
+ end
35
+ separator ''
36
+ option :daemon do
37
+ short '-d'
38
+ long '--daemon'
39
+ desc 'Run as a daemon.'
40
+ end
41
+ separator ''
42
+ option :debugger do
43
+ short '-u'
44
+ long '--debugger'
45
+ desc 'Enable ruby-debug.'
46
+ end
47
+ separator ''
48
+ option :startup do
49
+ short '-s'
50
+ long '--startup'
51
+ desc 'Startup file to load.'
52
+ desc 'Defaults to "lib/startup.rb"'
53
+ end
54
+ end
55
+ Waves::Server.run( Choice.choices )