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,360 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'rake/clean'
4
+ require 'rake/packagetask'
5
+ require 'rake/gempackagetask'
6
+ require 'rake/rdoctask'
7
+ require 'rake/contrib/rubyforgepublisher'
8
+ require 'fileutils'
9
+ require 'pp'
10
+ include FileUtils
11
+
12
+ $:.unshift File.join(File.dirname(__FILE__), "lib")
13
+ require 'ramaze/version'
14
+
15
+ AUTHOR = "manveru"
16
+ EMAIL = "m.fellinger@gmail.com"
17
+ DESCRIPTION = "Ramaze tries to be a very simple Webframework without the voodoo"
18
+ HOMEPATH = 'http://ramaze.rubyforge.org'
19
+ BIN_FILES = %w( ramaze )
20
+
21
+ BASEDIR = File.dirname(__FILE__)
22
+
23
+ NAME = "ramaze"
24
+ REV = File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
25
+ VERS = ENV['VERSION'] || (Ramaze::VERSION + (REV ? ".#{REV}" : ""))
26
+ CLEAN.include %w[
27
+ **/.*.sw?
28
+ *.gem
29
+ .config
30
+ **/*~
31
+ **/{data.db,cache.yaml}
32
+ pkg
33
+ rdoc
34
+ ]
35
+ RDOC_OPTS = %w[
36
+ --all
37
+ --quiet
38
+ --op rdoc
39
+ --line-numbers
40
+ --inline-source
41
+ --main "doc/README"
42
+ --opname index.html
43
+ --title "Ramaze documentation"
44
+ --exclude "^(_darcs|spec|examples|bin|pkg)/"
45
+ --exclude "lib/proto"
46
+ --include "doc"
47
+ --accessor "trait"
48
+ ]
49
+
50
+ POST_INSTALL_MESSAGE = %{
51
+ #{'=' * 60}
52
+
53
+ Thank you for installing Ramaze!
54
+ You can now do following:
55
+
56
+ * Create a new project using the `ramaze' command:
57
+ ramaze --create yourproject
58
+
59
+ * Browse and try the Examples in
60
+ #{File.join(Gem.path, 'gems', 'ramaze-' + VERS, 'examples')}
61
+
62
+ #{'=' * 60}
63
+ }.strip
64
+
65
+ desc "Packages up ramaze gem."
66
+ task :default => [:test]
67
+
68
+ desc "clean up temporary files and gems"
69
+ task :package => [:clean]
70
+
71
+ spec =
72
+ Gem::Specification.new do |s|
73
+ s.name = NAME
74
+ s.version = VERS
75
+ s.platform = Gem::Platform::RUBY
76
+ s.has_rdoc = true
77
+ s.extra_rdoc_files = ["doc/TODO", "doc/README", "doc/CHANGELOG"]
78
+ s.rdoc_options += RDOC_OPTS
79
+ s.summary = DESCRIPTION
80
+ s.description = DESCRIPTION
81
+ s.author = AUTHOR
82
+ s.email = EMAIL
83
+ s.homepage = HOMEPATH
84
+ s.executables = BIN_FILES
85
+ s.bindir = "bin"
86
+ s.require_path = "lib"
87
+ s.post_install_message = POST_INSTALL_MESSAGE
88
+
89
+ s.add_dependency('rake', '>=0.7.1')
90
+ s.add_dependency('rspec', '>=0.7.5.1')
91
+ #s.required_ruby_version = '>= 1.8.2'
92
+
93
+ s.files = %w(doc/COPYING doc/TODO doc/README doc/CHANGELOG Rakefile) +
94
+ Dir["{examples,bin,doc,spec,lib}/**/*"]
95
+
96
+ # s.extensions = FileList["ext/**/extconf.rb"].to_a
97
+ end
98
+
99
+ Rake::GemPackageTask.new(spec) do |p|
100
+ p.need_tar = true
101
+ p.gem_spec = spec
102
+ end
103
+
104
+ desc "package and install ramaze"
105
+ task :install do
106
+ name = "#{NAME}-#{VERS}.gem"
107
+ sh %{rake package}
108
+ sh %{sudo gem install pkg/#{name}}
109
+ end
110
+
111
+ desc "uninstall the ramaze gem"
112
+ task :uninstall => [:clean] do
113
+ sh %{sudo gem uninstall #{NAME}}
114
+ end
115
+
116
+ desc "sanitize the code and darcs record"
117
+ task :record => ['fix-end-spaces', 'add-copyright'] do
118
+ system("darcs", "record")
119
+ end
120
+
121
+ desc "create the doc/changes.xml"
122
+ task 'changes-xml' do
123
+ File.open('doc/changes.xml', 'w+') do |f|
124
+ f.print(`darcs changes --xml`)
125
+ end
126
+ end
127
+
128
+ desc "create the doc/changes.txt"
129
+ task 'changes-text' do
130
+ File.open('doc/changes.txt', 'w+') do |f|
131
+ f.print(`darcs changes --human-readable`)
132
+ end
133
+ end
134
+
135
+ desc "create both doc/changes.txt and doc/changes.xml"
136
+ task :changes => ['changes-xml', 'changes-text'] do
137
+ puts(`darcs changes`.split("\n").first(25))
138
+ end
139
+
140
+ desc "copy the doc/changes.txt to doc/CHANGELOG"
141
+ task :changelog => :changes do
142
+ cp 'doc/changes.txt', 'doc/CHANGELOG'
143
+ end
144
+
145
+ desc "add copyright to all .rb files in the distribution"
146
+ task 'add-copyright' do
147
+ puts "adding copyright to files that don't have it currently"
148
+ Dir['{lib,test}/**/*{.rb}'].each do |file|
149
+ lines = File.readlines(file).map{|l| l.chomp}
150
+ copyright = [
151
+ "# Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com",
152
+ "# All files in this distribution are subject to the terms of the Ruby license."
153
+ ]
154
+ unless lines.first(2) == copyright
155
+ puts "fixing #{file}"
156
+ File.open(file, 'w+') do |f|
157
+ (copyright + lines).each do |line|
158
+ f.puts(line)
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
164
+
165
+ task :rcov_dir do
166
+ mkdir_p 'doc/output/tools/rcov/'
167
+ end
168
+
169
+ require 'spec/rake/spectask'
170
+ desc "Generate HTML coverage report"
171
+ Spec::Rake::SpecTask.new(:rcov_summary => :rcov_dir) do |t|
172
+ t.spec_files = FileList['test/tc_adapter.rb']
173
+ t.spec_opts = ["--format", "html"]
174
+ t.out = 'doc/output/tools/rcov/test.html'
175
+ t.fail_on_error = false
176
+ end
177
+
178
+ desc "run the specs and clean up afterwards"
179
+ task :test do
180
+ sh "ruby #{File.dirname(__FILE__)}/spec/spec_all.rb"
181
+ sh "rake clean"
182
+ end
183
+
184
+ desc "generate rdoc"
185
+ task :rdoc => :clean do
186
+ sh "rdoc #{RDOC_OPTS.join(' ')} lib doc doc/README doc/CHANGELOG"
187
+ end
188
+
189
+ desc "generate improved allison-rdoc"
190
+ task :allison => :clean do
191
+ opts = RDOC_OPTS
192
+ opts << %w[--template 'doc/allison/allison.rb']
193
+ sh "rdoc #{opts.join(' ')} lib doc/TODO doc/README doc/CHANGELOG"
194
+ end
195
+
196
+ desc "create bzip2 and tarball"
197
+ task :distribute => :gem do
198
+ sh "rm -rf pkg/ramaze-#{VERS}"
199
+ sh "mkdir -p pkg/ramaze-#{VERS}"
200
+ sh "cp -r {bin,doc,lib,examples,spec,Rakefile,setup.rb} pkg/ramaze-#{VERS}/"
201
+
202
+ Dir.chdir('pkg') do |pwd|
203
+ sh "tar -zcvf ramaze-#{VERS}.tar.gz ramaze-#{VERS}"
204
+ sh "tar -jcvf ramaze-#{VERS}.tar.bz2 ramaze-#{VERS}"
205
+ end
206
+
207
+ sh "rm -rf pkg/ramaze-#{VERS}"
208
+ end
209
+
210
+ desc "doc/README to html"
211
+ Rake::RDocTask.new('gen-readme2html') do |rd|
212
+ rd.options = %w[
213
+ --quiet
214
+ --opname readme.html
215
+ ]
216
+
217
+ rd.rdoc_dir = 'readme'
218
+ rd.rdoc_files = ['doc/README']
219
+ rd.main = 'doc/README'
220
+ rd.title = "Ramaze documentation"
221
+ end
222
+
223
+ desc "doc/README to doc/README.html"
224
+ task 'readme2html' => 'gen-readme2html' do
225
+ FileUtils.cp('readme/files/doc/README.html', 'doc/README.html')
226
+ FileUtils.rm_rf('readme')
227
+ end
228
+
229
+ desc "list all still undocumented methods"
230
+ task :undocumented do
231
+ files = Dir[File.join('lib', '**', '*.rb')]
232
+
233
+ files.each do |file|
234
+ puts file
235
+ lines_till_here = []
236
+ lines = File.readlines(file).map{|line| line.chomp}
237
+
238
+ lines.each do |line|
239
+ if line =~ /def /
240
+ indent = line =~ /[^\s]/
241
+ e = lines_till_here.reverse.find{|l| l =~ /end/}
242
+ i = lines_till_here.reverse.index(e)
243
+ lines_till_here = lines_till_here[-(i + 1)..-1] if i
244
+ unless lines_till_here.any?{|l| l =~ /^\s*#/} or lines_till_here.empty?
245
+ puts lines_till_here
246
+ puts line
247
+ puts "#{' ' * indent}..."
248
+ puts e
249
+ end
250
+ lines_till_here.clear
251
+ end
252
+ lines_till_here << line
253
+ end
254
+ end
255
+ end
256
+
257
+ desc "show a todolist from all the TODO tags in the source"
258
+ task :todo do
259
+ files = Dir[File.join(BASEDIR, '{lib,test}', '**/*.rb')]
260
+
261
+ files.each do |file|
262
+ lastline = todo = comment = long_comment = false
263
+
264
+ File.readlines(file).each_with_index do |line, lineno|
265
+ lineno += 1
266
+ comment = line =~ /^\s*?#.*?$/
267
+ long_comment = line =~ /^=begin/
268
+ long_comment = line =~ /^=end/
269
+ todo = true if line =~ /TODO/ and (long_comment or comment)
270
+ todo = false if line.gsub('#', '').strip.empty?
271
+ todo = false unless comment or long_comment
272
+ if todo
273
+ unless lastline and lastline + 1 == lineno
274
+ puts
275
+ puts "vim #{file} +#{lineno}"
276
+ end
277
+
278
+ l = line.strip.gsub(/^#\s*/, '')
279
+ print ' ' unless l =~ /^-/
280
+ puts l
281
+ lastline = lineno
282
+ end
283
+ end
284
+ end
285
+ end
286
+
287
+ desc "generate doc/TODO from the TODO tags in the source"
288
+ task 'todolist' do
289
+ list = `rake todo`.split("\n")[2..-1]
290
+ tasks = {}
291
+ current = nil
292
+
293
+ list.map do |line|
294
+ if line =~ /TODO/ or line.empty?
295
+ elsif line =~ /^vim/
296
+ current = line.split[1]
297
+ tasks[current] = []
298
+ else
299
+ tasks[current] << line
300
+ end
301
+ end
302
+
303
+ lines = tasks.map{ |name, items| [name, items, ''] }.flatten
304
+ lines.pop
305
+
306
+ File.open(File.join('doc', 'TODO'), 'w+') do |f|
307
+ f.puts "This list is programmaticly generated by `rake todolist`"
308
+ f.puts "If you want to add/remove items from the list, change them at the"
309
+ f.puts "position specified in the list."
310
+ f.puts
311
+ f.puts(lines)
312
+ end
313
+ end
314
+
315
+ desc "show how many patches we made so far"
316
+ task :patchsize do
317
+ size = `darcs changes`.split("\n").reject{|l| l =~ /^\s/ or l.empty?}.size
318
+ puts "currently we got #{size} patches"
319
+ puts "shall i now play some Death-Metal for you?" if size == 666
320
+ end
321
+
322
+ desc "remove those annoying spaces at the end of lines"
323
+ task 'fix-end-spaces' do
324
+ Dir['{lib,test}/**/*.rb'].each do |file|
325
+ lines = File.readlines(file)
326
+ new = lines.dup
327
+ lines.each_with_index do |line, i|
328
+ if line =~ /\s+\n/
329
+ puts "fixing #{file}:#{i + 1}"
330
+ p line
331
+ new[i] = line.rstrip
332
+ end
333
+ end
334
+
335
+ unless new == lines
336
+ File.open(file, 'w+') do |f|
337
+ new.each do |line|
338
+ f.puts(line)
339
+ end
340
+ end
341
+ end
342
+ end
343
+ end
344
+
345
+ desc "opens a simple readline that makes making requests easier"
346
+ task 'request' do
347
+ ARGV.clear
348
+ require 'open-uri'
349
+ require 'pp'
350
+
351
+ loop do
352
+ print 'do request? [enter] '
353
+ gets
354
+ begin
355
+ pp open('http://localhost:7000/xxx').read
356
+ rescue Object => ex
357
+ puts ex
358
+ end
359
+ end
360
+ end
@@ -0,0 +1,152 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # = Synopsis
4
+ #
5
+ # The commandline tool to control ramaze
6
+ #
7
+ # = Usage
8
+ #
9
+ # ramaze [switches] startfile [arguments]
10
+ #
11
+ # --create:: create a new application based on proto
12
+ #
13
+ # -m, --mongrel:: use mongrel to process requests
14
+ # -w, --webrick:: the default
15
+ #
16
+ # -b, --benchmark:: inform about :error, :info, :debug, :benchmark
17
+ # -d, --debug:: inform about :error, info, :debug
18
+ # -t, --stage:: inform about :info, :error
19
+ # -l, --live:: inform about :error
20
+ # -s, --silent:: inform about nothing
21
+ #
22
+ # -a, --autoreload:: Set the interval at which autoreload searches
23
+ # for changes in your files
24
+ #
25
+ # -o, --host:: which host should ramaze listen for requests
26
+ # default is 0.0.0.0
27
+ # -p, --port:: what port should ramaze use, like 80 or 7000..7005
28
+ # default is 7000
29
+ #
30
+ # -n, --no-errorpage:: don't use the default errorpage of ramaze
31
+ # helpful if you want to make sure noone can
32
+ # ever see your code by accident or for testing
33
+ # --template-root:: set a custom template-root for the whole
34
+ # application, please note that ~ is not
35
+ # expanded to your home-directory
36
+ # -a, --autoreload=N:: set how frequent ramaze should search for
37
+ # updated files in your application
38
+ # -r, --run-loose:: don't take control after startup.
39
+ # this is useful for testcases.
40
+ # --cache:: use the simple caching based on the signature
41
+ # of your requests (experimental)
42
+ # --tidy:: run Tool::Tidy over text/html output
43
+ #
44
+ # -h, --help:: print this help
45
+ # -v, --version:: print the version
46
+ # -c, --copyright:: print the copyright
47
+ #
48
+ # Please report bugs to <m.fellinger at gmail.com>
49
+ #
50
+ # = Copyright
51
+ #
52
+ # Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
53
+ # All files in this distribution are subject to the terms of the Ruby license.
54
+
55
+ require 'ramaze'
56
+
57
+ runner = ARGV.find{|file| File.file?(file)} || 'main.rb'
58
+
59
+ begin
60
+ require 'getoptlong'
61
+ require 'rdoc/ri/ri_paths'
62
+ require 'rdoc/usage'
63
+
64
+ # memo:
65
+ # REQUIRED_ARGUMENT, NO_ARGUMENT, OPTIONAL_ARGUMENT
66
+
67
+ opts = GetoptLong.new *[
68
+ [ '--create', GetoptLong::REQUIRED_ARGUMENT ],
69
+ [ '--mongrel', '-m', GetoptLong::NO_ARGUMENT ],
70
+ [ '--webrick', '-w', GetoptLong::NO_ARGUMENT ],
71
+
72
+ [ '--debug', '-d', GetoptLong::NO_ARGUMENT ],
73
+ [ '--stage', '-t', GetoptLong::NO_ARGUMENT ],
74
+ [ '--live', '-l', GetoptLong::NO_ARGUMENT ],
75
+ [ '--silent', '-s', GetoptLong::NO_ARGUMENT ],
76
+
77
+ [ '--host', '-o', GetoptLong::REQUIRED_ARGUMENT ],
78
+ [ '--port', '-p', GetoptLong::REQUIRED_ARGUMENT ],
79
+
80
+ [ '--benchmark', '-b', GetoptLong::NO_ARGUMENT ],
81
+ [ '--no-errorpage', '-n', GetoptLong::NO_ARGUMENT ],
82
+ [ '--template-root', GetoptLong::REQUIRED_ARGUMENT ],
83
+ [ '--autoreload', '-a', GetoptLong::REQUIRED_ARGUMENT ],
84
+ [ '--run-loose', '-r', GetoptLong::NO_ARGUMENT ],
85
+
86
+ [ '--console', '-c', GetoptLong::NO_ARGUMENT ],
87
+ [ '--help', '-h', GetoptLong::NO_ARGUMENT ],
88
+ [ '--version', '-v', GetoptLong::NO_ARGUMENT ],
89
+ ]
90
+
91
+ options = {:force_setup => true}
92
+
93
+ create = lambda do |app|
94
+ require 'ramaze/tool/create'
95
+ Ramaze::Tool::Create.create(app)
96
+ exit
97
+ end
98
+
99
+ opts.each do |opt, arg|
100
+ sopt = opt[2..-1].gsub('-', '_').intern
101
+
102
+ options[:inform_tags] = Set.new([:debug, :info, :error])
103
+
104
+ case sopt
105
+ when :create : create[arg]
106
+ when :help : RDoc::usage('Usage')
107
+ when :version : puts("ramaze #{Ramaze::Version}")
108
+ when :copyright : RDoc::usage('Copyright')
109
+ when :mongrel, :webrick : options[:adapter] = sopt
110
+
111
+ when :benchmark : options[:inform_tags] << :benchmark
112
+ when :debug : options
113
+ when :stage : options[:inform_tags].subtract [:debug]
114
+ when :live : options[:inform_tags].subtract [:info, :debug]
115
+ when :silent : options[:inform_tags].subtract options[:inform_tags]
116
+
117
+ when :host : options[:host] = arg
118
+ when :port : options[:port] = arg
119
+
120
+ when :no_errorpage : options[:error_page] = false
121
+ when :template_root : options[:template_root] = arg
122
+ when :autoreload : options[:autoreload] = arg.to_i
123
+ when :run_loose : options[:run_loose] = true
124
+ end
125
+ end
126
+
127
+ puts "running #{File.expand_path(runner)}"
128
+ require runner
129
+
130
+ if options.delete(:console)
131
+ options.merge!(:run_loose => true)
132
+
133
+ ARGV.clear # Avoid passing args to IRB
134
+
135
+ Ramaze.start(options)
136
+
137
+ require 'irb'
138
+ require 'irb/completion'
139
+
140
+ def exit
141
+ exit!
142
+ end
143
+
144
+ ENV['IRBRC'] = ".irbrc" if File.exists? ".irbrc"
145
+ IRB.start
146
+ exit!
147
+ else
148
+ Ramaze.start(options)
149
+ end
150
+ rescue LoadError => ex
151
+ puts ex
152
+ end