ramaze 0.0.6

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 (174) hide show
  1. data/Rakefile +360 -0
  2. data/bin/ramaze +152 -0
  3. data/doc/CHANGELOG +2021 -0
  4. data/doc/COPYING +56 -0
  5. data/doc/COPYING.ja +51 -0
  6. data/doc/README +275 -0
  7. data/doc/TODO +33 -0
  8. data/doc/allison/LICENSE +184 -0
  9. data/doc/allison/README +37 -0
  10. data/doc/allison/allison.css +300 -0
  11. data/doc/allison/allison.gif +0 -0
  12. data/doc/allison/allison.js +307 -0
  13. data/doc/allison/allison.rb +287 -0
  14. data/doc/allison/cache/BODY +588 -0
  15. data/doc/allison/cache/CLASS_INDEX +4 -0
  16. data/doc/allison/cache/CLASS_PAGE +1 -0
  17. data/doc/allison/cache/FILE_INDEX +4 -0
  18. data/doc/allison/cache/FILE_PAGE +1 -0
  19. data/doc/allison/cache/FONTS +1 -0
  20. data/doc/allison/cache/FR_INDEX_BODY +1 -0
  21. data/doc/allison/cache/IMGPATH +1 -0
  22. data/doc/allison/cache/INDEX +1 -0
  23. data/doc/allison/cache/JAVASCRIPT +307 -0
  24. data/doc/allison/cache/METHOD_INDEX +4 -0
  25. data/doc/allison/cache/METHOD_LIST +1 -0
  26. data/doc/allison/cache/SRC_PAGE +1 -0
  27. data/doc/allison/cache/STYLE +322 -0
  28. data/doc/allison/cache/URL +1 -0
  29. data/examples/blog/main.rb +16 -0
  30. data/examples/blog/public/screen.css +106 -0
  31. data/examples/blog/src/controller.rb +50 -0
  32. data/examples/blog/src/element.rb +53 -0
  33. data/examples/blog/src/model.rb +29 -0
  34. data/examples/blog/template/edit.xhtml +6 -0
  35. data/examples/blog/template/index.xhtml +24 -0
  36. data/examples/blog/template/new.xhtml +5 -0
  37. data/examples/blog/template/view.xhtml +15 -0
  38. data/examples/blog/test/tc_entry.rb +18 -0
  39. data/examples/caching.rb +23 -0
  40. data/examples/element.rb +40 -0
  41. data/examples/hello.rb +23 -0
  42. data/examples/simple.rb +60 -0
  43. data/examples/templates/template/external.haml +21 -0
  44. data/examples/templates/template/external.liquid +28 -0
  45. data/examples/templates/template/external.mab +27 -0
  46. data/examples/templates/template/external.rhtml +29 -0
  47. data/examples/templates/template/external.rmze +24 -0
  48. data/examples/templates/template_erubis.rb +50 -0
  49. data/examples/templates/template_haml.rb +48 -0
  50. data/examples/templates/template_liquid.rb +64 -0
  51. data/examples/templates/template_markaby.rb +52 -0
  52. data/examples/templates/template_ramaze.rb +49 -0
  53. data/examples/whywiki/main.rb +56 -0
  54. data/examples/whywiki/template/edit.xhtml +14 -0
  55. data/examples/whywiki/template/show.xhtml +17 -0
  56. data/lib/proto/conf/benchmark.yaml +35 -0
  57. data/lib/proto/conf/debug.yaml +34 -0
  58. data/lib/proto/conf/live.yaml +33 -0
  59. data/lib/proto/conf/silent.yaml +31 -0
  60. data/lib/proto/conf/stage.yaml +33 -0
  61. data/lib/proto/main.rb +18 -0
  62. data/lib/proto/public/404.jpg +0 -0
  63. data/lib/proto/public/css/coderay.css +105 -0
  64. data/lib/proto/public/css/ramaze_error.css +42 -0
  65. data/lib/proto/public/error.xhtml +74 -0
  66. data/lib/proto/public/favicon.ico +0 -0
  67. data/lib/proto/public/js/jquery.js +1923 -0
  68. data/lib/proto/public/ramaze.png +0 -0
  69. data/lib/proto/src/controller/main.rb +7 -0
  70. data/lib/proto/src/element/page.rb +16 -0
  71. data/lib/proto/src/model.rb +5 -0
  72. data/lib/proto/template/index.xhtml +6 -0
  73. data/lib/ramaze.rb +317 -0
  74. data/lib/ramaze/adapter/mongrel.rb +111 -0
  75. data/lib/ramaze/adapter/webrick.rb +161 -0
  76. data/lib/ramaze/cache.rb +11 -0
  77. data/lib/ramaze/cache/memcached.rb +52 -0
  78. data/lib/ramaze/cache/memory.rb +6 -0
  79. data/lib/ramaze/cache/yaml_store.rb +37 -0
  80. data/lib/ramaze/controller.rb +10 -0
  81. data/lib/ramaze/dispatcher.rb +315 -0
  82. data/lib/ramaze/error.rb +11 -0
  83. data/lib/ramaze/gestalt.rb +108 -0
  84. data/lib/ramaze/global.rb +120 -0
  85. data/lib/ramaze/helper.rb +32 -0
  86. data/lib/ramaze/helper/aspect.rb +189 -0
  87. data/lib/ramaze/helper/auth.rb +120 -0
  88. data/lib/ramaze/helper/cache.rb +52 -0
  89. data/lib/ramaze/helper/feed.rb +135 -0
  90. data/lib/ramaze/helper/form.rb +204 -0
  91. data/lib/ramaze/helper/link.rb +80 -0
  92. data/lib/ramaze/helper/redirect.rb +48 -0
  93. data/lib/ramaze/helper/stack.rb +67 -0
  94. data/lib/ramaze/http_status.rb +66 -0
  95. data/lib/ramaze/inform.rb +166 -0
  96. data/lib/ramaze/snippets.rb +5 -0
  97. data/lib/ramaze/snippets/hash/keys_to_sym.rb +19 -0
  98. data/lib/ramaze/snippets/kernel/aquire.rb +22 -0
  99. data/lib/ramaze/snippets/kernel/autoreload.rb +79 -0
  100. data/lib/ramaze/snippets/kernel/caller_lines.rb +58 -0
  101. data/lib/ramaze/snippets/kernel/constant.rb +24 -0
  102. data/lib/ramaze/snippets/kernel/rescue_require.rb +12 -0
  103. data/lib/ramaze/snippets/kernel/self_method.rb +41 -0
  104. data/lib/ramaze/snippets/kernel/silently.rb +13 -0
  105. data/lib/ramaze/snippets/object/traits.rb +60 -0
  106. data/lib/ramaze/snippets/openstruct/temp.rb +10 -0
  107. data/lib/ramaze/snippets/string/DIVIDE.rb +16 -0
  108. data/lib/ramaze/snippets/string/camel_case.rb +14 -0
  109. data/lib/ramaze/snippets/string/snake_case.rb +12 -0
  110. data/lib/ramaze/snippets/symbol/to_proc.rb +14 -0
  111. data/lib/ramaze/snippets/thread/deadQUESTIONMARK.rb +11 -0
  112. data/lib/ramaze/store/default.rb +48 -0
  113. data/lib/ramaze/template.rb +102 -0
  114. data/lib/ramaze/template/amrita2.rb +40 -0
  115. data/lib/ramaze/template/erubis.rb +58 -0
  116. data/lib/ramaze/template/haml.rb +65 -0
  117. data/lib/ramaze/template/haml/actionview_stub.rb +20 -0
  118. data/lib/ramaze/template/liquid.rb +74 -0
  119. data/lib/ramaze/template/markaby.rb +68 -0
  120. data/lib/ramaze/template/ramaze.rb +177 -0
  121. data/lib/ramaze/template/ramaze/element.rb +166 -0
  122. data/lib/ramaze/template/ramaze/morpher.rb +156 -0
  123. data/lib/ramaze/tool/create.rb +70 -0
  124. data/lib/ramaze/tool/tidy.rb +71 -0
  125. data/lib/ramaze/trinity.rb +38 -0
  126. data/lib/ramaze/trinity/request.rb +244 -0
  127. data/lib/ramaze/trinity/response.rb +41 -0
  128. data/lib/ramaze/trinity/session.rb +129 -0
  129. data/lib/ramaze/version.rb +14 -0
  130. data/spec/spec_all.rb +73 -0
  131. data/spec/spec_helper.rb +215 -0
  132. data/spec/tc_adapter_mongrel.rb +24 -0
  133. data/spec/tc_adapter_webrick.rb +22 -0
  134. data/spec/tc_cache.rb +79 -0
  135. data/spec/tc_controller.rb +39 -0
  136. data/spec/tc_element.rb +100 -0
  137. data/spec/tc_error.rb +23 -0
  138. data/spec/tc_gestalt.rb +90 -0
  139. data/spec/tc_global.rb +46 -0
  140. data/spec/tc_helper_aspect.rb +65 -0
  141. data/spec/tc_helper_auth.rb +61 -0
  142. data/spec/tc_helper_cache.rb +81 -0
  143. data/spec/tc_helper_feed.rb +129 -0
  144. data/spec/tc_helper_form.rb +146 -0
  145. data/spec/tc_helper_link.rb +58 -0
  146. data/spec/tc_helper_redirect.rb +51 -0
  147. data/spec/tc_helper_stack.rb +55 -0
  148. data/spec/tc_morpher.rb +90 -0
  149. data/spec/tc_params.rb +84 -0
  150. data/spec/tc_request.rb +111 -0
  151. data/spec/tc_session.rb +56 -0
  152. data/spec/tc_store.rb +25 -0
  153. data/spec/tc_template_amrita2.rb +34 -0
  154. data/spec/tc_template_erubis.rb +41 -0
  155. data/spec/tc_template_haml.rb +44 -0
  156. data/spec/tc_template_liquid.rb +98 -0
  157. data/spec/tc_template_markaby.rb +74 -0
  158. data/spec/tc_template_ramaze.rb +54 -0
  159. data/spec/tc_tidy.rb +14 -0
  160. data/spec/template/amrita2/data.html +6 -0
  161. data/spec/template/amrita2/index.html +1 -0
  162. data/spec/template/amrita2/sum.html +1 -0
  163. data/spec/template/erubis/sum.rhtml +1 -0
  164. data/spec/template/haml/index.haml +5 -0
  165. data/spec/template/haml/with_vars.haml +4 -0
  166. data/spec/template/liquid/index.liquid +1 -0
  167. data/spec/template/liquid/products.liquid +45 -0
  168. data/spec/template/markaby/external.mab +8 -0
  169. data/spec/template/markaby/sum.mab +1 -0
  170. data/spec/template/ramaze/file_only.rmze +1 -0
  171. data/spec/template/ramaze/index.rmze +1 -0
  172. data/spec/template/ramaze/nested.rmze +1 -0
  173. data/spec/template/ramaze/sum.rmze +1 -0
  174. metadata +317 -0
@@ -0,0 +1,14 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ module Ramaze #:nodoc:
5
+ module Version #:nodoc:
6
+ MAJOR = 0
7
+ MINOR = 0
8
+ TINY = 6
9
+
10
+ STRING = [MAJOR, MINOR, TINY].join('.')
11
+ end
12
+
13
+ VERSION = Version::STRING
14
+ end
@@ -0,0 +1,73 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'pp'
5
+ begin
6
+ require 'term/ansicolor'
7
+ class String
8
+ include Term::ANSIColor
9
+ end
10
+ rescue LoadError
11
+ class String
12
+
13
+ # this will be set in case term/ansicolor cannot be
14
+ # required, just makes colorless output
15
+
16
+ def red() self end
17
+
18
+ # this will be set in case term/ansicolor cannot be
19
+ # required, just makes colorless output
20
+
21
+ def green() self end
22
+ end
23
+ end
24
+
25
+ $stdout.sync = true
26
+
27
+ specs = 0
28
+ failures = 0
29
+ problematic = {}
30
+
31
+ Dir['spec/**/tc_*.rb'].each do |test_case|
32
+ print "rspec #{test_case.ljust(48)} "
33
+ out = `ruby #{test_case}`
34
+ out.split("\n").each do |line|
35
+ if line =~ /(\d+) specifications?, (\d+) failures?/
36
+ s, f = $1.to_i, $2.to_i
37
+
38
+ specs += s
39
+ failures += f
40
+
41
+ message = "[#{s.to_s.rjust(3)} specs | "
42
+
43
+ if f.nonzero? or $?.exitstatus != 0
44
+ problematic[test_case] = out
45
+ message << "#{f.to_s.rjust(3)} failed ]"
46
+ puts message.red
47
+ else
48
+ message << "all passed ]"
49
+ puts message.green
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ puts "-" * 80
56
+ problematic.each do |key, value|
57
+ puts key.center(80)
58
+ puts "v" * 80
59
+ puts
60
+ puts value
61
+ puts "-" * 80
62
+ end
63
+
64
+ puts
65
+ puts "#{specs} specifications, #{failures} failures"
66
+ puts
67
+
68
+ unless (problems = problematic.keys.join(', ')).empty?
69
+ puts "These failed: #{problems}"
70
+ else
71
+ puts "No failing specifications, let's add some tests!"
72
+ end
73
+ puts
@@ -0,0 +1,215 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ $:.unshift File.join(File.dirname(File.expand_path(__FILE__)), '..', 'lib')
5
+
6
+ require 'ramaze'
7
+
8
+ begin
9
+ require 'rubygems'
10
+ rescue LoadError => ex
11
+ end
12
+
13
+ require 'spec'
14
+
15
+ require 'timeout'
16
+ require 'open-uri'
17
+ require 'net/http'
18
+
19
+ # provides get/post methods for use inside your
20
+ # Spec::Runner
21
+
22
+ module StatelessContext
23
+ def raw_get url = ''
24
+ url = "http://localhost:#{Ramaze::Global.port}" + "/#{url}".squeeze('/')
25
+ Timeout.timeout(1) do
26
+ open(url)
27
+ end
28
+ end
29
+
30
+ # just GET an [url]
31
+
32
+ def get url = ''
33
+ raw_get(url).read.strip
34
+ end
35
+
36
+ # POST to an url the given params
37
+
38
+ def post url = '', params = {}
39
+ url = "http://localhost:#{Ramaze::Global.port}" + "/#{url}".squeeze('/')
40
+ uri = URI.parse(url)
41
+ Timeout.timeout(1) do
42
+ res = Net::HTTP.post_form(uri, params)
43
+ result = res.body.to_s.strip
44
+ #p res => result
45
+ result
46
+ end
47
+ end
48
+ end
49
+
50
+ include StatelessContext
51
+
52
+ # provides a convinient Context for your requests
53
+ # so you can simulate sessions and consecutive requests
54
+
55
+ class Context
56
+ attr_accessor :cookie
57
+
58
+ # initialize the context with an url to obtain your cookie
59
+
60
+ def initialize(url = '/', base = nil)
61
+ @base = base
62
+ @cookie_url = with_base(url)
63
+ @history = []
64
+ reset
65
+ end
66
+
67
+ # combines the url given with the @base given, sanitizes
68
+ # the result a bit.
69
+
70
+ def with_base(url = '/')
71
+ url = url.to_s.squeeze('/')
72
+ if @base
73
+ unless url[0...@base.size] == @base
74
+ url = [@base, url].join('/')
75
+ end
76
+ end
77
+ url.strip.squeeze('/')
78
+ end
79
+
80
+ # reset your session
81
+
82
+ def reset(url = @cookie_url)
83
+ @cookie = obtain_cookie( with_base(url) )
84
+ end
85
+
86
+ # just get a cookie, doesn't reset your session
87
+
88
+ def obtain_cookie(url = @cookie_url)
89
+ open(url).meta['set-cookie']
90
+ end
91
+
92
+ # our custom little open, take into account parameters and
93
+ # the port the server is running on
94
+ # the parameters are used for the session but could use
95
+ # any headers you wanna use for the request
96
+
97
+ def open url, hash = {}
98
+ unless @history.empty?
99
+ hash = {'HTTP_REFERER' => @history.last}.merge(hash)
100
+ end
101
+ url = with_base(url)
102
+ uri = "http://localhost:#{Global.port}#{url}"
103
+ puts "GET: #{uri}"
104
+ result = Kernel.open(uri, hash)
105
+ @history << url
106
+ result
107
+ end
108
+
109
+ # use Context#open with our cookie
110
+ # you can pass any header you want with an hash
111
+
112
+ def get url = '', headers = {}
113
+ open(url, {'Set-Cookie' => @cookie}.merge(headers)).read
114
+ end
115
+
116
+ # Net::HTTP.post_form with the cookie
117
+ # params are for the POST-parameters
118
+
119
+ def post url_param = '', params = {}, limit = 10
120
+ raise "Too many redirections" if limit <= 0
121
+
122
+ params['Set-Cookie'] = @cookie
123
+ url = "http://localhost:#{Ramaze::Global.port}"
124
+ new = with_base("/#{url_param.gsub(url, '')}")
125
+ url << new
126
+
127
+ uri = URI.parse(url)
128
+ puts "POST: #{uri}"
129
+ res = Net::HTTP.post_form(uri, params)
130
+ @history << uri.path
131
+
132
+ case res
133
+ when Net::HTTPSuccess
134
+ result = res.body.to_s.strip
135
+ result
136
+ when Net::HTTPRedirection
137
+ post(res['location'], params, limit - 1)
138
+ else
139
+ res.error!
140
+ end
141
+ end
142
+
143
+ # like post, but seval the returned string
144
+ # very comfortable if you just do {'foo' => 'bar'}.inspect in your template
145
+ # and in your specs you can
146
+ # epost('/foo').should == {'foo' => 'bar'}
147
+
148
+ def epost opt = '', params = {}
149
+ seval(post(opt, params))
150
+ end
151
+
152
+ # like get, but seval the returned string
153
+ # very comfortable if you just do {'foo' => 'bar'}.inspect in your template
154
+ # and in your specs you can
155
+ # eget('/foo').should == {'foo' => 'bar'}
156
+
157
+ def eget opt = ''
158
+ seval(get(opt))
159
+ end
160
+
161
+ # a very simple wrapper for eval that returns the
162
+ # error-message instead of the result of the eval
163
+ # in case there are errors.
164
+
165
+ def seval(string)
166
+ eval(string)
167
+ rescue Object => ex
168
+ ex.message
169
+ end
170
+ end
171
+
172
+ module Spec::Runner::ContextEval::ModuleMethods
173
+
174
+ # start up ramaze with a given hash of options
175
+ # that will be merged with the default-options.
176
+
177
+ def ramaze_start hash = {}
178
+ options = {
179
+ :mode => :debug,
180
+ :adapter => :webrick,
181
+ :run_loose => true,
182
+ :error_page => false,
183
+ :port => 7007,
184
+ :host => '127.0.0.1',
185
+ :force => true,
186
+ :force_setup => true,
187
+ }.merge(hash)
188
+
189
+ Ramaze.start(options)
190
+ end
191
+
192
+ alias ramaze ramaze_start
193
+
194
+ # shutdown ramaze, this is not implemeted yet
195
+ # (and might never be due to limited possibilites)
196
+
197
+ def ramaze_teardown
198
+ #Ramaze.teardown
199
+ end
200
+ end
201
+
202
+
203
+ # require each of the following and rescue LoadError, telling you why it failed.
204
+
205
+ def testcase_requires(*following)
206
+ following.each do |file|
207
+ require(file.to_s)
208
+ end
209
+ rescue LoadError => ex
210
+ puts ex
211
+ puts "Can't run #{$0}: #{ex}"
212
+ puts "Usually you should not worry about this failure, just install the"
213
+ puts "library and try again (if you want to use that featureit later on)"
214
+ exit
215
+ end
@@ -0,0 +1,24 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/spec_helper'
5
+
6
+ testcase_requires 'mongrel'
7
+
8
+ include Ramaze
9
+
10
+ class TCAdapterController < Template::Ramaze
11
+ def index
12
+ "The index"
13
+ end
14
+ end
15
+
16
+ context "Mongrel" do
17
+ context "multiple" do
18
+ ramaze :mapping => {'/' => TCAdapterController}, :port => '7001..7003', :adapter => :mongrel
19
+
20
+ specify "simple request" do
21
+ get('/').should == "The index"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,22 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/spec_helper'
5
+
6
+ include Ramaze
7
+
8
+ class TCAdapterController < Template::Ramaze
9
+ def index
10
+ "The index"
11
+ end
12
+ end
13
+
14
+ context "WEBrick" do
15
+ context "multiple" do
16
+ ramaze :mapping => {'/' => TCAdapterController}, :port => '7001..7003', :adapter => :webrick
17
+
18
+ specify "simple request" do
19
+ get('/').should == "The index"
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,79 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/spec_helper'
5
+
6
+ include Ramaze
7
+
8
+ context "MemoryCache" do
9
+ cache = MemoryCache.new
10
+
11
+ specify "delete" do
12
+ cache.delete(:one)
13
+ cache.delete(:two)
14
+ end
15
+
16
+ specify "set keys" do
17
+ (cache[:one] = 'eins').should == "eins"
18
+ (cache[:two] = 'zwei').should == "zwei"
19
+ end
20
+
21
+ specify "read keys" do
22
+ cache[:one].should == 'eins'
23
+ cache[:two].should == 'zwei'
24
+ end
25
+
26
+ specify "values_at" do
27
+ cache.values_at(:one, :two).should == %w[eins zwei]
28
+ end
29
+ end
30
+
31
+ context "YAMLStoreCache" do
32
+ cache = YAMLStoreCache.new
33
+
34
+ specify "delete" do
35
+ cache.delete(:one)
36
+ cache.delete(:two)
37
+ end
38
+
39
+ specify "set keys" do
40
+ (cache[:one] = 'eins').should == "eins"
41
+ (cache[:two] = 'zwei').should == "zwei"
42
+ end
43
+
44
+ specify "read keys" do
45
+ cache[:one].should == 'eins'
46
+ cache[:two].should == 'zwei'
47
+ end
48
+
49
+ specify "values_at" do
50
+ cache.values_at(:one, :two).should == %w[eins zwei]
51
+ end
52
+ end
53
+
54
+ begin
55
+ context "MemcachedCache" do
56
+ cache = MemcachedCache.new
57
+
58
+ specify "delete" do
59
+ cache.delete(:one)
60
+ cache.delete(:two)
61
+ end
62
+
63
+ specify "set keys" do
64
+ (cache[:one] = 'eins').should == "eins"
65
+ (cache[:two] = 'zwei').should == "zwei"
66
+ end
67
+
68
+ specify "read keys" do
69
+ cache[:one].should == 'eins'
70
+ cache[:two].should == 'zwei'
71
+ end
72
+
73
+ specify "values_at" do
74
+ cache.values_at(:one, :two).should == %w[eins zwei]
75
+ end
76
+ end
77
+ rescue LoadError
78
+ puts "cannot run test for memcached"
79
+ end
@@ -0,0 +1,39 @@
1
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
2
+ # All files in this distribution are subject to the terms of the Ruby license.
3
+
4
+ require 'spec/spec_helper'
5
+
6
+ include Ramaze
7
+
8
+ class TCControllerRamazeController < Template::Ramaze
9
+ def index
10
+ "The index"
11
+ end
12
+
13
+ def sum first, second
14
+ first.to_i + second.to_i
15
+ end
16
+
17
+ private
18
+
19
+ def test_private
20
+ end
21
+ end
22
+
23
+ context "Testing Ramaze" do
24
+ ramaze(:mapping => {'/ramaze' => TCControllerRamazeController})
25
+
26
+ specify "simple request to index" do
27
+ get('/ramaze').should == 'The index'
28
+ end
29
+
30
+ specify "summing two values" do
31
+ get('/ramaze/sum/1/2').should == '3'
32
+ end
33
+
34
+ specify "should not respond to private methods" do
35
+ %w[ session request response find_template handle_request trait test_private ].each do |action|
36
+ lambda{get("/ramaze/#{action}")}.should_raise OpenURI::HTTPError
37
+ end
38
+ end
39
+ end