waves-stable 0.7.7

Sign up to get free protection for your applications and to get access to all the features.
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 )