waves 0.7.6 → 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 (291) hide show
  1. data/app/Rakefile +64 -6
  2. data/app/configurations/development.rb.erb +2 -1
  3. data/app/configurations/mapping.rb.erb +1 -0
  4. data/app/configurations/production.rb.erb +1 -0
  5. data/app/lib/application.rb.erb +2 -2
  6. data/bin/waves +36 -1
  7. data/doc/HISTORY +44 -0
  8. data/doc/LICENSE +22 -0
  9. data/doc/rdoc/classes/Erubis/Context.html +218 -0
  10. data/doc/rdoc/classes/Kernel.html +145 -0
  11. data/doc/rdoc/classes/Symbol.html +154 -0
  12. data/doc/rdoc/classes/Tempfile.html +161 -0
  13. data/doc/rdoc/classes/Waves.html +455 -0
  14. data/doc/rdoc/classes/Waves/Application.html +371 -0
  15. data/doc/rdoc/classes/Waves/Blackboard.html +296 -0
  16. data/doc/rdoc/classes/Waves/Configurations.html +283 -0
  17. data/doc/rdoc/classes/Waves/Configurations/Base.html +209 -0
  18. data/doc/rdoc/classes/Waves/Configurations/Default.html +237 -0
  19. data/doc/rdoc/classes/Waves/Console.html +187 -0
  20. data/doc/rdoc/classes/Waves/Controllers.html +203 -0
  21. data/doc/rdoc/classes/Waves/Controllers/Base.html +151 -0
  22. data/doc/rdoc/classes/Waves/Controllers/Mixin.html +312 -0
  23. data/doc/rdoc/classes/Waves/Dispatchers.html +118 -0
  24. data/doc/rdoc/classes/Waves/Dispatchers/Base.html +198 -0
  25. data/doc/rdoc/classes/Waves/Dispatchers/Default.html +224 -0
  26. data/doc/rdoc/classes/Waves/Dispatchers/NotFoundError.html +122 -0
  27. data/doc/rdoc/classes/Waves/Dispatchers/Redirect.html +173 -0
  28. data/doc/rdoc/classes/Waves/Foundations.html +131 -0
  29. data/doc/rdoc/classes/Waves/Foundations/Default.html +179 -0
  30. data/doc/rdoc/classes/Waves/Foundations/Simple.html +167 -0
  31. data/doc/rdoc/classes/Waves/Helpers.html +176 -0
  32. data/doc/rdoc/classes/Waves/Helpers/AssetHelper.html +212 -0
  33. data/doc/rdoc/classes/Waves/Helpers/Common.html +213 -0
  34. data/doc/rdoc/classes/Waves/Helpers/Default.html +135 -0
  35. data/doc/rdoc/classes/Waves/Helpers/Form.html +201 -0
  36. data/doc/rdoc/classes/Waves/Helpers/Formatting.html +232 -0
  37. data/doc/rdoc/classes/Waves/Helpers/Model.html +194 -0
  38. data/doc/rdoc/classes/Waves/Helpers/NumberHelper.html +165 -0
  39. data/doc/rdoc/classes/Waves/Helpers/TagHelper.html +226 -0
  40. data/doc/rdoc/classes/Waves/Helpers/UrlHelper.html +242 -0
  41. data/doc/rdoc/classes/Waves/Helpers/View.html +163 -0
  42. data/doc/rdoc/classes/Waves/Inflect/InflectorMethods.html +475 -0
  43. data/doc/rdoc/classes/Waves/Layers.html +175 -0
  44. data/doc/rdoc/classes/Waves/Layers/DefaultErrors.html +161 -0
  45. data/doc/rdoc/classes/Waves/Layers/Inflect.html +119 -0
  46. data/doc/rdoc/classes/Waves/Layers/Inflect/English.html +168 -0
  47. data/doc/rdoc/classes/Waves/Layers/Inflect/English/Rules.html +112 -0
  48. data/doc/rdoc/classes/Waves/Layers/Inflect/English/StringMethods.html +194 -0
  49. data/doc/rdoc/classes/Waves/Layers/MVC.html +204 -0
  50. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord.html +239 -0
  51. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/ControllerMethods.html +246 -0
  52. data/doc/rdoc/classes/Waves/Layers/ORM/ActiveRecord/Symbol.html +132 -0
  53. data/doc/rdoc/classes/Waves/Layers/ORM/DataMapper.html +166 -0
  54. data/doc/rdoc/classes/Waves/Layers/ORM/Filebase.html +157 -0
  55. data/doc/rdoc/classes/Waves/Layers/ORM/Sequel.html +232 -0
  56. data/doc/rdoc/classes/Waves/Layers/ORM/Sequel/ControllerMethods.html +246 -0
  57. data/doc/rdoc/classes/Waves/Layers/Simple.html +169 -0
  58. data/doc/rdoc/classes/Waves/Layers/SimpleErrors.html +159 -0
  59. data/doc/rdoc/classes/Waves/Logger.html +288 -0
  60. data/doc/rdoc/classes/Waves/Mapping.html +760 -0
  61. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls.html +129 -0
  62. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/GetRules.html +174 -0
  63. data/doc/rdoc/classes/Waves/Mapping/PrettyUrls/RestRules.html +180 -0
  64. data/doc/rdoc/classes/Waves/MimeTypes.html +200 -0
  65. data/doc/rdoc/classes/Waves/Renderers/Erubis.html +162 -0
  66. data/doc/rdoc/classes/Waves/Renderers/Haml.html +160 -0
  67. data/doc/rdoc/classes/Waves/Renderers/Markaby.html +167 -0
  68. data/doc/rdoc/classes/Waves/Renderers/Mixin.html +191 -0
  69. data/doc/rdoc/classes/Waves/Renderers/Scope.html +181 -0
  70. data/doc/rdoc/classes/Waves/Request.html +441 -0
  71. data/doc/rdoc/classes/Waves/Request/ParseError.html +111 -0
  72. data/doc/rdoc/classes/Waves/Response.html +283 -0
  73. data/doc/rdoc/classes/Waves/ResponseMixin.html +460 -0
  74. data/doc/rdoc/classes/Waves/ResponseProxy.html +269 -0
  75. data/doc/rdoc/classes/Waves/Server.html +488 -0
  76. data/doc/rdoc/classes/Waves/Session.html +330 -0
  77. data/doc/rdoc/classes/Waves/Utilities/Hash.html +185 -0
  78. data/doc/rdoc/classes/Waves/Utilities/Integer.html +424 -0
  79. data/doc/rdoc/classes/Waves/Utilities/Module.html +174 -0
  80. data/doc/rdoc/classes/Waves/Utilities/Object.html +155 -0
  81. data/doc/rdoc/classes/Waves/Utilities/Proc.html +145 -0
  82. data/doc/rdoc/classes/Waves/Utilities/String.html +290 -0
  83. data/doc/rdoc/classes/Waves/Views.html +278 -0
  84. data/doc/rdoc/classes/Waves/Views/Base.html +118 -0
  85. data/doc/rdoc/classes/Waves/Views/Mixin.html +279 -0
  86. data/doc/rdoc/classes/Waves/Views/NoTemplateError.html +111 -0
  87. data/doc/rdoc/created.rid +1 -0
  88. data/doc/rdoc/files/README_rdoc.html +415 -0
  89. data/doc/rdoc/files/bin/waves.html +135 -0
  90. data/doc/rdoc/files/doc/HISTORY.html +265 -0
  91. data/doc/rdoc/files/lib/commands/waves-console_rb.html +110 -0
  92. data/doc/rdoc/files/lib/commands/waves-server_rb.html +108 -0
  93. data/doc/rdoc/files/lib/controllers/base_rb.html +101 -0
  94. data/doc/rdoc/files/lib/controllers/mixin_rb.html +101 -0
  95. data/doc/rdoc/files/lib/dispatchers/base_rb.html +101 -0
  96. data/doc/rdoc/files/lib/dispatchers/default_rb.html +101 -0
  97. data/doc/rdoc/files/lib/foundations/default_rb.html +101 -0
  98. data/doc/rdoc/files/lib/foundations/simple_rb.html +101 -0
  99. data/doc/rdoc/files/lib/helpers/asset_helper_rb.html +101 -0
  100. data/doc/rdoc/files/lib/helpers/common_rb.html +101 -0
  101. data/doc/rdoc/files/lib/helpers/default_rb.html +101 -0
  102. data/doc/rdoc/files/lib/helpers/form_rb.html +101 -0
  103. data/doc/rdoc/files/lib/helpers/formatting_rb.html +108 -0
  104. data/doc/rdoc/files/lib/helpers/model_rb.html +101 -0
  105. data/doc/rdoc/files/lib/helpers/number_helper_rb.html +101 -0
  106. data/doc/rdoc/files/lib/helpers/tag_helper_rb.html +101 -0
  107. data/doc/rdoc/files/lib/helpers/url_helper_rb.html +101 -0
  108. data/doc/rdoc/files/lib/helpers/view_rb.html +101 -0
  109. data/doc/rdoc/files/lib/layers/default_errors_rb.html +101 -0
  110. data/doc/rdoc/files/lib/layers/inflect/english/rules_rb.html +101 -0
  111. data/doc/rdoc/files/lib/layers/inflect/english/string_rb.html +101 -0
  112. data/doc/rdoc/files/lib/layers/inflect/english_rb.html +109 -0
  113. data/doc/rdoc/files/lib/layers/mvc_rb.html +101 -0
  114. data/doc/rdoc/files/lib/layers/orm/active_record/tasks/generate_rb.html +101 -0
  115. data/doc/rdoc/files/lib/layers/orm/active_record/tasks/schema_rb.html +101 -0
  116. data/doc/rdoc/files/lib/layers/orm/active_record_rb.html +108 -0
  117. data/doc/rdoc/files/lib/layers/orm/data_mapper_rb.html +108 -0
  118. data/doc/rdoc/files/lib/layers/orm/filebase_rb.html +101 -0
  119. data/doc/rdoc/files/lib/layers/orm/migration_rb.html +101 -0
  120. data/doc/rdoc/files/lib/layers/orm/sequel/tasks/generate_rb.html +101 -0
  121. data/doc/rdoc/files/lib/layers/orm/sequel/tasks/schema_rb.html +101 -0
  122. data/doc/rdoc/files/lib/layers/orm/sequel_rb.html +108 -0
  123. data/doc/rdoc/files/lib/layers/simple_errors_rb.html +101 -0
  124. data/doc/rdoc/files/lib/layers/simple_rb.html +101 -0
  125. data/doc/rdoc/files/lib/mapping/mapping_rb.html +101 -0
  126. data/doc/rdoc/files/lib/mapping/pretty_urls_rb.html +101 -0
  127. data/doc/rdoc/files/lib/renderers/erubis_rb.html +108 -0
  128. data/doc/rdoc/files/lib/renderers/haml_rb.html +108 -0
  129. data/doc/rdoc/files/lib/renderers/markaby_rb.html +108 -0
  130. data/doc/rdoc/files/lib/renderers/mixin_rb.html +101 -0
  131. data/doc/rdoc/files/lib/runtime/application_rb.html +107 -0
  132. data/doc/rdoc/files/lib/runtime/blackboard_rb.html +101 -0
  133. data/doc/rdoc/files/lib/runtime/configuration_rb.html +101 -0
  134. data/doc/rdoc/files/lib/runtime/console_rb.html +101 -0
  135. data/doc/rdoc/files/lib/runtime/debugger_rb.html +101 -0
  136. data/doc/rdoc/files/lib/runtime/logger_rb.html +108 -0
  137. data/doc/rdoc/files/lib/runtime/mime_types_rb.html +101 -0
  138. data/doc/rdoc/files/lib/runtime/request_rb.html +101 -0
  139. data/doc/rdoc/files/lib/runtime/response_mixin_rb.html +101 -0
  140. data/doc/rdoc/files/lib/runtime/response_proxy_rb.html +101 -0
  141. data/doc/rdoc/files/lib/runtime/response_rb.html +101 -0
  142. data/doc/rdoc/files/lib/runtime/server_rb.html +108 -0
  143. data/doc/rdoc/files/lib/runtime/session_rb.html +101 -0
  144. data/doc/rdoc/files/lib/tasks/cluster_rb.html +101 -0
  145. data/doc/rdoc/files/lib/tasks/gem_rb.html +108 -0
  146. data/doc/rdoc/files/lib/tasks/generate_rb.html +101 -0
  147. data/doc/rdoc/files/lib/utilities/hash_rb.html +101 -0
  148. data/doc/rdoc/files/lib/utilities/inflect_rb.html +111 -0
  149. data/doc/rdoc/files/lib/utilities/integer_rb.html +101 -0
  150. data/doc/rdoc/files/lib/utilities/module_rb.html +101 -0
  151. data/doc/rdoc/files/lib/utilities/object_rb.html +101 -0
  152. data/doc/rdoc/files/lib/utilities/proc_rb.html +101 -0
  153. data/doc/rdoc/files/lib/utilities/string_rb.html +101 -0
  154. data/doc/rdoc/files/lib/utilities/symbol_rb.html +101 -0
  155. data/doc/rdoc/files/lib/utilities/tempfile_rb.html +115 -0
  156. data/doc/rdoc/files/lib/views/base_rb.html +101 -0
  157. data/doc/rdoc/files/lib/views/mixin_rb.html +101 -0
  158. data/doc/rdoc/files/lib/waves_rb.html +195 -0
  159. data/doc/rdoc/fr_class_index.html +104 -0
  160. data/doc/rdoc/fr_file_index.html +97 -0
  161. data/doc/rdoc/fr_method_index.html +233 -0
  162. data/doc/rdoc/index.html +24 -0
  163. data/doc/rdoc/rdoc-style.css +208 -0
  164. data/lib/foundations/default.rb +1 -0
  165. data/lib/layers/default_errors.rb +10 -13
  166. data/lib/layers/inflect/english.rb +24 -0
  167. data/lib/layers/inflect/english/rules.rb +88 -0
  168. data/lib/layers/inflect/english/string.rb +24 -0
  169. data/lib/layers/mvc.rb +31 -35
  170. data/lib/layers/orm/active_record.rb +83 -32
  171. data/lib/layers/orm/active_record/tasks/generate.rb +28 -0
  172. data/lib/layers/orm/active_record/tasks/schema.rb +7 -15
  173. data/lib/layers/orm/data_mapper.rb +12 -16
  174. data/lib/layers/orm/migration.rb +20 -11
  175. data/lib/layers/orm/sequel.rb +53 -49
  176. data/lib/layers/orm/sequel/tasks/generate.rb +28 -0
  177. data/lib/layers/orm/sequel/tasks/schema.rb +6 -14
  178. data/lib/layers/simple.rb +6 -13
  179. data/lib/layers/simple_errors.rb +5 -8
  180. data/lib/renderers/haml.rb +45 -0
  181. data/lib/runtime/application.rb +0 -2
  182. data/lib/tasks/cluster.rb +1 -1
  183. data/lib/utilities/inflect.rb +86 -168
  184. data/lib/utilities/integer.rb +23 -16
  185. data/lib/utilities/module.rb +19 -15
  186. data/lib/utilities/object.rb +22 -14
  187. data/lib/utilities/proc.rb +13 -7
  188. data/lib/utilities/string.rb +0 -12
  189. data/lib/utilities/symbol.rb +4 -1
  190. data/lib/utilities/tempfile.rb +9 -0
  191. data/lib/waves.rb +3 -1
  192. data/samples/blog/Rakefile +14 -0
  193. data/samples/blog/bin/waves-console +3 -0
  194. data/samples/blog/bin/waves-server +3 -0
  195. data/samples/blog/blog.db +0 -0
  196. data/samples/blog/configurations/development.rb +31 -0
  197. data/samples/blog/configurations/mapping.rb +23 -0
  198. data/samples/blog/configurations/production.rb +30 -0
  199. data/samples/blog/doc/EMTPY +0 -0
  200. data/samples/blog/lib/application.rb +5 -0
  201. data/samples/blog/models/comment.rb +14 -0
  202. data/samples/blog/models/entry.rb +14 -0
  203. data/samples/blog/public/css/site.css +2 -0
  204. data/samples/blog/public/javascript/site.js +13 -0
  205. data/samples/blog/schema/migrations/001_initial_schema.rb +17 -0
  206. data/samples/blog/schema/migrations/002_add_comments.rb +18 -0
  207. data/samples/blog/schema/migrations/templates/empty.rb.erb +9 -0
  208. data/samples/blog/startup.rb +6 -0
  209. data/samples/blog/templates/comment/add.mab +10 -0
  210. data/samples/blog/templates/comment/list.mab +6 -0
  211. data/samples/blog/templates/entry/editor.mab +13 -0
  212. data/samples/blog/templates/entry/list.mab +11 -0
  213. data/samples/blog/templates/entry/show.mab +9 -0
  214. data/samples/blog/templates/entry/summary.mab +5 -0
  215. data/samples/blog/templates/errors/not_found_404.mab +2 -0
  216. data/samples/blog/templates/errors/server_error_500.mab +2 -0
  217. data/samples/blog/templates/layouts/default.mab +17 -0
  218. data/samples/jub/Rakefile +72 -0
  219. data/samples/jub/bin/waves-console +4 -0
  220. data/samples/jub/bin/waves-server +4 -0
  221. data/samples/jub/configurations/development.rb +31 -0
  222. data/samples/jub/configurations/mapping.rb +18 -0
  223. data/samples/jub/configurations/production.rb +31 -0
  224. data/samples/jub/lib/application.rb +5 -0
  225. data/samples/jub/startup.rb +6 -0
  226. data/samples/jub/templates/errors/not_found_404.mab +2 -0
  227. data/samples/jub/templates/errors/server_error_500.mab +2 -0
  228. data/samples/jub/templates/layouts/default.mab +14 -0
  229. data/verify/app_generation/helpers.rb +24 -0
  230. data/verify/app_generation/startup.rb +39 -0
  231. data/verify/blackboard/blackboard_verify.rb +92 -0
  232. data/verify/blackboard/helpers.rb +5 -0
  233. data/verify/configurations/attributes.rb +37 -0
  234. data/verify/configurations/helpers.rb +1 -0
  235. data/verify/configurations/rack_integration.rb +29 -0
  236. data/verify/controllers/base.rb +37 -0
  237. data/verify/controllers/helpers.rb +13 -0
  238. data/verify/controllers/interface.rb +51 -0
  239. data/verify/core/helpers.rb +3 -0
  240. data/verify/core/utilities.rb +177 -0
  241. data/verify/foundations/default.rb +86 -0
  242. data/verify/foundations/default_application/Rakefile +14 -0
  243. data/verify/foundations/default_application/bin/waves-console +3 -0
  244. data/verify/foundations/default_application/bin/waves-server +3 -0
  245. data/verify/foundations/default_application/configurations/development.rb +26 -0
  246. data/verify/foundations/default_application/configurations/mapping.rb +14 -0
  247. data/verify/foundations/default_application/configurations/production.rb +30 -0
  248. data/verify/foundations/default_application/controllers/default.rb +15 -0
  249. data/verify/foundations/default_application/controllers/loaded.rb +15 -0
  250. data/verify/foundations/default_application/defaultapplication.db +0 -0
  251. data/verify/foundations/default_application/helpers/loaded.rb +10 -0
  252. data/verify/foundations/default_application/lib/application.rb +5 -0
  253. data/verify/foundations/default_application/models/default.rb +13 -0
  254. data/verify/foundations/default_application/models/loaded.rb +13 -0
  255. data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +9 -0
  256. data/verify/foundations/default_application/startup.rb +7 -0
  257. data/verify/foundations/default_application/templates/errors/not_found_404.mab +2 -0
  258. data/verify/foundations/default_application/templates/errors/server_error_500.mab +2 -0
  259. data/verify/foundations/default_application/templates/layouts/default.mab +14 -0
  260. data/verify/foundations/default_application/views/default.rb +7 -0
  261. data/verify/foundations/default_application/views/loaded.rb +15 -0
  262. data/verify/foundations/helpers.rb +1 -0
  263. data/verify/foundations/simple.rb +25 -0
  264. data/verify/helpers.rb +76 -0
  265. data/verify/layers/data_mapper/association_verify.rb +87 -0
  266. data/verify/layers/default_errors.rb +29 -0
  267. data/verify/layers/helpers.rb +1 -0
  268. data/verify/layers/migration.rb +33 -0
  269. data/verify/layers/sequel/model.rb +41 -0
  270. data/verify/layers/sequeltest.db +0 -0
  271. data/verify/mapping/always.rb +19 -0
  272. data/verify/mapping/filters.rb +65 -0
  273. data/verify/mapping/handle.rb +24 -0
  274. data/verify/mapping/helpers.rb +7 -0
  275. data/verify/mapping/matches.rb +27 -0
  276. data/verify/mapping/named.rb +29 -0
  277. data/verify/mapping/options.rb +17 -0
  278. data/verify/mapping/path.rb +40 -0
  279. data/verify/mapping/response_proxy.rb +50 -0
  280. data/verify/mapping/threaded.rb +25 -0
  281. data/verify/requests/helpers.rb +16 -0
  282. data/verify/requests/request.rb +73 -0
  283. data/verify/requests/response.rb +59 -0
  284. data/verify/requests/session.rb +54 -0
  285. data/verify/views/helpers.rb +1 -0
  286. data/verify/views/rendering.rb +34 -0
  287. data/verify/views/templates/foo.erb +0 -0
  288. data/verify/views/templates/moo.erb +0 -0
  289. data/verify/views/templates/moo.mab +0 -0
  290. metadata +597 -224
  291. data/lib/utilities/kernel.rb +0 -34
data/app/Rakefile CHANGED
@@ -3,12 +3,70 @@
3
3
  # Warning: This file is clobbered when you update your
4
4
  # application with the waves script. Accordingly, you may
5
5
  # wish to keep your tasks in .rb or .rake files in lib/tasks
6
- require 'startup'
7
- Waves::Console.load(:mode => ENV['mode'])
8
6
 
9
- # load tasks from waves framework
10
- %w( cluster generate gem ).each { |task| require "tasks/#{task}.rb" }
7
+ begin
8
+ require 'startup'
9
+ Waves::Console.load(:mode => ENV['mode'])
11
10
 
12
- # load tasks from this app's lib/tasks
13
- Dir["lib/tasks/*.{rb,rake}"].each { |task| require task }
11
+ # load tasks from waves framework
12
+ %w( cluster generate gem ).each { |task| require "tasks/#{task}.rb" }
14
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
@@ -14,12 +14,13 @@ module <%= @name %>
14
14
 
15
15
  port 3000
16
16
 
17
- handler ::Rack::Handler::Mongrel, :Host => host, :Port => port
17
+ handler ::Rack::Handler::Mongrel, :Host => host, :Port => port
18
18
  # handler ::Rack::Handler::WEBrick, :BindAddress => host, :Port => port
19
19
  # handler ::Rack::Handler::Thin, :Host => host, :Port => port
20
20
 
21
21
  application do
22
22
  use ::Rack::ShowExceptions
23
+ use ::Rack::Static, :urls => [ '/css/', '/javascript/', '/images/' ], :root => 'public'
23
24
  run ::Waves::Dispatchers::Default.new
24
25
  end
25
26
 
@@ -3,6 +3,7 @@ module <%= @name %>
3
3
  module Configurations
4
4
 
5
5
  module Mapping
6
+ extend Waves::Mapping
6
7
  # your custom rules go here
7
8
  include Waves::Mapping::PrettyUrls::RestRules
8
9
  include Waves::Mapping::PrettyUrls::GetRules
@@ -22,6 +22,7 @@ module <%= @name %>
22
22
  # handler ::Rack::Handler::Thin, :Host => host, :Port => port
23
23
 
24
24
  application do
25
+ use ::Rack::Static, :urls => [ '/css/', '/javascript/', '/images/' ], :root => 'public'
25
26
  run ::Waves::Dispatchers::Default.new
26
27
  end
27
28
 
@@ -1,5 +1,5 @@
1
- require 'layers/orm/sequel'
1
+ <%= @orm_require %>
2
2
  module <%= @name %>
3
3
  include Waves::Foundations::Default
4
- include Waves::Layers::ORM::Sequel
4
+ <%= @orm_include %>
5
5
  end
data/bin/waves CHANGED
@@ -1,8 +1,26 @@
1
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
+
2
18
  require 'rubygems'
3
19
  require 'choice'
4
20
  require 'rakegen'
5
21
 
22
+
23
+
6
24
  # if we're in the waves source, prepend it to the load path
7
25
  waves_lib = File.expand_path( "#{File.dirname(__FILE__)}/../../waves/lib" )
8
26
  $:.unshift waves_lib if File.exist?(waves_lib)
@@ -21,6 +39,23 @@ Choice.options do
21
39
  desc 'Show this message'
22
40
  end
23
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']
24
59
  end
25
60
 
26
61
  app_path = ARGV[0]
@@ -37,7 +72,7 @@ template = "#{WAVES}/app"
37
72
  generator = Rakegen.new("waves:app") do |gen|
38
73
  gen.source = template
39
74
  gen.target = app_path
40
- gen.template_assigns = {:name => app_name.camel_case}
75
+ gen.template_assigns = {:name => app_name.camel_case, :orm_require => orm_require, :orm_include => orm_include }
41
76
  gen.executables = %w{ bin/waves-console bin/waves-server}
42
77
  end
43
78
 
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,218 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Erubis::Context</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Erubis::Context</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/renderers/erubis_rb.html">
59
+ lib/renderers/erubis.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ This is added to the Erubis Content class to allow the same helper methods
84
+ to be used with both Markaby and Erubis.
85
+ </p>
86
+
87
+ </div>
88
+
89
+
90
+ </div>
91
+
92
+ <div id="method-list">
93
+ <h3 class="section-bar">Methods</h3>
94
+
95
+ <div class="name-list">
96
+ <a href="#M000004">&lt;&lt;</a>&nbsp;&nbsp;
97
+ <a href="#M000005">capture</a>&nbsp;&nbsp;
98
+ <a href="#M000006">render</a>&nbsp;&nbsp;
99
+ </div>
100
+ </div>
101
+
102
+ </div>
103
+
104
+
105
+ <!-- if includes -->
106
+ <div id="includes">
107
+ <h3 class="section-bar">Included Modules</h3>
108
+
109
+ <div id="includes-list">
110
+ <span class="include-name"><a href="../Waves/Helpers/UrlHelper.html">Waves::Helpers::UrlHelper</a></span>
111
+ <span class="include-name"><a href="../Waves/Helpers/TagHelper.html">Waves::Helpers::TagHelper</a></span>
112
+ <span class="include-name"><a href="../Waves/Helpers/AssetHelper.html">Waves::Helpers::AssetHelper</a></span>
113
+ <span class="include-name"><a href="../Waves/Helpers/NumberHelper.html">Waves::Helpers::NumberHelper</a></span>
114
+ </div>
115
+ </div>
116
+
117
+ <div id="section">
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+ <!-- if method_list -->
127
+ <div id="methods">
128
+ <h3 class="section-bar">Public Instance methods</h3>
129
+
130
+ <div id="method-M000004" class="method-detail">
131
+ <a name="M000004"></a>
132
+
133
+ <div class="method-heading">
134
+ <a href="#M000004" class="method-signature">
135
+ <span class="method-name">&lt;&lt;</span><span class="method-args">(s)</span>
136
+ </a>
137
+ </div>
138
+
139
+ <div class="method-description">
140
+ <p><a class="source-toggle" href="#"
141
+ onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000004-source">
143
+ <pre>
144
+ <span class="ruby-comment cmt"># File lib/renderers/erubis.rb, line 13</span>
145
+ 13: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">&lt;&lt;</span>(<span class="ruby-identifier">s</span>)
146
+ 14: <span class="ruby-identifier">eval</span>(<span class="ruby-value str">&quot;_buf&quot;</span>, <span class="ruby-ivar">@binding</span>).<span class="ruby-identifier">concat</span> <span class="ruby-identifier">s</span> <span class="ruby-comment cmt"># add to rendered output</span>
147
+ 15: <span class="ruby-keyword kw">end</span>
148
+ </pre>
149
+ </div>
150
+ </div>
151
+ </div>
152
+
153
+ <div id="method-M000005" class="method-detail">
154
+ <a name="M000005"></a>
155
+
156
+ <div class="method-heading">
157
+ <a href="#M000005" class="method-signature">
158
+ <span class="method-name">capture</span><span class="method-args">() {|| ...}</span>
159
+ </a>
160
+ </div>
161
+
162
+ <div class="method-description">
163
+ <p><a class="source-toggle" href="#"
164
+ onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
165
+ <div class="method-source-code" id="M000005-source">
166
+ <pre>
167
+ <span class="ruby-comment cmt"># File lib/renderers/erubis.rb, line 17</span>
168
+ 17: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">capture</span>
169
+ 18: <span class="ruby-identifier">eval</span>(<span class="ruby-value str">&quot;_context.push(_buf); _buf = ''&quot;</span>, <span class="ruby-ivar">@binding</span>) <span class="ruby-comment cmt">#ignore output from that eval, will be added via &quot;&lt;&lt;&quot;</span>
170
+ 19: <span class="ruby-identifier">result</span> = <span class="ruby-constant">Erubis</span><span class="ruby-operator">::</span><span class="ruby-constant">Eruby</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">yield</span>).<span class="ruby-identifier">result</span> <span class="ruby-ivar">@binding</span>
171
+ 20: <span class="ruby-identifier">eval</span>(<span class="ruby-value str">&quot;_buf = _context.pop&quot;</span>, <span class="ruby-ivar">@binding</span>)
172
+ 21: <span class="ruby-identifier">result</span>
173
+ 22: <span class="ruby-keyword kw">end</span>
174
+ </pre>
175
+ </div>
176
+ </div>
177
+ </div>
178
+
179
+ <div id="method-M000006" class="method-detail">
180
+ <a name="M000006"></a>
181
+
182
+ <div class="method-heading">
183
+ <a href="#M000006" class="method-signature">
184
+ <span class="method-name">render</span><span class="method-args">(eruby)</span>
185
+ </a>
186
+ </div>
187
+
188
+ <div class="method-description">
189
+ <p><a class="source-toggle" href="#"
190
+ onclick="toggleCode('M000006-source');return false;">[Source]</a></p>
191
+ <div class="method-source-code" id="M000006-source">
192
+ <pre>
193
+ <span class="ruby-comment cmt"># File lib/renderers/erubis.rb, line 24</span>
194
+ 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render</span>(<span class="ruby-identifier">eruby</span>)
195
+ 25: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@binding</span>
196
+ 26: <span class="ruby-ivar">@binding</span> = <span class="ruby-identifier">binding</span>
197
+ 27: <span class="ruby-identifier">eval</span>(<span class="ruby-value str">&quot;_buf = ''; _context = []&quot;</span>, <span class="ruby-ivar">@binding</span>)
198
+ 28: <span class="ruby-keyword kw">end</span>
199
+ 29: <span class="ruby-identifier">eruby</span>.<span class="ruby-identifier">result</span> <span class="ruby-ivar">@binding</span>
200
+ 30: <span class="ruby-keyword kw">end</span>
201
+ </pre>
202
+ </div>
203
+ </div>
204
+ </div>
205
+
206
+
207
+ </div>
208
+
209
+
210
+ </div>
211
+
212
+
213
+ <div id="validator-badges">
214
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
215
+ </div>
216
+
217
+ </body>
218
+ </html>