merb 0.4.2 → 0.5.0
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/README +21 -14
- data/Rakefile +157 -108
- data/SVN_REVISION +1 -0
- data/app_generators/merb/templates/Rakefile +20 -4
- data/app_generators/merb/templates/app/views/exceptions/internal_server_error.html.erb +1 -1
- data/app_generators/merb/templates/config/boot.rb +1 -1
- data/app_generators/merb/templates/config/dependencies.rb +3 -3
- data/app_generators/merb/templates/config/merb.yml +5 -0
- data/app_generators/merb/templates/config/merb_init.rb +3 -3
- data/app_generators/merb/templates/script/destroy +3 -0
- data/app_generators/merb/templates/script/generate +1 -1
- data/app_generators/merb/templates/spec/spec_helper.rb +2 -2
- data/app_generators/merb/templates/test/test_helper.rb +1 -1
- data/app_generators/merb_plugin/merb_plugin_generator.rb +4 -0
- data/bin/merb +1 -3
- data/lib/merb.rb +144 -76
- data/lib/merb/abstract_controller.rb +6 -5
- data/lib/merb/assets.rb +119 -0
- data/lib/merb/boot_loader.rb +217 -0
- data/lib/merb/caching.rb +1 -1
- data/lib/merb/caching/action_cache.rb +1 -1
- data/lib/merb/caching/fragment_cache.rb +1 -1
- data/lib/merb/caching/store/file_cache.rb +1 -1
- data/lib/merb/config.rb +290 -0
- data/lib/merb/controller.rb +5 -5
- data/lib/merb/core_ext/get_args.rb +1 -0
- data/lib/merb/core_ext/hash.rb +182 -169
- data/lib/merb/core_ext/kernel.rb +57 -26
- data/lib/merb/dispatcher.rb +6 -6
- data/lib/merb/drb_server.rb +1 -1
- data/lib/merb/generators/merb_generator_helpers.rb +7 -6
- data/lib/merb/logger.rb +1 -1
- data/lib/merb/mail_controller.rb +3 -4
- data/lib/merb/mailer.rb +2 -2
- data/lib/merb/mixins/basic_authentication.rb +2 -2
- data/lib/merb/mixins/controller.rb +1 -1
- data/lib/merb/mixins/general_controller.rb +13 -20
- data/lib/merb/mixins/inline_partial.rb +32 -0
- data/lib/merb/mixins/render.rb +3 -3
- data/lib/merb/mixins/responder.rb +1 -1
- data/lib/merb/mixins/view_context.rb +159 -33
- data/lib/merb/mongrel_handler.rb +9 -9
- data/lib/merb/plugins.rb +1 -1
- data/lib/merb/request.rb +25 -1
- data/lib/merb/router.rb +264 -226
- data/lib/merb/server.rb +66 -560
- data/lib/merb/session/cookie_store.rb +14 -13
- data/lib/merb/session/mem_cache_session.rb +20 -10
- data/lib/merb/session/memory_session.rb +21 -11
- data/lib/merb/template.rb +2 -2
- data/lib/merb/template/erubis.rb +3 -33
- data/lib/merb/template/haml.rb +8 -3
- data/lib/merb/test/fake_request.rb +8 -3
- data/lib/merb/test/helper.rb +66 -22
- data/lib/merb/test/rspec.rb +9 -155
- data/lib/merb/test/rspec_matchers/controller_matchers.rb +117 -0
- data/lib/merb/test/rspec_matchers/markup_matchers.rb +98 -0
- data/lib/merb/upload_handler.rb +2 -1
- data/lib/merb/version.rb +38 -3
- data/lib/merb/view_context.rb +1 -2
- data/lib/tasks/merb.rake +11 -11
- data/merb_generators/part_controller/USAGE +5 -0
- data/merb_generators/part_controller/part_controller_generator.rb +27 -0
- data/merb_generators/part_controller/templates/controller.rb +8 -0
- data/merb_generators/part_controller/templates/helper.rb +5 -0
- data/merb_generators/part_controller/templates/index.html.erb +3 -0
- data/rspec_generators/merb_controller_test/merb_controller_test_generator.rb +1 -1
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/spec/fixtures/controllers/dispatch_spec_controllers.rb +9 -1
- data/spec/fixtures/controllers/render_spec_controllers.rb +5 -5
- data/spec/fixtures/models/router_spec_models.rb +10 -0
- data/spec/merb/abstract_controller_spec.rb +2 -2
- data/spec/merb/assets_spec.rb +207 -0
- data/spec/merb/caching_spec.rb +2 -2
- data/spec/merb/controller_spec.rb +7 -2
- data/spec/merb/cookie_store_spec.rb +1 -1
- data/spec/merb/core_ext/class_spec.rb +97 -0
- data/spec/merb/core_ext/enumerable_spec.rb +27 -0
- data/spec/merb/core_ext/hash_spec.rb +251 -0
- data/spec/merb/core_ext/inflector_spec.rb +34 -0
- data/spec/merb/core_ext/kernel_spec.rb +25 -0
- data/spec/merb/core_ext/numeric_spec.rb +26 -0
- data/spec/merb/core_ext/object_spec.rb +47 -0
- data/spec/merb/core_ext/string_spec.rb +22 -0
- data/spec/merb/core_ext/symbol_spec.rb +7 -0
- data/spec/merb/dependency_spec.rb +22 -0
- data/spec/merb/dispatch_spec.rb +23 -12
- data/spec/merb/fake_request_spec.rb +8 -0
- data/spec/merb/generator_spec.rb +140 -21
- data/spec/merb/handler_spec.rb +5 -5
- data/spec/merb/mail_controller_spec.rb +3 -3
- data/spec/merb/render_spec.rb +1 -1
- data/spec/merb/responder_spec.rb +3 -3
- data/spec/merb/router_spec.rb +260 -191
- data/spec/merb/server_spec.rb +5 -5
- data/spec/merb/upload_handler_spec.rb +7 -0
- data/spec/merb/version_spec.rb +33 -0
- data/spec/merb/view_context_spec.rb +217 -59
- data/spec/spec_generator_helper.rb +15 -0
- data/spec/spec_helper.rb +5 -3
- data/spec/spec_helpers/url_shared_behaviour.rb +5 -7
- metadata +32 -7
- data/lib/merb/caching/store/memcache.rb +0 -20
- data/lib/merb/mixins/form_control.rb +0 -332
- data/lib/patch +0 -69
- data/spec/merb/core_ext_spec.rb +0 -464
- data/spec/merb/form_control_mixin_spec.rb +0 -431
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
module Merb
|
|
2
|
+
module Test
|
|
3
|
+
module ControllerMatchers
|
|
4
|
+
|
|
5
|
+
class BeRedirect
|
|
6
|
+
def matches?(target)
|
|
7
|
+
@target = target
|
|
8
|
+
target == 302
|
|
9
|
+
end
|
|
10
|
+
def failure_message
|
|
11
|
+
"expected to redirect"
|
|
12
|
+
end
|
|
13
|
+
def negative_failure_message
|
|
14
|
+
"expected not to redirect"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
class Redirect
|
|
19
|
+
def matches?(target)
|
|
20
|
+
@target = target
|
|
21
|
+
BeRedirect.new.matches?(target.status)
|
|
22
|
+
end
|
|
23
|
+
def failure_message
|
|
24
|
+
"expected #{@target.inspect} to redirect"
|
|
25
|
+
end
|
|
26
|
+
def negative_failure_message
|
|
27
|
+
"expected #{@target.inspect} not to redirect"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class RedirectTo
|
|
32
|
+
def initialize(expected)
|
|
33
|
+
@expected = expected
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def matches?(target)
|
|
37
|
+
@target = target.headers['Location']
|
|
38
|
+
@redirected = BeRedirect.new.matches?(target.status)
|
|
39
|
+
@target == @expected
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def failure_message
|
|
43
|
+
msg = "expected a redirect to <#{@expected}>, but "
|
|
44
|
+
if @redirected
|
|
45
|
+
msg << "found one to <#{@target}>"
|
|
46
|
+
else
|
|
47
|
+
msg << "there was no redirect"
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def negative_failure_message
|
|
52
|
+
"expected not to redirect to <#{@expected}>, but did anyway"
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
class BeSuccess
|
|
57
|
+
|
|
58
|
+
def matches?(target)
|
|
59
|
+
@target = target.status
|
|
60
|
+
(200..299).include?(@target)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def failure_message
|
|
64
|
+
"expected #{@target} to be successful but was #{@target.status}"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def negative_failure_message
|
|
68
|
+
"expected #{@target} not to be successful but it was"
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
class BeMissing
|
|
73
|
+
def matches?(target)
|
|
74
|
+
@target = target
|
|
75
|
+
(400..499).include?(@target.status)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def failurs_message
|
|
79
|
+
"expected #{@target} to be missing but was #{@target.status}"
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def negative_failure_message
|
|
83
|
+
"expected #{@target} not to be missing but it was"
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def be_redirect
|
|
89
|
+
BeRedirect.new
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def redirect
|
|
93
|
+
Redirect.new
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def redirect_to(expected)
|
|
97
|
+
RedirectTo.new(expected)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def be_success
|
|
101
|
+
BeSuccess.new
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def be_successful
|
|
105
|
+
BeSuccess.new
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def respond_successfully
|
|
109
|
+
BeSuccess.new
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def be_missing
|
|
113
|
+
BeMissing.new
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
module Merb
|
|
2
|
+
module Test
|
|
3
|
+
module MarkupMatchers
|
|
4
|
+
class HaveSelector
|
|
5
|
+
def initialize(expected)
|
|
6
|
+
@expected = expected
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def matches?(stringlike)
|
|
10
|
+
@document = case stringlike
|
|
11
|
+
when Hpricot::Elem
|
|
12
|
+
stringlike
|
|
13
|
+
when StringIO
|
|
14
|
+
Hpricot.parse(stringlike.string)
|
|
15
|
+
else
|
|
16
|
+
Hpricot.parse(stringlike)
|
|
17
|
+
end
|
|
18
|
+
!@document.search(@expected).empty?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def failure_message
|
|
22
|
+
"expected following text to match selector #{@expected}:\n#{@document}"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def negative_failure_message
|
|
26
|
+
"expected following text to not match selector #{@expected}:\n#{@document}"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class MatchTag
|
|
31
|
+
def initialize(name, attrs)
|
|
32
|
+
@name, @attrs = name, attrs
|
|
33
|
+
@content = @attrs.delete(:content)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def matches?(target)
|
|
37
|
+
@errors = []
|
|
38
|
+
unless target.include?("<#{@name}")
|
|
39
|
+
@errors << "Expected a <#{@name}>, but was #{target}"
|
|
40
|
+
end
|
|
41
|
+
@attrs.each do |attr, val|
|
|
42
|
+
unless target.include?("#{attr}=\"#{val}\"")
|
|
43
|
+
@errors << "Expected #{attr}=\"#{val}\", but was #{target}"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
if @content
|
|
47
|
+
unless target.include?(">#{@content}<")
|
|
48
|
+
@errors << "Expected #{target} to include #{@content}"
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
@errors.size == 0
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def failure_message
|
|
55
|
+
@errors[0]
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def negative_failure_message
|
|
59
|
+
"Expected not to match against <#{@name} #{@attrs.map{ |a,v| "#{a}=\"#{v}\"" }.join(" ")}> tag, but it matched"
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
class NotMatchTag
|
|
64
|
+
def initialize(attrs)
|
|
65
|
+
@attrs = attrs
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def matches?(target)
|
|
69
|
+
@errors = []
|
|
70
|
+
@attrs.each do |attr, val|
|
|
71
|
+
if target.include?("#{attr}=\"#{val}\"")
|
|
72
|
+
@errors << "Should not include #{attr}=\"#{val}\", but was #{target}"
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
@errors.size == 0
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def failure_message
|
|
79
|
+
@errors[0]
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def match_tag(name, attrs={})
|
|
84
|
+
MatchTag.new(name, attrs)
|
|
85
|
+
end
|
|
86
|
+
def not_match_tag(attrs)
|
|
87
|
+
NotMatchTag.new(attrs)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def have_selector(expected)
|
|
91
|
+
HaveSelector.new(expected)
|
|
92
|
+
end
|
|
93
|
+
alias_method :match_selector, :have_selector
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
data/lib/merb/upload_handler.rb
CHANGED
|
@@ -56,7 +56,8 @@ class MerbUploadHandler < Mongrel::HttpHandler
|
|
|
56
56
|
def request_aborted(params)
|
|
57
57
|
return unless upload_id = valid_upload?(params)
|
|
58
58
|
Mongrel::Uploads.finish(upload_id)
|
|
59
|
-
|
|
59
|
+
Merb.logger.info "#{self.class.name} - request aborted for " <<
|
|
60
|
+
"id: #{upload_id.inspect}, params: #{params.inspect}"
|
|
60
61
|
end
|
|
61
62
|
|
|
62
63
|
private
|
data/lib/merb/version.rb
CHANGED
|
@@ -1,5 +1,38 @@
|
|
|
1
1
|
module Merb
|
|
2
|
-
VERSION='0.
|
|
2
|
+
VERSION = '0.5.0' unless defined?(::Merb::VERSION)
|
|
3
|
+
|
|
4
|
+
class << self
|
|
5
|
+
def svn_revision
|
|
6
|
+
rev = if File.directory?('.git')
|
|
7
|
+
`git log -1`[/git-svn-id.+@(\d+)/, 1]
|
|
8
|
+
elsif File.directory?('.svn')
|
|
9
|
+
`svn info`[/Revision: (\d+)/, 1]
|
|
10
|
+
end
|
|
11
|
+
rev = rev.to_i if rev
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def svn_revision_filename
|
|
15
|
+
'SVN_REVISION'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def svn_revision_from_file
|
|
19
|
+
begin
|
|
20
|
+
File.open svn_revision_file_path, 'w' do |f|
|
|
21
|
+
f.print svn_revision
|
|
22
|
+
end
|
|
23
|
+
# catch permissions error when packaged as gem
|
|
24
|
+
rescue Errno::EACCES
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
unless (rev = File.read(svn_revision_file_path).strip).empty?
|
|
28
|
+
rev.to_i
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def svn_revision_file_path
|
|
33
|
+
File.expand_path File.join(File.dirname(__FILE__), '..', '..', svn_revision_filename)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
3
36
|
|
|
4
37
|
# Merb::RELEASE meanings:
|
|
5
38
|
# 'svn' : unreleased
|
|
@@ -7,5 +40,7 @@ module Merb
|
|
|
7
40
|
# nil : released
|
|
8
41
|
# You should never check in to trunk with this changed. It should
|
|
9
42
|
# stay 'svn'. Change it to nil in release tags.
|
|
10
|
-
|
|
11
|
-
|
|
43
|
+
unless defined?(::Merb::RELEASE)
|
|
44
|
+
RELEASE = "svn#{" r#{svn_revision_from_file}" if svn_revision_from_file}"
|
|
45
|
+
end
|
|
46
|
+
end
|
data/lib/merb/view_context.rb
CHANGED
|
@@ -33,7 +33,6 @@ module Merb
|
|
|
33
33
|
# the context object passed to Erubis when evaluating the templates.
|
|
34
34
|
class ViewContext
|
|
35
35
|
include Merb::ViewContextMixin
|
|
36
|
-
include Merb::FormControls
|
|
37
36
|
include Merb::WebControllerMixin
|
|
38
37
|
|
|
39
38
|
def initialize(controller)
|
|
@@ -45,7 +44,7 @@ module Merb
|
|
|
45
44
|
begin
|
|
46
45
|
self.class.class_eval(" include Merb::GlobalHelper; include Merb::#{@web_controller.class.name}Helper")
|
|
47
46
|
rescue NameError
|
|
48
|
-
|
|
47
|
+
Merb.logger. debug("Missing Helper: Merb::#{@web_controller.class.name}Helper")
|
|
49
48
|
end
|
|
50
49
|
end
|
|
51
50
|
|
data/lib/tasks/merb.rake
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
def install_merb_script
|
|
2
|
-
script_filepath =
|
|
2
|
+
script_filepath = Merb.root / 'script/merb'
|
|
3
3
|
FileUtils.rm script_filepath if File.exist? script_filepath
|
|
4
4
|
tmpl = "#!/usr/bin/env ruby\nrequire File.expand_path(File.dirname(__FILE__)+'/../framework/merb/server')\nMerb::Server.run\n"
|
|
5
5
|
File.open(script_filepath, 'wb') {|f|
|
|
@@ -11,8 +11,8 @@ end
|
|
|
11
11
|
namespace :merb do
|
|
12
12
|
desc "freeze the merb framework into merb for portability"
|
|
13
13
|
task :freeze do
|
|
14
|
-
FileUtils.rm_rf
|
|
15
|
-
FileUtils.cp_r
|
|
14
|
+
FileUtils.rm_rf Merb.root / 'framework'
|
|
15
|
+
FileUtils.cp_r Merb::framework_root, (Merb.root / 'framework')
|
|
16
16
|
install_merb_script
|
|
17
17
|
|
|
18
18
|
puts " Freezing Merb Framework into framework"
|
|
@@ -20,17 +20,17 @@ namespace :merb do
|
|
|
20
20
|
end
|
|
21
21
|
desc "unfreeze this app from the framework and use system gem."
|
|
22
22
|
task :unfreeze do
|
|
23
|
-
FileUtils.rm_rf
|
|
24
|
-
FileUtils.rm
|
|
23
|
+
FileUtils.rm_rf Merb.root / 'framework'
|
|
24
|
+
FileUtils.rm Merb.root / 'script/merb'
|
|
25
25
|
|
|
26
26
|
puts " Removed: "
|
|
27
|
-
puts " - #{
|
|
28
|
-
puts " - #{
|
|
27
|
+
puts " - #{Merb.root / 'framework'} (recursive) "
|
|
28
|
+
puts " - #{Merb.root / 'script/merb'}"
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
desc "freeze the merb framework from svn, use REVISION=# to freeze a specific revision"
|
|
32
32
|
task :freeze_from_svn do
|
|
33
|
-
install_path =
|
|
33
|
+
install_path = Merb.root / 'framework'
|
|
34
34
|
revision = ENV['REVISION'] || 'HEAD'
|
|
35
35
|
puts " Removing old framework" if File.exist? install_path
|
|
36
36
|
FileUtils.rm_rf install_path
|
|
@@ -48,7 +48,7 @@ desc "Setup the Merb Environment by requiring merb and loading your merb_init.rb
|
|
|
48
48
|
task :merb_env do
|
|
49
49
|
require 'rubygems'
|
|
50
50
|
require 'merb'
|
|
51
|
-
Merb::
|
|
52
|
-
|
|
53
|
-
load
|
|
51
|
+
Merb::Config[:environment] = ENV['Merb.environment'] if ENV['Merb.environment']
|
|
52
|
+
Merb.environment = Merb::Config[:environment].nil? ? 'development' : Merb::Config[:environment]
|
|
53
|
+
load Merb.root+'/config/merb_init.rb'
|
|
54
54
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'merb/generators/merb_generator_helpers'
|
|
2
|
+
|
|
3
|
+
class PartControllerGenerator < Merb::GeneratorHelpers::ControllerGeneratorBase
|
|
4
|
+
|
|
5
|
+
def initialize(*args)
|
|
6
|
+
runtime_options = args.last.is_a?(Hash) ? args.pop : {}
|
|
7
|
+
name, *actions = args.flatten
|
|
8
|
+
name += "_part"
|
|
9
|
+
|
|
10
|
+
runtime_options[:actions] = actions.empty? ? %w[index] : actions
|
|
11
|
+
runtime_options[:base_dest_folder] = "app/parts"
|
|
12
|
+
super( [name], runtime_options )
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.superclass
|
|
16
|
+
RubiGen::Base
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
protected
|
|
20
|
+
def banner
|
|
21
|
+
<<-EOS
|
|
22
|
+
Creates a Merb part_controller
|
|
23
|
+
|
|
24
|
+
USAGE: #{$0} #{spec.name} name"
|
|
25
|
+
EOS
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -27,7 +27,7 @@ class MerbControllerTestGenerator < RubiGen::Base
|
|
|
27
27
|
# Setup the view stubs for each view
|
|
28
28
|
@template_actions.each do |the_action|
|
|
29
29
|
template_name = "#{the_action}.html.#{@engine}"
|
|
30
|
-
if File.exists?(File.join(
|
|
30
|
+
if File.exists?(File.join(Merb.root, "app", "views", file_name, template_name))
|
|
31
31
|
m.template "#{the_action}_spec.rb", "spec/views/#{file_name}/#{the_action}_html_spec.rb"
|
|
32
32
|
end
|
|
33
33
|
end
|
data/script/destroy
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
APP_ROOT = File.join(File.dirname(__FILE__), '..')
|
|
3
|
+
|
|
4
|
+
begin
|
|
5
|
+
require 'rubigen'
|
|
6
|
+
rescue LoadError
|
|
7
|
+
require 'rubygems'
|
|
8
|
+
require 'rubigen'
|
|
9
|
+
end
|
|
10
|
+
require 'rubigen/scripts/destroy'
|
|
11
|
+
|
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :rspec]
|
|
14
|
+
RubiGen::Scripts::Destroy.new.run(ARGV)
|
data/script/generate
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
APP_ROOT = File.join(File.dirname(__FILE__), '..')
|
|
3
|
+
|
|
4
|
+
begin
|
|
5
|
+
require 'rubigen'
|
|
6
|
+
rescue LoadError
|
|
7
|
+
require 'rubygems'
|
|
8
|
+
require 'rubigen'
|
|
9
|
+
end
|
|
10
|
+
require 'rubigen/scripts/generate'
|
|
11
|
+
|
|
12
|
+
ARGV.shift if ['--help', '-h'].include?(ARGV[0])
|
|
13
|
+
RubiGen::Base.use_component_sources! [:rubygems, :rspec]
|
|
14
|
+
RubiGen::Scripts::Generate.new.run(ARGV)
|
|
@@ -32,6 +32,14 @@ class Bar < Merb::Controller
|
|
|
32
32
|
"#{a} #{b} #{c}"
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
def bat(a, b = false)
|
|
36
|
+
"#{a} #{b}"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def bam(a, b = nil)
|
|
40
|
+
"#{a} #{b.inspect}"
|
|
41
|
+
end
|
|
42
|
+
|
|
35
43
|
end
|
|
36
44
|
|
|
37
45
|
class Baz < Merb::Controller
|
|
@@ -224,4 +232,4 @@ class Profile < Merb::Controller
|
|
|
224
232
|
end
|
|
225
233
|
|
|
226
234
|
# If this throws an error, it's because parameterized args are somehow borked
|
|
227
|
-
Merb::
|
|
235
|
+
Merb::BootLoader.load_application
|