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.
- data/app/Rakefile +72 -0
- data/app/bin/waves-console +4 -0
- data/app/bin/waves-server +4 -0
- data/app/configurations/development.rb.erb +31 -0
- data/app/configurations/mapping.rb.erb +14 -0
- data/app/configurations/production.rb.erb +31 -0
- data/app/controllers/.gitignore +0 -0
- data/app/doc/.gitignore +0 -0
- data/app/helpers/.gitignore +0 -0
- data/app/lib/application.rb.erb +5 -0
- data/app/lib/tasks/.gitignore +0 -0
- data/app/log/.gitignore +0 -0
- data/app/models/.gitignore +0 -0
- data/app/public/css/.gitignore +0 -0
- data/app/public/flash/.gitignore +0 -0
- data/app/public/images/.gitignore +0 -0
- data/app/public/javascript/.gitignore +0 -0
- data/app/schema/migrations/.gitignore +0 -0
- data/app/startup.rb +5 -0
- data/app/templates/errors/not_found_404.mab +2 -0
- data/app/templates/errors/server_error_500.mab +2 -0
- data/app/templates/layouts/default.mab +14 -0
- data/app/tmp/sessions/.gitignore +0 -0
- data/app/views/.gitignore +0 -0
- data/bin/waves +84 -0
- data/bin/waves-console +4 -0
- data/bin/waves-server +4 -0
- data/doc/HISTORY +44 -0
- data/doc/LICENSE +22 -0
- data/lib/commands/waves-console.rb +21 -0
- data/lib/commands/waves-server.rb +55 -0
- data/lib/controllers/base.rb +11 -0
- data/lib/controllers/mixin.rb +165 -0
- data/lib/dispatchers/base.rb +67 -0
- data/lib/dispatchers/default.rb +81 -0
- data/lib/foundations/default.rb +27 -0
- data/lib/foundations/simple.rb +30 -0
- data/lib/helpers/asset_helper.rb +67 -0
- data/lib/helpers/common.rb +66 -0
- data/lib/helpers/default.rb +13 -0
- data/lib/helpers/form.rb +40 -0
- data/lib/helpers/formatting.rb +30 -0
- data/lib/helpers/model.rb +33 -0
- data/lib/helpers/number_helper.rb +25 -0
- data/lib/helpers/tag_helper.rb +58 -0
- data/lib/helpers/url_helper.rb +77 -0
- data/lib/helpers/view.rb +24 -0
- data/lib/layers/default_errors.rb +26 -0
- data/lib/layers/inflect/english.rb +24 -0
- data/lib/layers/inflect/english/rules.rb +88 -0
- data/lib/layers/inflect/english/string.rb +24 -0
- data/lib/layers/mvc.rb +54 -0
- data/lib/layers/orm/active_record.rb +92 -0
- data/lib/layers/orm/active_record/migrations/empty.rb.erb +9 -0
- data/lib/layers/orm/active_record/tasks/generate.rb +28 -0
- data/lib/layers/orm/active_record/tasks/schema.rb +22 -0
- data/lib/layers/orm/data_mapper.rb +38 -0
- data/lib/layers/orm/filebase.rb +22 -0
- data/lib/layers/orm/migration.rb +79 -0
- data/lib/layers/orm/sequel.rb +86 -0
- data/lib/layers/orm/sequel/migrations/empty.rb.erb +9 -0
- data/lib/layers/orm/sequel/tasks/generate.rb +28 -0
- data/lib/layers/orm/sequel/tasks/schema.rb +16 -0
- data/lib/layers/simple.rb +32 -0
- data/lib/layers/simple_errors.rb +23 -0
- data/lib/mapping/mapping.rb +289 -0
- data/lib/mapping/pretty_urls.rb +96 -0
- data/lib/renderers/erubis.rb +63 -0
- data/lib/renderers/haml.rb +45 -0
- data/lib/renderers/markaby.rb +33 -0
- data/lib/renderers/mixin.rb +50 -0
- data/lib/runtime/application.rb +69 -0
- data/lib/runtime/blackboard.rb +57 -0
- data/lib/runtime/configuration.rb +185 -0
- data/lib/runtime/console.rb +20 -0
- data/lib/runtime/debugger.rb +9 -0
- data/lib/runtime/logger.rb +59 -0
- data/lib/runtime/mime_types.rb +22 -0
- data/lib/runtime/request.rb +78 -0
- data/lib/runtime/response.rb +40 -0
- data/lib/runtime/response_mixin.rb +38 -0
- data/lib/runtime/response_proxy.rb +30 -0
- data/lib/runtime/server.rb +107 -0
- data/lib/runtime/session.rb +66 -0
- data/lib/tasks/cluster.rb +26 -0
- data/lib/tasks/gem.rb +31 -0
- data/lib/tasks/generate.rb +80 -0
- data/lib/utilities/hash.rb +31 -0
- data/lib/utilities/inflect.rb +110 -0
- data/lib/utilities/integer.rb +24 -0
- data/lib/utilities/module.rb +21 -0
- data/lib/utilities/object.rb +25 -0
- data/lib/utilities/proc.rb +16 -0
- data/lib/utilities/string.rb +49 -0
- data/lib/utilities/symbol.rb +10 -0
- data/lib/utilities/tempfile.rb +9 -0
- data/lib/views/base.rb +9 -0
- data/lib/views/mixin.rb +110 -0
- data/lib/waves.rb +84 -0
- data/samples/blog/Rakefile +14 -0
- data/samples/blog/bin/waves-console +3 -0
- data/samples/blog/bin/waves-server +3 -0
- data/samples/blog/configurations/development.rb +31 -0
- data/samples/blog/configurations/mapping.rb +23 -0
- data/samples/blog/configurations/production.rb +30 -0
- data/samples/blog/doc/EMTPY +0 -0
- data/samples/blog/lib/application.rb +5 -0
- data/samples/blog/models/comment.rb +14 -0
- data/samples/blog/models/entry.rb +14 -0
- data/samples/blog/public/css/site.css +2 -0
- data/samples/blog/public/javascript/site.js +13 -0
- data/samples/blog/schema/migrations/001_initial_schema.rb +17 -0
- data/samples/blog/schema/migrations/002_add_comments.rb +18 -0
- data/samples/blog/schema/migrations/templates/empty.rb.erb +9 -0
- data/samples/blog/startup.rb +6 -0
- data/samples/blog/templates/comment/add.mab +10 -0
- data/samples/blog/templates/comment/list.mab +6 -0
- data/samples/blog/templates/entry/editor.mab +13 -0
- data/samples/blog/templates/entry/list.mab +11 -0
- data/samples/blog/templates/entry/show.mab +9 -0
- data/samples/blog/templates/entry/summary.mab +5 -0
- data/samples/blog/templates/errors/not_found_404.mab +2 -0
- data/samples/blog/templates/errors/server_error_500.mab +2 -0
- data/samples/blog/templates/layouts/default.mab +17 -0
- data/verify/app_generation/helpers.rb +24 -0
- data/verify/app_generation/startup.rb +39 -0
- data/verify/blackboard/blackboard_verify.rb +92 -0
- data/verify/blackboard/helpers.rb +5 -0
- data/verify/configurations/attributes.rb +37 -0
- data/verify/configurations/helpers.rb +1 -0
- data/verify/configurations/rack_integration.rb +29 -0
- data/verify/controllers/base.rb +37 -0
- data/verify/controllers/helpers.rb +13 -0
- data/verify/controllers/interface.rb +51 -0
- data/verify/core/helpers.rb +3 -0
- data/verify/core/utilities.rb +177 -0
- data/verify/foundations/default.rb +86 -0
- data/verify/foundations/default_application/Rakefile +14 -0
- data/verify/foundations/default_application/bin/waves-console +3 -0
- data/verify/foundations/default_application/bin/waves-server +3 -0
- data/verify/foundations/default_application/configurations/development.rb +26 -0
- data/verify/foundations/default_application/configurations/mapping.rb +14 -0
- data/verify/foundations/default_application/configurations/production.rb +30 -0
- data/verify/foundations/default_application/controllers/default.rb +15 -0
- data/verify/foundations/default_application/controllers/loaded.rb +15 -0
- data/verify/foundations/default_application/defaultapplication.db +0 -0
- data/verify/foundations/default_application/helpers/loaded.rb +10 -0
- data/verify/foundations/default_application/lib/application.rb +5 -0
- data/verify/foundations/default_application/models/default.rb +13 -0
- data/verify/foundations/default_application/models/loaded.rb +13 -0
- data/verify/foundations/default_application/schema/migrations/templates/empty.rb.erb +9 -0
- data/verify/foundations/default_application/startup.rb +7 -0
- data/verify/foundations/default_application/templates/errors/not_found_404.mab +2 -0
- data/verify/foundations/default_application/templates/errors/server_error_500.mab +2 -0
- data/verify/foundations/default_application/templates/layouts/default.mab +14 -0
- data/verify/foundations/default_application/views/default.rb +7 -0
- data/verify/foundations/default_application/views/loaded.rb +15 -0
- data/verify/foundations/helpers.rb +1 -0
- data/verify/foundations/simple.rb +25 -0
- data/verify/helpers.rb +76 -0
- data/verify/layers/data_mapper/association_verify.rb +87 -0
- data/verify/layers/default_errors.rb +29 -0
- data/verify/layers/helpers.rb +1 -0
- data/verify/layers/migration.rb +33 -0
- data/verify/layers/sequel/model.rb +41 -0
- data/verify/mapping/always.rb +19 -0
- data/verify/mapping/filters.rb +65 -0
- data/verify/mapping/handle.rb +24 -0
- data/verify/mapping/helpers.rb +7 -0
- data/verify/mapping/matches.rb +27 -0
- data/verify/mapping/named.rb +29 -0
- data/verify/mapping/options.rb +17 -0
- data/verify/mapping/path.rb +40 -0
- data/verify/mapping/response_proxy.rb +50 -0
- data/verify/mapping/threaded.rb +25 -0
- data/verify/requests/helpers.rb +16 -0
- data/verify/requests/request.rb +73 -0
- data/verify/requests/response.rb +59 -0
- data/verify/requests/session.rb +54 -0
- data/verify/views/helpers.rb +1 -0
- data/verify/views/rendering.rb +34 -0
- data/verify/views/templates/foo.erb +0 -0
- data/verify/views/templates/moo.erb +0 -0
- data/verify/views/templates/moo.mab +0 -0
- 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,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
|
|
File without changes
|
|
@@ -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
|
+
|