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
@@ -1,17 +1,24 @@
1
- # Added methods to Integer for commonly used "numeric phrases" like 6.days or 30.megabytes.
2
- class Integer
3
- def seconds ; self ; end
4
- def minutes ; self * 60 ; end
5
- def hours ; self * 60.minutes ; end
6
- def days ; self * 24.hours ; end
7
- def weeks ; self * 7.days ; end
8
- def bytes ; self ; end
9
- def kilobytes ; self * 1024 ; end
10
- def megabytes ; self * 1024.kilobytes ; end
11
- def gigabytes ; self * 1024.megabytes ; end
12
- def terabytes ; self * 1024.gigabytes ; end
13
- def petabytes ; self * 1024.terabytes ; end
14
- def exabytes ; self * 1024.petabytes ; end
15
- def zettabytes ; self * 1024.exabytes ; end
16
- def yottabytes ; self * 1024.zettabytes ; end
1
+ module Waves
2
+ module Utilities
3
+ module Integer
4
+ def seconds ; self ; end
5
+ def minutes ; self * 60 ; end
6
+ def hours ; self * 60.minutes ; end
7
+ def days ; self * 24.hours ; end
8
+ def weeks ; self * 7.days ; end
9
+ def bytes ; self ; end
10
+ def kilobytes ; self * 1024 ; end
11
+ def megabytes ; self * 1024.kilobytes ; end
12
+ def gigabytes ; self * 1024.megabytes ; end
13
+ def terabytes ; self * 1024.gigabytes ; end
14
+ def petabytes ; self * 1024.terabytes ; end
15
+ def exabytes ; self * 1024.petabytes ; end
16
+ def zettabytes ; self * 1024.exabytes ; end
17
+ def yottabytes ; self * 1024.zettabytes ; end
18
+ end
19
+ end
17
20
  end
21
+
22
+ class Integer # :nodoc:
23
+ include Waves::Utilities::Integer
24
+ end
@@ -1,17 +1,21 @@
1
- class Module
2
-
3
- # This comes in handy when you are trying to do meta-programming with modules / classes
4
- # that may be nested within other modules / classes. I think I've seen it defined in
5
- # facets, but I'm not relying on facets just for this one method.
6
- def basename
7
- self.name.split('::').last || ''
8
- end
9
-
10
- # Just a convenience method for accessing a const within a Module
11
- def []( cname )
12
- const_get( cname.to_s.camel_case )
13
- end
14
-
15
-
1
+ module Waves
2
+ module Utilities
3
+ module Module
4
+ # This comes in handy when you are trying to do meta-programming with modules / classes
5
+ # that may be nested within other modules / classes. I think I've seen it defined in
6
+ # facets, but I'm not relying on facets just for this one method.
7
+ def basename
8
+ self.name.split('::').last || ''
9
+ end
16
10
 
11
+ # Just a convenience method for accessing a const within a Module
12
+ def []( cname )
13
+ const_get( cname.to_s.camel_case )
14
+ end
15
+ end
16
+ end
17
17
  end
18
+
19
+ class Module # :nodoc:
20
+ include Waves::Utilities::Module
21
+ end
@@ -1,17 +1,25 @@
1
- class Object
2
- # This is an extremely powerful little function that will be built-in to Ruby 1.9.
3
- # This version is from Mauricio Fernandez via ruby-talk. Works like instance_eval
4
- # except that you can pass parameters to the block. This means you can define a block
5
- # intended for use with instance_eval, pass it to another method, which can then
6
- # invoke with parameters. This is used quite a bit by the Waves::Mapping code.
7
- def instance_exec(*args, &block)
8
- mname = "__instance_exec_#{Thread.current.object_id.abs}"
9
- class << self; self end.class_eval{ define_method(mname, &block) }
10
- begin
11
- ret = send(mname, *args)
12
- ensure
13
- class << self; self end.class_eval{ undef_method(mname) } rescue nil
1
+ module Waves
2
+ module Utilities
3
+ module Object
4
+ # This is an extremely powerful little function that will be built-in to Ruby 1.9.
5
+ # This version is from Mauricio Fernandez via ruby-talk. Works like instance_eval
6
+ # except that you can pass parameters to the block. This means you can define a block
7
+ # intended for use with instance_eval, pass it to another method, which can then
8
+ # invoke with parameters. This is used quite a bit by the Waves::Mapping code.
9
+ def instance_exec(*args, &block)
10
+ mname = "__instance_exec_#{Thread.current.object_id.abs}"
11
+ class << self; self end.class_eval{ define_method(mname, &block) }
12
+ begin
13
+ ret = send(mname, *args)
14
+ ensure
15
+ class << self; self end.class_eval{ undef_method(mname) } rescue nil
16
+ end
17
+ ret
18
+ end
14
19
  end
15
- ret
16
20
  end
17
21
  end
22
+
23
+ class Object # :nodoc:
24
+ include Waves::Utilities::Object
25
+ end
@@ -1,10 +1,16 @@
1
- class Proc
2
-
3
- # calls the given lambda with the receiver as its argument
4
- def |(lambda)
5
- lambda do
6
- lambda.call( self.call )
1
+ module Waves
2
+ module Utilities
3
+ module Proc
4
+ # calls the given lambda with the receiver as its argument
5
+ def |(lambda)
6
+ lambda do
7
+ lambda.call( self.call )
8
+ end
9
+ end
7
10
  end
8
11
  end
9
-
10
12
  end
13
+
14
+ class Proc # :nodoc:
15
+ include Waves::Utilities::Proc
16
+ end
@@ -17,18 +17,6 @@ module Waves
17
17
  File.join(self,string.to_s)
18
18
  end
19
19
 
20
- def singular
21
- Inflect::English.singular(self)
22
- end
23
-
24
- alias_method(:singularize, :singular)
25
-
26
- def plural
27
- Inflect::English.plural(self)
28
- end
29
-
30
- alias_method(:pluralize, :plural)
31
-
32
20
  # produces stringsLikeThis
33
21
  def lower_camel_case
34
22
  gsub(/(_)(\w)/) { $2.upcase }
@@ -1,6 +1,9 @@
1
1
  class Symbol
2
2
  # Does File.join on self and string, converting self to string before invocation.
3
- # See String#/ for more.
3
+ # See String#/ for more.
4
+ #
5
+ # Note: This overrides any definitions done politely in modules, such as
6
+ # {Sequel::SQL::ComplexExpressionMethods}[http://sequel.rubyforge.org/classes/Sequel/SQL/ComplexExpressionMethods.html]
4
7
  def / ( string )
5
8
  self.to_s / string
6
9
  end
@@ -0,0 +1,9 @@
1
+ # Patch Ruby's Tempfile class to work around a problem uploading files with Rack.
2
+ #
3
+ # The fix came from here: http://sinatra.lighthouseapp.com/projects/9779/tickets/1
4
+ #
5
+ # This is fixed in Rack already, but it hasn't made it into a gem.
6
+ class Tempfile
7
+ # Make == act like eql?
8
+ def ==(other) ; eql?(other) || super ; end
9
+ end
data/lib/waves.rb CHANGED
@@ -26,12 +26,12 @@ require 'base64'
26
26
  require 'utilities/module'
27
27
  require 'utilities/string'
28
28
  require 'utilities/symbol'
29
- require 'utilities/kernel'
30
29
  require 'utilities/object'
31
30
  require 'utilities/integer'
32
31
  require 'utilities/inflect'
33
32
  require 'utilities/proc'
34
33
  require 'utilities/hash'
34
+ require 'utilities/tempfile'
35
35
  # waves Runtime
36
36
  require 'dispatchers/base'
37
37
  require 'dispatchers/default'
@@ -71,6 +71,7 @@ require 'helpers/number_helper'
71
71
  require 'renderers/mixin'
72
72
  require 'renderers/erubis'
73
73
  require 'renderers/markaby'
74
+ require 'renderers/haml'
74
75
 
75
76
 
76
77
  # waves foundations / layers
@@ -79,4 +80,5 @@ require 'layers/simple_errors'
79
80
  require 'foundations/simple'
80
81
  require 'layers/mvc'
81
82
  require 'layers/default_errors'
83
+ require 'layers/inflect/english'
82
84
  require 'foundations/default'
@@ -0,0 +1,14 @@
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
+ require 'startup'
7
+ Waves::Console.load(:mode => ENV['mode'])
8
+
9
+ # load tasks from waves framework
10
+ %w( cluster generate gem ).each { |task| require "tasks/#{task}.rb" }
11
+
12
+ # load tasks from this app's lib/tasks
13
+ Dir["lib/tasks/*.{rb,rake}"].each { |task| require task }
14
+
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'startup'
3
+ require 'commands/waves-console'
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'startup'
3
+ require 'commands/waves-server'
Binary file
@@ -0,0 +1,31 @@
1
+ module Blog
2
+
3
+ module Configurations
4
+
5
+ class Development < Default
6
+
7
+ database :adapter => 'sqlite', :database => 'blog.db'
8
+
9
+ reloadable [ Blog ]
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' ], :root => 'public'
24
+ run ::Waves::Dispatchers::Default.new
25
+ end
26
+
27
+ end
28
+
29
+ end
30
+
31
+ end
@@ -0,0 +1,23 @@
1
+ module Blog
2
+
3
+ module Configurations
4
+
5
+ module Mapping
6
+ extend Waves::Mapping
7
+
8
+ path '/', :method => :get do
9
+ redirect("/entries")
10
+ end
11
+
12
+ path %r{^/comments/?$}, :method => :post do
13
+ resource( :comment ) do
14
+ controller { comment = create; redirect( "/entry/#{comment.entry.name}" ) }
15
+ end
16
+ end
17
+ include Waves::Mapping::PrettyUrls::RestRules
18
+ include Waves::Mapping::PrettyUrls::GetRules
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,30 @@
1
+ module Blog
2
+
3
+ module Configurations
4
+
5
+ class Production < Default
6
+
7
+ database :host => 'localhost', :adapter => 'mysql', :database => 'blog',
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
+ run ::Waves::Dispatchers::Default.new
26
+ end
27
+
28
+ end
29
+ end
30
+ end
File without changes
@@ -0,0 +1,5 @@
1
+ require 'layers/orm/sequel'
2
+ module Blog
3
+ include Waves::Foundations::Default
4
+ include Waves::Layers::ORM::Sequel
5
+ end
@@ -0,0 +1,14 @@
1
+ module Blog
2
+
3
+ module Models
4
+
5
+ class Comment < Default
6
+ many_to_one :entry, :class => Blog::Models::Entry
7
+ before_save do
8
+ set_with_params(:updated_on => Time.now) if columns.include? :updated_on
9
+ end
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,14 @@
1
+ module Blog
2
+
3
+ module Models
4
+
5
+ class Entry < Default
6
+ one_to_many :comments, :class => Blog::Models::Comment, :key => :entry_id, :order => :updated_on
7
+ before_save do
8
+ set_with_params(:updated_on => Time.now) if columns.include? :updated_on
9
+ end
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,2 @@
1
+ body { font-family: Verdana, Arial, sans-serif; background-color: white; }
2
+ h1, h2, h3, p, label, li { margin-bottom: 20px; }
@@ -0,0 +1,13 @@
1
+ $(document).ready( function() {
2
+ $('a.delete').click( function() {
3
+ if ( confirm("Are you sure?") ) {
4
+ var href = $(this).attr('href');
5
+ $.ajax({ type: 'delete', url: href,
6
+ success: function() { window.location = '/entries'; }
7
+ });
8
+ }
9
+ // this isn't really a link ...
10
+ // so tell the browser we've handled it
11
+ return false;
12
+ });
13
+ });
@@ -0,0 +1,17 @@
1
+ class InitialSchema < Sequel::Migration
2
+
3
+ def up
4
+ create_table :entries do
5
+ primary_key :id
6
+ text :name
7
+ text :title
8
+ text :summary
9
+ text :content
10
+ end
11
+ end
12
+
13
+ def down
14
+ drop_table :entries
15
+ end
16
+
17
+ end
@@ -0,0 +1,18 @@
1
+ class AddComments < Sequel::Migration
2
+
3
+ def up
4
+ create_table :comments do
5
+ primary_key :id
6
+ foreign_key :entry_id, :table => :entries
7
+ text :name
8
+ text :email
9
+ text :content
10
+ timestamp :updated_on
11
+ end
12
+ end
13
+
14
+ def down
15
+ drop_table :comments
16
+ end
17
+
18
+ end
@@ -0,0 +1,9 @@
1
+ class <%= class_name %> < Sequel::Migration
2
+
3
+ def up
4
+ end
5
+
6
+ def down
7
+ end
8
+
9
+ end