nitro 0.8.0 → 0.9.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (198) hide show
  1. data/AUTHORS +3 -4
  2. data/ChangeLog +418 -0
  3. data/LICENSE +1 -1
  4. data/README +157 -89
  5. data/RELEASES +50 -0
  6. data/Rakefile +5 -7
  7. data/benchmark/nitro/bench.rb +5 -0
  8. data/benchmark/nitro/simple-webrick-n-200.txt +44 -0
  9. data/benchmark/nitro/static-webrick-n-200.txt +43 -0
  10. data/benchmark/nitro/tiny-lhttpd-n-200-c-5.txt +43 -0
  11. data/benchmark/nitro/tiny-webrick-n-200-c-5.txt +44 -0
  12. data/benchmark/nitro/tiny-webrick-n-200.txt +44 -0
  13. data/benchmark/nitro/tiny2-webrick-n-200.txt +44 -0
  14. data/{lib/nitro/server/cluster.rb → bin/cluster} +26 -30
  15. data/bin/proto/README +2 -2
  16. data/bin/proto/{apache.conf → conf/apache.conf} +0 -0
  17. data/bin/proto/conf/app.conf.rb +22 -0
  18. data/bin/proto/conf/lhttpd.conf +236 -0
  19. data/bin/proto/ctl +4 -0
  20. data/bin/proto/lib/README +5 -0
  21. data/bin/proto/log/README +3 -0
  22. data/bin/proto/root/fcgi.rb +6 -0
  23. data/bin/proto/root/index.xhtml +65 -7
  24. data/bin/proto/root/m/nitro.png +0 -0
  25. data/examples/blog/README +7 -5
  26. data/examples/blog/{apache.conf → conf/apache.conf} +0 -0
  27. data/examples/blog/conf/app.conf.rb +56 -0
  28. data/examples/blog/conf/lhttpd.conf +236 -0
  29. data/examples/blog/ctl +4 -0
  30. data/examples/blog/lib/blog.rb +11 -136
  31. data/examples/blog/lib/blog/controller.rb +99 -0
  32. data/examples/blog/lib/blog/model.rb +39 -0
  33. data/examples/blog/log/README +3 -0
  34. data/examples/blog/root/comments.xhtml +2 -2
  35. data/examples/blog/root/fcgi.rb +6 -0
  36. data/examples/blog/root/index.xhtml +4 -5
  37. data/examples/blog/root/login.xhtml +2 -2
  38. data/examples/blog/root/style.xsl +9 -9
  39. data/examples/blog/root/view_entry.xhtml +2 -2
  40. data/examples/flash/conf/app.conf.rb +23 -0
  41. data/examples/flash/ctl +4 -0
  42. data/examples/flash/log/README +3 -0
  43. data/examples/flash/root/index.xhtml +0 -9
  44. data/examples/flash/root/show_inline_text.xhtml +10 -5
  45. data/examples/no_xsl_blog/README +12 -0
  46. data/examples/no_xsl_blog/conf/apache.conf +0 -0
  47. data/examples/no_xsl_blog/conf/app.conf.rb +57 -0
  48. data/examples/no_xsl_blog/conf/lhttpd.conf +236 -0
  49. data/examples/no_xsl_blog/ctl +4 -0
  50. data/examples/no_xsl_blog/lib/blog.rb +20 -0
  51. data/examples/no_xsl_blog/lib/blog/controller.rb +102 -0
  52. data/examples/no_xsl_blog/lib/blog/model.rb +39 -0
  53. data/examples/no_xsl_blog/lib/blog/template.rb +134 -0
  54. data/examples/no_xsl_blog/log/README +3 -0
  55. data/examples/no_xsl_blog/root/comments.xhtml +41 -0
  56. data/examples/no_xsl_blog/root/entry_form.xhtml +22 -0
  57. data/examples/no_xsl_blog/root/fcgi.rb +6 -0
  58. data/examples/no_xsl_blog/root/index.xhtml +39 -0
  59. data/examples/no_xsl_blog/root/login.xhtml +21 -0
  60. data/examples/no_xsl_blog/root/m/bubbles.gif +0 -0
  61. data/examples/no_xsl_blog/root/m/comments_curve.gif +0 -0
  62. data/examples/no_xsl_blog/root/m/down.gif +0 -0
  63. data/examples/no_xsl_blog/root/m/footer_bg.gif +0 -0
  64. data/examples/no_xsl_blog/root/m/garrow.gif +0 -0
  65. data/examples/no_xsl_blog/root/m/gbull.gif +0 -0
  66. data/examples/no_xsl_blog/root/m/grbull.gif +0 -0
  67. data/examples/no_xsl_blog/root/m/h1_bg.gif +0 -0
  68. data/examples/no_xsl_blog/root/m/header_bg.gif +0 -0
  69. data/examples/no_xsl_blog/root/m/nitro.gif +0 -0
  70. data/examples/no_xsl_blog/root/m/obull.gif +0 -0
  71. data/examples/no_xsl_blog/root/m/page_bg.gif +0 -0
  72. data/examples/no_xsl_blog/root/m/rss.gif +0 -0
  73. data/examples/no_xsl_blog/root/m/side_title_bg.gif +0 -0
  74. data/examples/no_xsl_blog/root/m/sidebar_bg.gif +0 -0
  75. data/examples/no_xsl_blog/root/recent_posts.xhtml +14 -0
  76. data/examples/no_xsl_blog/root/style.css +301 -0
  77. data/examples/no_xsl_blog/root/view_entry.xhtml +25 -0
  78. data/examples/no_xsl_blog/root/view_entry.xml +12 -0
  79. data/examples/og/run.rb +2 -2
  80. data/examples/tiny/README +2 -2
  81. data/examples/tiny/conf/apache.conf +5 -0
  82. data/examples/tiny/conf/app.conf.rb +21 -0
  83. data/examples/tiny/conf/lhttpd.conf +236 -0
  84. data/examples/tiny/ctl +4 -0
  85. data/examples/tiny/log/README +3 -0
  86. data/examples/tiny/root/fcgi.rb +6 -0
  87. data/examples/tiny/root/index.xhtml +7 -4
  88. data/examples/tiny/root/nitro.png +0 -0
  89. data/lib/glue.rb +13 -9
  90. data/lib/glue/array.rb +1 -1
  91. data/lib/glue/cache.rb +1 -1
  92. data/lib/glue/flexob.rb +12 -0
  93. data/lib/glue/hash.rb +1 -1
  94. data/lib/glue/inflector.rb +2 -2
  95. data/lib/glue/logger.rb +4 -8
  96. data/lib/glue/misc.rb +14 -0
  97. data/lib/glue/number.rb +1 -1
  98. data/lib/glue/object.rb +26 -0
  99. data/lib/glue/pool.rb +1 -1
  100. data/lib/glue/property.rb +84 -91
  101. data/lib/glue/string.rb +1 -1
  102. data/lib/glue/time.rb +1 -1
  103. data/lib/glue/validation.rb +1 -1
  104. data/lib/nitro.rb +18 -6
  105. data/lib/nitro/adaptors/cgi.rb +291 -0
  106. data/lib/nitro/adaptors/fastcgi.rb +42 -0
  107. data/lib/nitro/adaptors/runner.rb +123 -0
  108. data/lib/nitro/adaptors/webrick.rb +110 -0
  109. data/lib/nitro/buffering.rb +43 -0
  110. data/lib/nitro/builders/form.rb +1 -1
  111. data/lib/nitro/builders/rss.rb +1 -1
  112. data/{bin → lib/nitro}/cluster.rb +26 -30
  113. data/lib/nitro/context.rb +82 -0
  114. data/lib/nitro/controller.rb +50 -0
  115. data/lib/nitro/cookie.rb +46 -0
  116. data/lib/nitro/dispatcher.rb +105 -0
  117. data/lib/nitro/filters.rb +9 -10
  118. data/lib/nitro/localization.rb +42 -0
  119. data/lib/nitro/mail.rb +11 -14
  120. data/lib/nitro/render.rb +275 -0
  121. data/lib/nitro/request.rb +128 -0
  122. data/lib/nitro/response.rb +38 -0
  123. data/lib/nitro/scaffold.rb +11 -11
  124. data/lib/nitro/session.rb +84 -0
  125. data/lib/nitro/{server/shaders.rb → shaders.rb} +56 -36
  126. data/lib/nitro/ui/pager.rb +23 -26
  127. data/lib/nitro/{sitemap.rb → ui/sitemap.rb} +4 -12
  128. data/lib/nitro/uri.rb +1 -1
  129. data/lib/nitro/version.rb +10 -8
  130. data/lib/og.rb +66 -65
  131. data/lib/og/backend.rb +1 -1
  132. data/lib/og/backends/mysql.rb +48 -52
  133. data/lib/og/backends/psql.rb +34 -37
  134. data/lib/og/connection.rb +15 -15
  135. data/lib/og/enchant.rb +16 -9
  136. data/lib/og/meta.rb +127 -54
  137. data/lib/og/mock.rb +18 -18
  138. data/lib/og/version.rb +6 -4
  139. data/lib/parts/content.rb +4 -8
  140. data/test/glue/tc_logger.rb +3 -0
  141. data/test/glue/tc_property.rb +19 -3
  142. data/test/nitro/adaptors/tc_cgi.rb +63 -0
  143. data/test/nitro/adaptors/tc_webrick.rb +15 -0
  144. data/test/nitro/builders/tc_xml.rb +2 -2
  145. data/test/nitro/tc_context.rb +13 -0
  146. data/test/nitro/tc_controller.rb +47 -0
  147. data/test/nitro/tc_dispatcher.rb +64 -0
  148. data/test/nitro/tc_session.rb +20 -0
  149. data/test/nitro/{tc_sitemap.rb → ui/tc_sitemap.rb} +1 -1
  150. data/test/root/blog/list.xhtml +6 -0
  151. data/test/tc_og.rb +41 -4
  152. metadata +115 -59
  153. data/bin/proto/app.rb +0 -20
  154. data/bin/proto/config.rb +0 -77
  155. data/examples/blog/app.rb +0 -21
  156. data/examples/blog/config.rb +0 -95
  157. data/examples/blog/env.rb +0 -22
  158. data/examples/flash/README +0 -34
  159. data/examples/flash/app.rb +0 -20
  160. data/examples/flash/config.rb +0 -38
  161. data/examples/flash/lib/flash.rb +0 -40
  162. data/examples/flash/tmp.swf +0 -0
  163. data/examples/tiny/app.rb +0 -19
  164. data/examples/tiny/config.rb +0 -29
  165. data/examples/tiny/root/nitro-small.png +0 -0
  166. data/lib/nitro/application.rb +0 -217
  167. data/lib/nitro/config.rb +0 -128
  168. data/lib/nitro/events.rb +0 -122
  169. data/lib/nitro/html.rb +0 -151
  170. data/lib/nitro/http.rb +0 -102
  171. data/lib/nitro/l10n.rb +0 -30
  172. data/lib/nitro/server.rb +0 -59
  173. data/lib/nitro/server/appserver.rb +0 -67
  174. data/lib/nitro/server/cookie.rb +0 -87
  175. data/lib/nitro/server/dispatcher.rb +0 -62
  176. data/lib/nitro/server/filters.rb +0 -75
  177. data/lib/nitro/server/filters/autologin.rb +0 -51
  178. data/lib/nitro/server/fragment.rb +0 -70
  179. data/lib/nitro/server/handlers.rb +0 -127
  180. data/lib/nitro/server/render.rb +0 -426
  181. data/lib/nitro/server/request.rb +0 -658
  182. data/lib/nitro/server/requestpart.rb +0 -54
  183. data/lib/nitro/server/script.rb +0 -387
  184. data/lib/nitro/server/server.rb +0 -57
  185. data/lib/nitro/server/session.rb +0 -220
  186. data/lib/nitro/server/user.rb +0 -46
  187. data/lib/nitro/server/webrick.rb +0 -180
  188. data/lib/nitro/service.rb +0 -26
  189. data/lib/xsl/ui.xsl +0 -51
  190. data/lib/xsl/xforms.xsl +0 -28
  191. data/test/nitro/server/tc_cookie.rb +0 -34
  192. data/test/nitro/server/tc_filters.rb +0 -38
  193. data/test/nitro/server/tc_request.rb +0 -70
  194. data/test/nitro/server/tc_requestpart.rb +0 -28
  195. data/test/nitro/server/tc_session.rb +0 -34
  196. data/test/nitro/tc_events.rb +0 -44
  197. data/test/nitro/tc_html.rb +0 -79
  198. data/test/nitro/tc_http.rb +0 -18
@@ -0,0 +1,39 @@
1
+ # * George Moschovitis <gm@navel.gr>
2
+ # (c) 2004-2005 Navel, all rights reserved.
3
+ # $Id$
4
+
5
+ require 'parts/content'
6
+
7
+ # The models used in the Blog part.
8
+
9
+ # Forward reference to the Comment definition.
10
+
11
+ class Comment; end
12
+
13
+ # Common properties/methods for the other classes.
14
+ # Since markup is required, automatically handles
15
+ # the markup expanding/compacting for the body.
16
+
17
+ module Common
18
+ include N::BaseContent
19
+ include N::CreateTime
20
+
21
+ prop_accessor :author, String
22
+ validate_value :body
23
+ end
24
+
25
+ # An entry in the Blog.
26
+
27
+ class BlogEntry
28
+ include Common
29
+ has_many :comments, Comment, :linkback => 'entry_oid'
30
+ validate_value :title, :msg => 'Please provide a title'
31
+ end
32
+
33
+ # A comment to the blog entry.
34
+
35
+ class Comment
36
+ include Common
37
+ belongs_to :entry, BlogEntry
38
+ validate_value :author, :msg => 'Please enter your name'
39
+ end
@@ -0,0 +1,3 @@
1
+ = Logs
2
+
3
+ Various logs come here.
@@ -11,7 +11,7 @@ if comments = @entry.comments
11
11
  #{comment.body}
12
12
  <div class="footer">
13
13
  by #{comment.author} at #{comment.create_time.strftime('%R %p')}
14
- <?r if session['owner'] ?>
14
+ <?r if session[:owner] ?>
15
15
  [<a href="del_comment?oid=#{comment.oid}">del</a>]
16
16
  <?r end ?>
17
17
  </div>
@@ -26,7 +26,7 @@ no comments.
26
26
  <input type="hidden" name="entry_oid" value="#{@entry.oid}" />
27
27
  <p>
28
28
  <b>Your name:</b><br />
29
- <input type="text" name="author" value="#{session['username']}" />
29
+ <input type="text" name="author" value="#{session[:username]}" />
30
30
  <x:error attr="author" />
31
31
  <x:error attr="title" />
32
32
  </p>
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require File.join(File.dirname(__FILE__), '..', 'conf', 'app.conf.rb')
4
+ require 'nitro/adaptors/fastcgi'
5
+
6
+ N::FastCGI.start($conf)
@@ -3,7 +3,6 @@
3
3
  <x:page xmlns:x="http://www.navel.gr/xml/shader.xsd">
4
4
 
5
5
  <x:cell id="main">
6
-
7
6
  <?r
8
7
  if @entries
9
8
  for entry in @entries
@@ -16,7 +15,7 @@
16
15
  <div class="footer">
17
16
  posted by #{entry.author} at <a href="view_entry?oid=#{entry.oid}">#{entry.create_time.strftime('%R %p')}</a> |
18
17
  <a href="view_entry?oid=#{entry.oid}#comments">#{entry.comments_count} comments</a>.
19
- <?r if session['owner'] ?>
18
+ <?r if session[:owner] ?>
20
19
  [<a href="del_entry?oid=#{entry.oid}">del</a>]
21
20
  <?r end ?>
22
21
  </div>
@@ -34,14 +33,14 @@
34
33
  <div class="clear">.</div>
35
34
  </div>
36
35
 
37
- <?r if session['owner'] ?>
38
- <include href="entry_form" />
36
+ <?r if session[:owner] ?>
37
+ <render href="entry_form" />
39
38
  <?r end ?>
40
39
 
41
40
  </x:cell>
42
41
 
43
42
  <x:cell id="side">
44
- <include href="recent_posts" />
43
+ <render href="recent_posts" />
45
44
  </x:cell>
46
45
 
47
46
  </x:page>
@@ -7,7 +7,7 @@
7
7
  <p>
8
8
  Please login as an author by entering the blog password.
9
9
  <br />
10
- The password is: <b>#$blog_password</b>.
10
+ The password is: <b>#{Blog.password}</b>.
11
11
  </p>
12
12
 
13
13
  <div class="error">#@error</div>
@@ -15,7 +15,7 @@
15
15
  <form action="login" method="post">
16
16
  <p>
17
17
  <b>Password:</b><br />
18
- <input type="password" name="password" value="#$blog_password" />
18
+ <input type="password" name="password" value="#{Blog.password}" />
19
19
  </p>
20
20
  <input type="submit" value="Login" />
21
21
  </form>
@@ -7,7 +7,7 @@ code:
7
7
  * George Moschovitis <gm@navel.gr>
8
8
 
9
9
  (c) 2004 Navel, all rights reserved.
10
- $Id: style.xsl 194 2004-12-20 20:23:57Z gmosx $
10
+ $Id: style.xsl 225 2005-01-27 12:35:07Z gmosx $
11
11
  -->
12
12
 
13
13
  <!DOCTYPE shader
@@ -31,7 +31,7 @@ $Id: style.xsl 194 2004-12-20 20:23:57Z gmosx $
31
31
 
32
32
  <xsl:template name="x:head">
33
33
  <head>
34
- <title>#$name</title>
34
+ <title>#{@context.conf.name}</title>
35
35
  <meta name="title" content="Blog" />
36
36
  <meta name="description" content="Example" />
37
37
  <meta name="keywords" content="nitro, example, blog" />
@@ -41,17 +41,17 @@ $Id: style.xsl 194 2004-12-20 20:23:57Z gmosx $
41
41
 
42
42
  <xsl:apply-templates select="x:block[@id='meta']"/>
43
43
 
44
- <base href="#$srv_url/" />
44
+ <base href="#{@context.host_url}/" />
45
45
  <link href="/style.css" rel="stylesheet" type="text/css" media="screen" />
46
- <link rel="alternate" type="application/rss+xml" title="Latest Entries" href="#$srv_url/rest/list_entry" />
47
- <link rel="alternate" type="application/rss+xml" title="Latest Comments" href="#$srv_url/rest/list_comment" />
46
+ <link rel="alternate" type="application/rss+xml" title="Latest Entries" href="#{@context.host_url}/xml/list_entry" />
47
+ <link rel="alternate" type="application/rss+xml" title="Latest Comments" href="#{@context.host_url}/xml/list_comment" />
48
48
  <xsl:apply-templates select="x:cell[@id='head']"/>
49
49
  </head>
50
50
  </xsl:template>
51
51
 
52
52
  <xsl:template name="x:header">
53
53
  <div id="header">
54
- <h1><a href="/">#$name</a></h1>
54
+ <h1><a href="/">#{@context.conf.name}</a></h1>
55
55
  </div>
56
56
  </xsl:template>
57
57
 
@@ -90,7 +90,7 @@ $Id: style.xsl 194 2004-12-20 20:23:57Z gmosx $
90
90
  This is a simple blog powered by <a href="http://www.navel.gr/nitro">
91
91
  Nitro</a> Web Engine. Have a look at the source code and enjoy
92
92
  the power of Ruby.
93
- <ruby>unless session['owner']</ruby>
93
+ <ruby>unless session[:owner]</ruby>
94
94
  <p><a href="login">Login</a> as owner.</p>
95
95
  <ruby>else</ruby>
96
96
  <p><a href="logout">Logout</a>.</p>
@@ -109,8 +109,8 @@ $Id: style.xsl 194 2004-12-20 20:23:57Z gmosx $
109
109
 
110
110
  <br />
111
111
  <ul class="rss">
112
- <li><a href="rest/list_entry">Latest entries</a></li>
113
- <li><a href="rest/list_comment">Latest comments</a></li>
112
+ <li><a href="xml/list_entry">Latest entries</a></li>
113
+ <li><a href="xml/list_comment">Latest comments</a></li>
114
114
  </ul>
115
115
 
116
116
  <br />
@@ -11,7 +11,7 @@
11
11
  #{@entry.body}
12
12
  <div class="footer">
13
13
  posted by gmosx at #{@entry.create_time.strftime('%R %p')}
14
- <?r if session['owner'] ?>
14
+ <?r if session[:owner] ?>
15
15
  [<a href="del_entry?oid=#{@entry.oid}">del</a>]
16
16
  <?r end ?>
17
17
  </div>
@@ -19,7 +19,7 @@
19
19
  </div>
20
20
 
21
21
  <div id="comments">
22
- <include href="comments" />
22
+ <render href="comments" />
23
23
  </div>
24
24
 
25
25
  <p><a href="/">Home</a></p>
@@ -0,0 +1,23 @@
1
+ # * George Moschovitis <gm@navel.gr>
2
+ # (c) 2004-2005 Navel, all rights reserved.
3
+ # $Id$
4
+
5
+ $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
6
+
7
+ $DBG = true
8
+
9
+ require 'ostruct'
10
+
11
+ require 'nitro'
12
+
13
+ include N
14
+
15
+ dispatcher = Dispatcher.new
16
+
17
+ conf = {
18
+ :host => 'localhost',
19
+ :port => 8080,
20
+ :dispatcher => dispatcher,
21
+ }
22
+
23
+ $conf = OpenStruct.new(conf)
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
4
+ require 'nitro/adaptors/runner'
@@ -0,0 +1,3 @@
1
+ = Logs
2
+
3
+ Various logs come here.
@@ -4,15 +4,6 @@
4
4
 
5
5
  <h1>Dynamic flash generation.</h1>
6
6
 
7
- <p>
8
- <h3>Implemented as an action</h3>
9
- <form name="t1" action="show_text">
10
- Enter some text here:<br />
11
- <input type="text" name="text" /><br />
12
- <input type="submit" />
13
- </form>
14
- </p>
15
-
16
7
  <p>
17
8
  <h3>Implemented inline in the template action</h3>
18
9
  <form name="t1" action="show_inline_text">
@@ -1,12 +1,17 @@
1
1
  <?xml version="1.0"?>
2
2
 
3
- <!--
4
- This template is transormed to a template inside the FlashService.
5
- -->
6
3
  <root>
7
4
  <?r
8
- # just call the method in the service.
9
- create_flash
5
+ require 'ming/ming'
6
+ m = SWFMovie.new
7
+ f = SWFBrowserFont.new('_serif')
8
+ t = SWFTextField.new
9
+ t.set_font(f)
10
+ t.add_string(@contexts['text'])
11
+ m.add(t)
12
+ @context.response_headers['Content-Type'] = 'application/x-shockwave-flash'
13
+ m.save('tmp.swf')
14
+ @out = File.read('tmp.swf')
10
15
  ?>
11
16
  </root>
12
17
 
@@ -0,0 +1,12 @@
1
+ = No XSL Blog
2
+
3
+ A this is a simple version of the blog example. This
4
+ version does not use XSLT so it is easier to get this
5
+ up and running (especially on Windows).
6
+
7
+ For configuration and startup instructions, please
8
+ have a look at examples/blog/README. At the very
9
+ least you shold configure the database username/password.
10
+
11
+ When running on windows, the database binaries should
12
+ be in the PATH.
File without changes
@@ -0,0 +1,57 @@
1
+ # * George Moschovitis <gm@navel.gr>
2
+ # (c) 2004-2005 Navel, all rights reserved.
3
+ # $Id$
4
+
5
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
6
+ $:.unshift File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
7
+
8
+ $DBG = true
9
+
10
+ require 'ostruct'
11
+
12
+ require 'nitro'
13
+ require 'glue/validation'
14
+ require 'og'
15
+
16
+ require 'blog'
17
+
18
+ include N
19
+ =begin
20
+ og = Og::Database.new(
21
+ :address => 'localhost',
22
+ :backend => 'mysql',
23
+ :database => 'blog',
24
+ :user => 'root',
25
+ :password => 'navelrulez',
26
+ :connection_count => 3
27
+ )
28
+ =end
29
+
30
+ og = Og::Database.new(
31
+ :address => 'localhost',
32
+ :backend => 'psql',
33
+ :database => 'blog',
34
+ :user => 'postgres',
35
+ :password => 'navelrulez',
36
+ :connection_count => 3
37
+ )
38
+
39
+ controllers = {
40
+ :index => BlogController
41
+ }
42
+
43
+ apis = {
44
+ :xml => 'text/xml'
45
+ }
46
+
47
+ dispatcher = Dispatcher.new(controllers, apis)
48
+
49
+ conf = {
50
+ :name => 'Blog sans XSLT',
51
+ :host => 'localhost',
52
+ :port => 8080,
53
+ :dispatcher => dispatcher,
54
+ :og => og
55
+ }
56
+
57
+ $conf = OpenStruct.new(conf)
@@ -0,0 +1,236 @@
1
+ # lighttpd configuration file
2
+ # $Id$
3
+
4
+ ############ Options you really have to take care of ####################
5
+
6
+ ## modules to load
7
+ # at least mod_access and mod_accesslog should be loaded
8
+ # all other module should only be loaded if really neccesary
9
+ # - saves some time
10
+ # - saves memory
11
+
12
+ server.modules = (
13
+ "mod_rewrite",
14
+ # "mod_redirect",
15
+ "mod_access",
16
+ # "mod_auth",
17
+ # "mod_status",
18
+ "mod_fastcgi",
19
+ # "mod_simple_vhost",
20
+ # "mod_evhost",
21
+ # "mod_cgi",
22
+ # "mod_compress",
23
+ # "mod_ssi",
24
+ # "mod_usertrack",
25
+ # "mod_rrdtool",
26
+ "mod_accesslog"
27
+ )
28
+
29
+ ## a static document-root, for virtual-hosting take look at the
30
+ ## server.virtual-* options
31
+ server.document-root = "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/"
32
+
33
+ ## where to send error-messages to
34
+ server.errorlog = "/home/gmosx/navel/nitro/examples/no_xsl_blog/log/lighttpd.error.log"
35
+
36
+ # files to check for if .../ is requested
37
+ server.indexfiles = ( "index.html" )
38
+
39
+ # mimetype mapping
40
+ mimetype.assign = (
41
+ ".pdf" => "application/pdf",
42
+ ".sig" => "application/pgp-signature",
43
+ ".spl" => "application/futuresplash",
44
+ ".class" => "application/octet-stream",
45
+ ".ps" => "application/postscript",
46
+ ".torrent" => "application/x-bittorrent",
47
+ ".dvi" => "application/x-dvi",
48
+ ".gz" => "application/x-gzip",
49
+ ".pac" => "application/x-ns-proxy-autoconfig",
50
+ ".swf" => "application/x-shockwave-flash",
51
+ ".tar.gz" => "application/x-tgz",
52
+ ".tgz" => "application/x-tgz",
53
+ ".tar" => "application/x-tar",
54
+ ".zip" => "application/zip",
55
+ ".mp3" => "audio/mpeg",
56
+ ".m3u" => "audio/x-mpegurl",
57
+ ".wma" => "audio/x-ms-wma",
58
+ ".wax" => "audio/x-ms-wax",
59
+ ".ogg" => "audio/x-wav",
60
+ ".wav" => "audio/x-wav",
61
+ ".gif" => "image/gif",
62
+ ".jpg" => "image/jpeg",
63
+ ".jpeg" => "image/jpeg",
64
+ ".png" => "image/png",
65
+ ".xbm" => "image/x-xbitmap",
66
+ ".xpm" => "image/x-xpixmap",
67
+ ".xwd" => "image/x-xwindowdump",
68
+ ".css" => "text/css",
69
+ ".html" => "text/html",
70
+ ".htm" => "text/html",
71
+ ".js" => "text/javascript",
72
+ ".asc" => "text/plain",
73
+ ".c" => "text/plain",
74
+ ".conf" => "text/plain",
75
+ ".text" => "text/plain",
76
+ ".txt" => "text/plain",
77
+ ".dtd" => "text/xml",
78
+ ".xml" => "text/xml",
79
+ ".mpeg" => "video/mpeg",
80
+ ".mpg" => "video/mpeg",
81
+ ".mov" => "video/quicktime",
82
+ ".qt" => "video/quicktime",
83
+ ".avi" => "video/x-msvideo",
84
+ ".asf" => "video/x-ms-asf",
85
+ ".asx" => "video/x-ms-asf",
86
+ ".wmv" => "video/x-ms-wmv"
87
+ )
88
+
89
+ # Use the "Content-Type" extended attribute to obtain mime type if possible
90
+ # mimetypes.use-xattr = "enable"
91
+
92
+ #### accesslog module
93
+ accesslog.filename = "/home/gmosx/navel/nitro/examples/no_xsl_blog/log/access.log"
94
+
95
+ ## deny access the file-extensions
96
+ #
97
+ # ~ is for backupfiles from vi, emacs, joe, ...
98
+ # .inc is often used for code includes which should in general not be part
99
+ # of the document-root
100
+ url.access-deny = ( "~", ".inc" )
101
+
102
+
103
+
104
+ ######### Options that are good to be but not neccesary to be changed #######
105
+
106
+ ## bind to port (default: 80)
107
+ server.port = 8080
108
+
109
+ ## bind to localhost (default: all interfaces)
110
+ #server.bind = "grisu.home.kneschke.de"
111
+
112
+ ## error-handler for status 404
113
+ #server.error-handler-404 = "/error-handler.html"
114
+ #server.error-handler-404 = "/error-handler.php"
115
+
116
+ ## to help the rc.scripts
117
+ # server.pid-file = "/var/run/lighttpd.pid"
118
+
119
+
120
+ ###### virtual hosts
121
+ ##
122
+ ## If you want name-based virtual hosting add the next three settings and load
123
+ ## mod_simple_vhost
124
+ ##
125
+ ## document-root =
126
+ ## virtual-server-root + virtual-server-default-host + virtual-server-docroot or
127
+ ## virtual-server-root + http-host + virtual-server-docroot
128
+ ##
129
+ #simple-vhost.server-root = "/home/weigon/wwwroot/servers/"
130
+ #simple-vhost.default-host = "grisu.home.kneschke.de"
131
+ #simple-vhost.document-root = "/pages/"
132
+
133
+
134
+ ##
135
+ ## Format: <errorfile-prefix><status>.html
136
+ ## -> ..../status-404.html for 'File not found'
137
+ #server.errorfile-prefix = "/home/weigon/projects/lighttpd/doc/status-"
138
+
139
+ ## virtual directory listings
140
+ #server.dir-listing = "enable"
141
+
142
+ ## send unhandled HTTP-header headers to error-log
143
+ #debug.dump-unknown-headers = "enable"
144
+
145
+ ### only root can use these options
146
+ #
147
+ # chroot() to directory (default: no chroot() )
148
+ #server.chroot = "/"
149
+
150
+ ## change uid to <uid> (default: don't care)
151
+ #server.username = "wwwrun"
152
+
153
+ ## change uid to <uid> (default: don't care)
154
+ #server.groupname = "wwwrun"
155
+
156
+ #### compress module
157
+ #compress.cache-dir = "/tmp/lighttpd/cache/compress/"
158
+ #compress.filetype = ("text/plain", "text/html")
159
+
160
+ #### fastcgi module
161
+ ## read fastcgi.txt for more info
162
+ fastcgi.server = ( ".rb" =>
163
+ ( "localhost" =>
164
+ (
165
+ "socket" => "/tmp/nitro-fcgi.socket",
166
+ "bin-path" => "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb"
167
+ )
168
+ )
169
+ )
170
+
171
+ #### CGI module
172
+ #cgi.assign = ( ".pl" => "/usr/bin/perl",
173
+ # ".cgi" => "/usr/bin/perl" )
174
+ #
175
+
176
+ #### SSL engine
177
+ #ssl.engine = "enable"
178
+ #ssl.pemfile = "server.pem"
179
+
180
+ #### status module
181
+ # status.status-url = "/server-status"
182
+ # status.config-url = "/server-config"
183
+
184
+ #### auth module
185
+ ## read authentification.txt for more info
186
+ # auth.backend = "plain"
187
+ # auth.backend.plain.userfile = "lighttpd.user"
188
+ # auth.backend.plain.groupfile = "lighttpd.group"
189
+
190
+ # auth.backend.ldap.hostname = "localhost"
191
+ # auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
192
+ # auth.backend.ldap.filter = "(uid=$)"
193
+
194
+ # auth.require = ( "/server-status" =>
195
+ # (
196
+ # "method" => "digest",
197
+ # "realm" => "download archiv",
198
+ # "require" => "group=www|user=jan|host=192.168.2.10"
199
+ # ),
200
+ # "/server-info" =>
201
+ # (
202
+ # "method" => "digest",
203
+ # "realm" => "download archiv",
204
+ # "require" => "group=www|user=jan|host=192.168.2.10"
205
+ # )
206
+ # )
207
+
208
+ #### url handling modules (rewrite, redirect, access)
209
+
210
+ url.rewrite = (
211
+ "^/([\/\-_a-zA-Z0-9]+)?$" => "/fcgi.rb",
212
+ "^/([\/\-_a-zA-Z0-9]+)?\?([\-_a-zA-Z0-9=;&%]*)$" => "/fcgi.rb?$2"
213
+ )
214
+
215
+ # url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
216
+
217
+ #
218
+ # define a pattern for the host url finding
219
+ # %% => % sign
220
+ # %0 => domain name + tld
221
+ # %1 => tld
222
+ # %2 => domain name without tld
223
+ # %3 => subdomain 1 name
224
+ # %4 => subdomain 2 name
225
+ #
226
+ # evhost.path-pattern = "/home/storage/dev/www/%3/htdocs/"
227
+
228
+ #### expire module
229
+ # expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
230
+
231
+ #### ssi
232
+ # ssi.extension = ( ".shtml" )
233
+
234
+ #### rrdtool
235
+ # rrdtool.binary = "/usr/bin/rrdtool"
236
+ # rrdtool.db-name = "/var/www/lighttpd.rrd"