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
@@ -0,0 +1,86 @@
1
+ # require 'test_helper' because RubyMate needs help
2
+ require File.join(File.dirname(__FILE__) , "helpers")
3
+
4
+ Dir.chdir File.dirname(__FILE__) / "default_application" do
5
+ module DefaultApplication
6
+ include Waves::Foundations::Default
7
+ end
8
+ Waves::Console.load( :mode => :development )
9
+ DA = DefaultApplication
10
+
11
+
12
+ describe "An application module which includes the Default foundation" do
13
+
14
+ it "defines basic namespaces" do
15
+ DA::Configurations::Mapping
16
+ DA::Configurations::Default.host.should == nil
17
+ DA::Configurations::Development.host.should == '127.0.0.1'
18
+ DA::Models::Default
19
+ DA::Views::Default
20
+ DA::Controllers::Default
21
+ DA::Helpers::Default
22
+ DA::Helpers::Testing
23
+ end
24
+
25
+ # it "**leftover tests of Default to be reapportioned**" do
26
+ # Waves::Application.instance.mapping.send(:mapping).should.not.be.empty
27
+ # DA::Helpers::Default.instance_methods.should.include "layout"
28
+ #
29
+ # DA::Models::Default.should.respond_to :crayola
30
+ # DA::Controllers::Default.instance_methods.should.include "attributes"
31
+ # DA::Controllers::Default.instance_methods.should.include "destroy_all"
32
+ #
33
+ # DA::Views::Default.instance_methods.should.include "renderer"
34
+ # DA::Views::Default.instance_methods.should.include "from_default"
35
+ # end
36
+
37
+ it "auto_creates Models when their files do not exist" do
38
+ DA::Models::Created.superclass.should == DA::Models::Default
39
+ end
40
+
41
+ it "auto_loads Models when their files exist" do
42
+ DA::Models::Loaded.instance_methods.should.include "from_loaded"
43
+ end
44
+
45
+ it "auto_creates Controllers when their files do not exist" do
46
+ DA::Controllers::Created.superclass.should == DA::Controllers::Default
47
+ end
48
+
49
+ it "auto_loads Controllers when their files exist" do
50
+ DA::Controllers::Loaded.instance_methods.should.include "from_loaded"
51
+ end
52
+
53
+ it "auto_creates Views when their files do not exist" do
54
+ DA::Views::Created.superclass.should == DA::Views::Default
55
+ end
56
+
57
+ it "auto_loads Views when their files exist" do
58
+ DA::Views::Loaded.instance_methods.should.include "from_loaded"
59
+ end
60
+
61
+ it "auto_creates Helpers when their files do not exist" do
62
+ DA::Helpers::Created.included_modules.should.include Waves::Helpers::Default
63
+ end
64
+
65
+ it "auto_loads Helpers when their files exist" do
66
+ DA::Helpers::Loaded.instance_methods.should.include "doctype"
67
+ end
68
+
69
+
70
+ it "should have accessors defined" do
71
+ [ :config, :configurations, :controllers, :models, :helpers, :views ].each do |method|
72
+ DA.should.respond_to method
73
+ end
74
+ end
75
+
76
+ it "should define [] method for appropriate submodules" do
77
+ DA::Configurations.should.respond_to :[]
78
+ DA::Models.should.respond_to :[]
79
+ DA::Views.should.respond_to :[]
80
+ DA::Controllers.should.respond_to :[]
81
+ end
82
+
83
+ end
84
+
85
+
86
+ end
@@ -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( schema 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'
@@ -0,0 +1,26 @@
1
+ module DefaultApplication
2
+ module Configurations
3
+ class Development < Default
4
+
5
+ database :adapter => 'sqlite', :database => 'defaultapplication.db'
6
+
7
+ reloadable [ DefaultApplication ]
8
+
9
+ log :level => :debug
10
+
11
+ host '127.0.0.1'
12
+
13
+ port 3000
14
+
15
+ handler ::Rack::Handler::Mongrel, :Host => host, :Port => port
16
+ # handler ::Rack::Handler::WEBrick, :BindAddress => host, :Port => port
17
+ # handler ::Rack::Handler::Thin, :Host => host, :Port => port
18
+
19
+ application do
20
+ use ::Rack::ShowExceptions
21
+ run ::Waves::Dispatchers::Default.new
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ module DefaultApplication
2
+
3
+ module Configurations
4
+
5
+ module Mapping
6
+ extend Waves::Mapping
7
+ path( "/user-added") { response.body = "User added mapping"}
8
+ include Waves::Mapping::PrettyUrls::RestRules
9
+ include Waves::Mapping::PrettyUrls::GetRules
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -0,0 +1,30 @@
1
+ module DefaultApplication
2
+
3
+ module Configurations
4
+
5
+ class Production < Default
6
+
7
+ database :host => 'localhost', :adapter => 'mysql', :database => 'defaultapplication',
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
@@ -0,0 +1,15 @@
1
+ module DefaultApplication
2
+
3
+ module Controllers
4
+
5
+ class Default < Waves::Controllers::Base
6
+
7
+ def destroy_all
8
+ "I'm sorry Dave, but I can't let you do that."
9
+ end
10
+
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,15 @@
1
+ module DefaultApplication
2
+
3
+ module Controllers
4
+
5
+ class Loaded < Default
6
+
7
+ def from_loaded
8
+
9
+ end
10
+
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1,10 @@
1
+ module DefaultApplication
2
+ module Helpers
3
+ module Loaded
4
+ include Waves::Helpers::Default
5
+ def self.foundation_testing
6
+ true
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,5 @@
1
+ module DefaultApplication
2
+ include Waves::Foundations::Default
3
+ end
4
+
5
+ Waves << DefaultApplication
@@ -0,0 +1,13 @@
1
+ module DefaultApplication
2
+
3
+ module Models
4
+
5
+ class Default
6
+
7
+ def self.crayola; true; end
8
+
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,13 @@
1
+ module DefaultApplication
2
+
3
+ module Models
4
+
5
+ class Loaded < Default
6
+
7
+ def from_loaded; end
8
+
9
+ end
10
+
11
+ end
12
+
13
+ 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
@@ -0,0 +1,7 @@
1
+ unless defined? WAVES
2
+ WAVES = File.join(File.dirname(__FILE__), 'waves')
3
+ end
4
+
5
+ $:.unshift(File.join(WAVES, "lib")) if File.exist? WAVES
6
+
7
+ 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
+
@@ -0,0 +1,7 @@
1
+ module DefaultApplication
2
+ module Views
3
+ class Default < Waves::Views::Base
4
+ def from_default; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,15 @@
1
+ module DefaultApplication
2
+
3
+ module Views
4
+
5
+ class Loaded < Default
6
+
7
+ def from_loaded
8
+
9
+ end
10
+
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__) , "..", "helpers")
@@ -0,0 +1,25 @@
1
+ # require 'test_helper' because RubyMate needs help
2
+ require File.join(File.dirname(__FILE__) , "helpers")
3
+
4
+ module SimpleApplication ; include Waves::Foundations::Simple ; end
5
+
6
+ describe "An application module which includes the Simple foundation" do
7
+
8
+ it "should have basic submodules defined" do
9
+ lambda do
10
+ SimpleApplication::Configurations::Mapping
11
+ SimpleApplication::Configurations::Development
12
+ end.should.not.raise
13
+ end
14
+
15
+ it "should have accessors defined" do
16
+ [ :config, :configurations ].each do |method|
17
+ SimpleApplication.should.respond_to method
18
+ end
19
+ end
20
+
21
+ it "should define [] method for appropriate submodules" do
22
+ SimpleApplication::Configurations.should.respond_to :[]
23
+ end
24
+
25
+ end
data/verify/helpers.rb ADDED
@@ -0,0 +1,76 @@
1
+ require 'rubygems'
2
+ %w( bacon facon ).each { |f| require f }
3
+
4
+ # Prepend the framework lib to the loadpath
5
+ $:.unshift( File.join(File.dirname(__FILE__), "..", "lib") )
6
+ require 'waves'
7
+
8
+ Bacon.extend Bacon::TestUnitOutput
9
+ Bacon.summary_on_exit
10
+
11
+ module Kernel
12
+ private
13
+ def specification(name, &block) Bacon::Context.new(name, &block) end
14
+ end
15
+
16
+
17
+ Bacon::Context.module_eval do
18
+
19
+ # Mapping helpers
20
+ def mapping
21
+ ::Waves::Application.instance.mapping
22
+ end
23
+
24
+ %w{ path url always handle threaded generator}.each do |method|
25
+ module_eval "def #{method}(*args,&block); mapping.#{method}(*args,&block);end"
26
+ end
27
+
28
+ # Rack request helpers
29
+ ::Rack::MockRequest::DEFAULT_ENV.merge!(
30
+ 'REMOTE_ADDR' => '127.0.0.1',
31
+ 'REMOTE_HOST' => 'localhost',
32
+ 'SERVER_NAME' => 'localhost',
33
+ 'SERVER_PORT' => '3000',
34
+ 'SERVER_PORT_SECURE' => '0',
35
+ 'SERVER_PROTOCOL' => 'HTTP/1.1',
36
+ 'SERVER_SOFTWARE' => 'Waves 1.0',
37
+ 'HTTP_HOST' => 'localhost',
38
+ 'HTTP_VERSION' => 'HTTP/1.1',
39
+ 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14',
40
+ 'HTTP_CACHE_CONTROL' => 'max-age=0',
41
+ 'HTTP_ACCEPT' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
42
+ 'HTTP_ACCEPT_LANGUAGE' => 'en-us,en;q=0.5',
43
+ 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.7',
44
+ 'HTTP_ACCEPT_ENCODING' => 'gzip,compress;q=0.5,*;q=0.0,',
45
+ 'HTTP_CONNECTION' => 'keep-alive',
46
+ 'HTTP_KEEP_ALIVE' => '300',
47
+ 'HTTP_REFERER' => 'http://localhost/',
48
+ 'GATEWAY_INTERFACE' => 'CGI/1.1'
49
+ )
50
+
51
+ def request
52
+ @request ||= ::Rack::MockRequest.new( ::Waves::Dispatchers::Default.new )
53
+ end
54
+
55
+ def get(uri, opts={}) request.get(uri, opts) end
56
+ def post(uri, opts={}) request.post(uri, opts) end
57
+ def put(uri, opts={}) request.put(uri, opts) end
58
+ def delete(uri, opts={}) request.delete(uri, opts) end
59
+
60
+
61
+ # Testing helpers
62
+ alias_method :specify, :it
63
+
64
+ def wrap(&block)
65
+ @before << block
66
+ @after << block
67
+ end
68
+
69
+ def rm_if_exist(name)
70
+ FileUtils.rm name if File.exist? name
71
+ end
72
+
73
+ end
74
+
75
+
76
+