nitro 0.10.0 → 0.11.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.
Files changed (99) hide show
  1. data/AUTHORS +4 -1
  2. data/ChangeLog +290 -7
  3. data/README +3 -3
  4. data/RELEASES +94 -0
  5. data/Rakefile +7 -7
  6. data/benchmark/og/bench.rb +11 -10
  7. data/{ChangeLog.1 → doc/ChangeLog.1} +0 -0
  8. data/doc/apache.txt +9 -0
  9. data/doc/architecture.txt +1 -27
  10. data/doc/bugs.txt +11 -4
  11. data/doc/config.txt +22 -0
  12. data/doc/og_config.txt +35 -0
  13. data/doc/og_tutorial.txt +595 -0
  14. data/doc/tutorial.txt +22 -0
  15. data/examples/blog/conf/apache.conf +30 -0
  16. data/examples/blog/conf/lhttpd.conf +2 -2
  17. data/examples/blog/lib/blog/controller.rb +11 -2
  18. data/examples/blog/log/apache.error_log +5528 -0
  19. data/examples/blog/root/fcgi.rb +1 -1
  20. data/examples/blog/run.rb +9 -3
  21. data/examples/flash/run.rb +2 -2
  22. data/examples/no_xsl_blog/conf/apache.conf +30 -0
  23. data/examples/no_xsl_blog/conf/lhttpd.conf +1 -1
  24. data/examples/no_xsl_blog/lib/blog/controller.rb +2 -2
  25. data/examples/no_xsl_blog/log/apache.error_log +68 -0
  26. data/examples/no_xsl_blog/root/fcgi.rb +2 -2
  27. data/examples/no_xsl_blog/run.rb +3 -3
  28. data/examples/og/run.rb +1 -1
  29. data/examples/tiny/conf/apache.conf +29 -4
  30. data/examples/tiny/conf/lhttpd.conf +1 -1
  31. data/examples/tiny/log/apache.error_log +30 -0
  32. data/examples/tiny/root/fcgi.rb +2 -2
  33. data/examples/tiny/root/index.xhtml +1 -1
  34. data/examples/tiny/run.rb +3 -2
  35. data/examples/wee_style/run.rb +7 -9
  36. data/examples/why_wiki/README +5 -0
  37. data/examples/why_wiki/run.rb +57 -0
  38. data/examples/why_wiki/wiki.yml +6 -0
  39. data/examples/wiki.yml +1 -0
  40. data/lib/glue/array.rb +14 -33
  41. data/lib/glue/hash.rb +32 -53
  42. data/lib/glue/pool.rb +9 -12
  43. data/lib/glue/property.rb +31 -9
  44. data/lib/nitro.rb +30 -8
  45. data/lib/nitro/adapters/cgi.rb +23 -3
  46. data/lib/nitro/adapters/webrick.rb +9 -3
  47. data/lib/nitro/builders/form.rb +21 -13
  48. data/lib/nitro/builders/rss.rb +20 -9
  49. data/lib/nitro/builders/table.rb +69 -10
  50. data/lib/nitro/builders/xhtml.rb +13 -4
  51. data/lib/nitro/component.rb +15 -0
  52. data/lib/nitro/conf.rb +4 -3
  53. data/lib/nitro/context.rb +22 -14
  54. data/lib/nitro/controller.rb +63 -5
  55. data/lib/nitro/dispatcher.rb +11 -6
  56. data/lib/nitro/output.rb +28 -0
  57. data/lib/nitro/render.rb +78 -59
  58. data/lib/nitro/request.rb +5 -1
  59. data/lib/nitro/runner.rb +20 -6
  60. data/lib/nitro/session.rb +89 -18
  61. data/lib/nitro/session/drb.rb +31 -0
  62. data/lib/nitro/session/drbserver.rb +71 -0
  63. data/lib/nitro/session/memory.rb +13 -0
  64. data/lib/nitro/simple.rb +7 -0
  65. data/lib/nitro/ui/date-select.rb +2 -5
  66. data/lib/nitro/ui/pager.rb +4 -4
  67. data/lib/nitro/ui/tabs.rb +2 -4
  68. data/lib/nitro/uri.rb +7 -4
  69. data/lib/og.rb +20 -12
  70. data/lib/og/adapter.rb +40 -13
  71. data/lib/og/adapters/filesys.rb +121 -0
  72. data/lib/og/adapters/mysql.rb +10 -5
  73. data/lib/og/adapters/oracle.rb +374 -0
  74. data/lib/og/adapters/psql.rb +10 -23
  75. data/lib/og/adapters/sqlite.rb +3 -3
  76. data/lib/og/backend.rb +2 -2
  77. data/lib/og/connection.rb +6 -6
  78. data/lib/og/database.rb +5 -5
  79. data/lib/og/enchant.rb +6 -2
  80. data/lib/og/meta.rb +56 -26
  81. data/lib/og/mock.rb +1 -1
  82. data/lib/og/typemacros.rb +23 -0
  83. data/lib/parts/content.rb +4 -10
  84. data/test/nitro/adapters/tc_cgi.rb +1 -1
  85. data/test/nitro/builders/tc_rss.rb +1 -1
  86. data/test/nitro/builders/tc_table.rb +30 -0
  87. data/test/nitro/tc_context.rb +4 -0
  88. data/test/nitro/tc_controller.rb +9 -2
  89. data/test/og/tc_filesys.rb +83 -0
  90. data/test/og/tc_meta.rb +55 -0
  91. data/test/tc_og.rb +115 -36
  92. data/vendor/README +11 -5
  93. data/vendor/breakpoint.rb +35 -38
  94. data/vendor/breakpoint_client.rb +119 -80
  95. data/vendor/composite_sexp_processor.rb +43 -0
  96. data/vendor/parse_tree.rb +745 -0
  97. data/vendor/sexp_processor.rb +453 -0
  98. metadata +34 -7
  99. data/examples/no_xsl_blog/conf/app.conf.rb +0 -47
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/local/bin/ruby
2
2
 
3
3
  ENV['NITRO_INVOKE'] = 'fcgi_proc'
4
4
  require File.join(File.dirname(__FILE__), '..', 'run.rb')
@@ -1,6 +1,8 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: run.rb 260 2005-02-15 08:58:04Z gmosx $
3
+ # $Id: run.rb 266 2005-02-28 14:50:48Z gmosx $
4
+
5
+ # $:.unshift '/home/gmosx/navel/nitro/lib'
4
6
 
5
7
  Dir.chdir File.dirname(__FILE__)
6
8
 
@@ -9,6 +11,10 @@ require 'og'
9
11
 
10
12
  require 'lib/blog'
11
13
 
14
+ # Nitro.resolve_action_arguments = true
15
+ # Og.create_schema = false
16
+ # Session.store_type = :drb
17
+
12
18
  runner = Runner.new.setup
13
19
 
14
20
  db = Og::Database.new(
@@ -32,8 +38,8 @@ Rendering.shader = XSLTShader.new("#{dispatcher.root}/style.xsl",
32
38
 
33
39
  conf = Conf.new(
34
40
  :name => 'Nitro Blog',
35
- :host => 'localhost',
36
- :port => 8069,
41
+ :host => '127.0.0.1',
42
+ :port => 9999,
37
43
  :dispatcher => dispatcher,
38
44
  :db => db
39
45
  )
@@ -1,9 +1,9 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: run.rb 260 2005-02-15 08:58:04Z gmosx $
3
+ # $Id: run.rb 266 2005-02-28 14:50:48Z gmosx $
4
4
 
5
5
  Dir.chdir File.dirname(__FILE__)
6
6
 
7
7
  require 'nitro'
8
8
 
9
- N::Runner.run(:host => 'localhost', :port => 8069)
9
+ N::Runner.run(:host => '127.0.0.1', :port => 9999)
@@ -0,0 +1,30 @@
1
+ # Apache configuration file.
2
+ # Change as appropriate for your apache configuration.
3
+ # $Id$
4
+
5
+ Listen 9999
6
+
7
+ PidFile /var/tmp/httpd.pid
8
+ TypesConfig /etc/mime.types
9
+ DocumentRoot /home/gmosx/navel/nitro/examples/no_xsl_blog/root
10
+
11
+ # The error log.
12
+ ErrorLog log/apache.error_log
13
+ CustomLog log/access_log combined
14
+
15
+ # Load dynamic modules.
16
+ LoadModule fastcgi_module /usr/local/apache2/modules/mod_fastcgi.so
17
+ # LoadModule rewrite_module /usr/local/apache2/modules/mod_rewrite.so
18
+
19
+ FastCgiIpcDir /var/tmp/fcgi
20
+ # gmosx: if you have installed the distribution the -I is not needed.
21
+ FastCgiConfig -initial-env 'RUBYOPT=-rubygems -I/home/gmosx/navel/nitro/lib'
22
+ AddHandler fastcgi-script fcgi rb
23
+ Options +FollowSymLinks +ExecCGI
24
+
25
+ RewriteEngine On
26
+ RewriteRule ^/([\/\-_a-zA-Z0-9]+)?$ /fcgi.rb [QSA,L]
27
+ RewriteRule ^/([\/\-_a-zA-Z0-9]+)?\?([\-_a-zA-Z0-9=;&%]*)$ /fcgi.rb?$2 [QSA,L]
28
+
29
+ # You can also point these error messages to a controller/action
30
+ # ErrorDocument 500 /500.html
@@ -104,7 +104,7 @@ url.access-deny = ( "~", ".inc" )
104
104
  ######### Options that are good to be but not neccesary to be changed #######
105
105
 
106
106
  ## bind to port (default: 80)
107
- server.port = 8069
107
+ server.port = 9999
108
108
 
109
109
  ## bind to localhost (default: all interfaces)
110
110
  #server.bind = "grisu.home.kneschke.de"
@@ -41,7 +41,7 @@ class BlogController < N::Controller
41
41
  # example of generated view
42
42
 
43
43
  def list_entry__xml
44
- @out << RssBuilder.render(@entries, :description => 'Blog entries', :link => context.host_url)
44
+ @out.build_rss(@entries, :description => 'Blog entries', :link => context.host_url)
45
45
  end
46
46
 
47
47
  def new_comment
@@ -58,7 +58,7 @@ class BlogController < N::Controller
58
58
  # example of generated view
59
59
 
60
60
  def list_comment__xml
61
- @out << RssBuilder.render(@comments, :description => 'Blog comments', :link => context.host_url)
61
+ @out.build_rss(@comments, :description => 'Blog comments', :link => context.host_url)
62
62
  end
63
63
 
64
64
  def login
@@ -0,0 +1,68 @@
1
+ [Sun Feb 27 14:41:24 2005] [notice] Digest: generating secret for digest authentication ...
2
+ [Sun Feb 27 14:41:24 2005] [notice] Digest: done
3
+ [Sun Feb 27 14:41:25 2005] [notice] FastCGI: process manager initialized (pid 4716)
4
+ [Sun Feb 27 14:41:25 2005] [notice] Apache/2.0.53 (Unix) DAV/2 mod_fastcgi/2.4.2 configured -- resuming normal operations
5
+ [Sun Feb 27 14:41:31 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" started (pid 4722)
6
+ /usr/bin/env: ruby: No such file or directory
7
+ [Sun Feb 27 14:41:32 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" (pid 4722) terminated by calling exit with status '127'
8
+ /usr/bin/env: ruby: No such file or directory
9
+ [Sun Feb 27 14:41:36 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" restarted (pid 4724)
10
+ [Sun Feb 27 14:41:36 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" (pid 4724) terminated by calling exit with status '127'
11
+ [Sun Feb 27 14:41:41 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" restarted (pid 4725)
12
+ /usr/bin/env: ruby: No such file or directory
13
+ [Sun Feb 27 14:41:41 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" (pid 4725) terminated by calling exit with status '127'
14
+ [Sun Feb 27 14:41:46 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" restarted (pid 4726)
15
+ /usr/bin/env: ruby: No such file or directory
16
+ [Sun Feb 27 14:41:46 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" (pid 4726) terminated by calling exit with status '127'
17
+ [Sun Feb 27 14:41:46 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
18
+ [Sun Feb 27 14:41:47 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
19
+ [Sun Feb 27 14:41:50 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
20
+ [Sun Feb 27 14:41:53 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
21
+ [Sun Feb 27 14:41:56 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
22
+ [Sun Feb 27 14:41:59 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
23
+ [Sun Feb 27 14:42:02 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
24
+ [Sun Feb 27 14:42:05 2005] [error] [client 127.0.0.1] FastCGI: comm with (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" aborted: (first read) idle timeout (30 sec), referer: http://0.0.0.0:9999/
25
+ [Sun Feb 27 14:42:05 2005] [error] [client 127.0.0.1] FastCGI: incomplete headers (0 bytes) received from server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb", referer: http://0.0.0.0:9999/
26
+ [Sun Feb 27 14:42:05 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
27
+ [Sun Feb 27 14:42:52 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
28
+ [Sun Feb 27 14:42:56 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
29
+ [Sun Feb 27 14:42:59 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
30
+ [Sun Feb 27 14:43:02 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
31
+ [Sun Feb 27 14:43:05 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
32
+ [Sun Feb 27 14:43:08 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
33
+ [Sun Feb 27 14:43:11 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
34
+ [Sun Feb 27 14:43:12 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" has failed to remain running for 30 seconds given 3 attempts, its restart interval has been backed off to 600 seconds
35
+ [Sun Feb 27 14:43:12 2005] [notice] caught SIGTERM, shutting down
36
+ [Sun Feb 27 14:43:21 2005] [notice] Digest: generating secret for digest authentication ...
37
+ [Sun Feb 27 14:43:21 2005] [notice] Digest: done
38
+ [Sun Feb 27 14:43:22 2005] [notice] FastCGI: process manager initialized (pid 4736)
39
+ [Sun Feb 27 14:43:22 2005] [notice] Apache/2.0.53 (Unix) DAV/2 mod_fastcgi/2.4.2 configured -- resuming normal operations
40
+ [Sun Feb 27 14:43:25 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/no_xsl_blog/root/fcgi.rb" started (pid 4742)
41
+ INFO: Connecting to database 'blog' using the 'mysql' adapter.
42
+ DEBUG: Og auto manages the following classes:
43
+ DEBUG: [BlogEntry, N::Category, Comment]
44
+ DEBUG: Rendering '/'.
45
+ DEBUG: Compiling action 'root/index'
46
+ DEBUG: Transforming 'root/index.xhtml'
47
+ DEBUG: SELECT * FROM og_blogentry ORDER BY oid DESC LIMIT 3
48
+ DEBUG: SELECT COUNT(*) FROM og_blogentry
49
+ DEBUG: Rendering '/'.
50
+ DEBUG: Compiling action 'root/index'
51
+ DEBUG: Transforming 'root/index.xhtml'
52
+ DEBUG: SELECT * FROM og_blogentry ORDER BY oid DESC LIMIT 3
53
+ DEBUG: SELECT COUNT(*) FROM og_blogentry
54
+ DEBUG: Rendering '/login'.
55
+ DEBUG: Compiling action 'root/login'
56
+ DEBUG: Transforming 'root/login.xhtml'
57
+ DEBUG: Rendering '/login'.
58
+ DEBUG: Compiling action 'root/login'
59
+ DEBUG: Transforming 'root/login.xhtml'
60
+ DEBUG: Rendering '/'.
61
+ DEBUG: Compiling action 'root/index'
62
+ DEBUG: Transforming 'root/index.xhtml'
63
+ DEBUG: SELECT * FROM og_blogentry ORDER BY oid DESC LIMIT 3
64
+ DEBUG: SELECT COUNT(*) FROM og_blogentry
65
+ DEBUG: Rendering '/entry_form'.
66
+ DEBUG: Compiling action 'root/entry_form'
67
+ DEBUG: Transforming 'root/entry_form.xhtml'
68
+ [Sun Feb 27 14:44:37 2005] [notice] caught SIGTERM, shutting down
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/local/bin/ruby
2
2
 
3
- ARGV << '--fcgi-proc'
3
+ ENV['NITRO_INVOKE'] = 'fcgi_proc'
4
4
  require File.join(File.dirname(__FILE__), '..', 'run.rb')
@@ -1,6 +1,6 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: run.rb 260 2005-02-15 08:58:04Z gmosx $
3
+ # $Id: run.rb 266 2005-02-28 14:50:48Z gmosx $
4
4
 
5
5
  Dir.chdir File.dirname(__FILE__)
6
6
 
@@ -29,8 +29,8 @@ Rendering.shader = RubyShader.new(CompressShader.new)
29
29
 
30
30
  conf = Conf.new(
31
31
  :name => 'Blog sans XSLT',
32
- :host => 'localhost',
33
- :port => 8069,
32
+ :host => '127.0.0.1',
33
+ :port => 9999,
34
34
  :dispatcher => dispatcher,
35
35
  :db => db
36
36
  )
@@ -2,7 +2,7 @@
2
2
  #
3
3
  # * George Moschovitis <gm@navel.gr>
4
4
  # (c) 2004 Navel, all rights reserved.
5
- # $Id: run.rb 256 2005-02-11 16:22:33Z gmosx $
5
+ # $Id: run.rb 263 2005-02-23 13:45:08Z gmosx $
6
6
 
7
7
  require 'og'
8
8
 
@@ -1,5 +1,30 @@
1
- # Nitro: Apache-FastCGI configuration.
2
- #
3
- # * George Moschovitis <gm@navel.gr>
4
- # (c) 2005 Navel, all rights reserved.
1
+ # Apache configuration file.
2
+ # Change as appropriate for your apache configuration.
5
3
  # $Id$
4
+
5
+ Listen 9999
6
+
7
+ PidFile /var/tmp/httpd.pid
8
+ TypesConfig /etc/mime.types
9
+ DocumentRoot /home/gmosx/navel/nitro/examples/tiny/root
10
+
11
+ # The error log.
12
+ ErrorLog log/apache.error_log
13
+ CustomLog log/access_log combined
14
+
15
+ # Load dynamic modules.
16
+ LoadModule fastcgi_module /usr/local/apache2/modules/mod_fastcgi.so
17
+ # LoadModule rewrite_module /usr/local/apache2/modules/mod_rewrite.so
18
+
19
+ FastCgiIpcDir /var/tmp/fcgi
20
+ # gmosx: if you have installed the distribution the -I is not needed.
21
+ FastCgiConfig -initial-env 'RUBYOPT=-rubygems -I/home/gmosx/navel/nitro/lib'
22
+ AddHandler fastcgi-script fcgi rb
23
+ Options +FollowSymLinks +ExecCGI
24
+
25
+ RewriteEngine On
26
+ RewriteRule ^/([\/\-_a-zA-Z0-9]+)?$ /fcgi.rb [QSA,L]
27
+ RewriteRule ^/([\/\-_a-zA-Z0-9]+)?\?([\-_a-zA-Z0-9=;&%]*)$ /fcgi.rb?$2 [QSA,L]
28
+
29
+ # You can also point these error messages to a controller/action
30
+ # ErrorDocument 500 /500.html
@@ -104,7 +104,7 @@ url.access-deny = ( "~", ".inc" )
104
104
  ######### Options that are good to be but not neccesary to be changed #######
105
105
 
106
106
  ## bind to port (default: 80)
107
- server.port = 8069
107
+ server.port = 9999
108
108
 
109
109
  ## bind to localhost (default: all interfaces)
110
110
  #server.bind = "grisu.home.kneschke.de"
@@ -0,0 +1,30 @@
1
+ [Sun Feb 27 14:59:50 2005] [notice] Digest: generating secret for digest authentication ...
2
+ [Sun Feb 27 14:59:50 2005] [notice] Digest: done
3
+ [Sun Feb 27 14:59:51 2005] [notice] FastCGI: process manager initialized (pid 4783)
4
+ [Sun Feb 27 14:59:51 2005] [notice] Apache/2.0.53 (Unix) DAV/2 mod_fastcgi/2.4.2 configured -- resuming normal operations
5
+ [Sun Feb 27 14:59:52 2005] [warn] FastCGI: (dynamic) server "/home/gmosx/navel/nitro/examples/tiny/root/fcgi.rb" started (pid 4789)
6
+ DEBUG: Rendering '/'.
7
+ DEBUG: Compiling action 'root/index'
8
+ DEBUG: Transforming 'root/index.xhtml'
9
+ DEBUG: Rendering '/include'.
10
+ DEBUG: Compiling action 'root/include'
11
+ DEBUG: Transforming 'root/include.xhtml'
12
+ DEBUG: Rendering '/'.
13
+ DEBUG: Rendering '/include'.
14
+ DEBUG: Rendering '/'.
15
+ DEBUG: Rendering '/include'.
16
+ DEBUG: Rendering '/'.
17
+ DEBUG: Rendering '/include'.
18
+ DEBUG: Rendering '/'.
19
+ DEBUG: Rendering '/include'.
20
+ DEBUG: Rendering '/'.
21
+ DEBUG: Rendering '/include'.
22
+ DEBUG: Rendering '/'.
23
+ DEBUG: Rendering '/include'.
24
+ DEBUG: Rendering '/'.
25
+ DEBUG: Rendering '/include'.
26
+ DEBUG: Rendering '/'.
27
+ DEBUG: Rendering '/include'.
28
+ DEBUG: Rendering '/'.
29
+ DEBUG: Rendering '/include'.
30
+ [Sun Feb 27 15:00:15 2005] [notice] caught SIGTERM, shutting down
@@ -1,4 +1,4 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/local/bin/ruby
2
2
 
3
- ARGV << '--fcgi-proc'
3
+ ENV['NITRO_INVOKE'] = 'fcgi_proc'
4
4
  require File.join(File.dirname(__FILE__), '..', 'run.rb')
@@ -20,7 +20,7 @@
20
20
  </p>
21
21
 
22
22
 
23
- <strong>#{Rendering.reload} Hello #{name}</strong>
23
+ <strong>Hello #{name}</strong>
24
24
  <p>
25
25
  <form id="my_form">
26
26
  <strong>Enter your name:</strong>
@@ -1,9 +1,10 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: run.rb 260 2005-02-15 08:58:04Z gmosx $
3
+ # $Id: run.rb 266 2005-02-28 14:50:48Z gmosx $
4
4
 
5
5
  Dir.chdir File.dirname(__FILE__)
6
6
 
7
7
  require 'nitro'
8
8
 
9
- N::Runner.run(:host => 'localhost', :port => 8069)
9
+ N::Rendering.reload = false
10
+ N::Runner.run(:host => '127.0.0.1', :port => 9999)
@@ -1,18 +1,16 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2004-2005 Navel, all rights reserved.
3
- # $Id: run.rb 260 2005-02-15 08:58:04Z gmosx $
3
+ # $Id: run.rb 266 2005-02-28 14:50:48Z gmosx $
4
4
 
5
- require 'nitro'
5
+ require 'nitro'; include N
6
6
  require 'nitro/adapters/webrick'
7
7
 
8
- include N
9
-
10
- class Wee < Controller
8
+ class Wee < Component
11
9
 
12
10
  def index
13
11
  counter = session[:counter] || 0
14
12
 
15
- (o = @out).html {
13
+ o.html {
16
14
  o.comment 'This is a comment!'
17
15
  o.h1 'Hello world'
18
16
  o.text 'This is '
@@ -22,7 +20,7 @@ class Wee < Controller
22
20
  o.br.br
23
21
  o.p "Here is the counter: #{counter}"
24
22
  o.p {
25
- o.a('Increase', :href => 'inc_counter').text(' the counter.')
23
+ o.a('Increase', :href => :inc_counter).text(' the counter.')
26
24
  }
27
25
  o.p '<a href="reset_counter">Reset</a> the counter.'
28
26
  o.hr
@@ -42,8 +40,8 @@ class Wee < Controller
42
40
  end
43
41
 
44
42
  conf = {
45
- :host => 'localhost',
46
- :port => 8069,
43
+ :host => '127.0.0.1',
44
+ :port => 9999,
47
45
  :dispatcher => Dispatcher.new(Wee)
48
46
  }
49
47
 
@@ -0,0 +1,5 @@
1
+ = Why's wiki
2
+
3
+ Original example from Why's excellent Blog,
4
+ http://redhanded.hobix.com
5
+
@@ -0,0 +1,57 @@
1
+ # * George Moschovitis <gm@navel.gr>
2
+ # $Id: run.rb 267 2005-02-28 14:52:41Z gmosx $
3
+
4
+ require 'cgi'
5
+ require 'redcloth'
6
+ require 'yaml/store'
7
+
8
+ require 'nitro'; include N
9
+
10
+ # A simple wiki. A straight conversion of the redhanded.hobix.com
11
+ # example. Original code by why the lucky stiff.
12
+ # This is just a cool example, not the preffered way to write
13
+ # Nitro applications.
14
+
15
+ class Wiki < Component
16
+ HP = 'HomePage'
17
+ WIKI = YAML::Store.new('wiki.yml')
18
+
19
+ def index
20
+ request['p'] = HP
21
+ show
22
+ end
23
+
24
+ def show
25
+ p = request['p'].to_s
26
+ o.h1(p)
27
+ o.a(HP, :href => '/') unless p == HP
28
+ WIKI.transaction do
29
+ if WIKI[p]
30
+ o << RedCloth.new(WIKI[p]).to_html.gsub(/([A-Z]\w+){2}/) { "<a href='show?p=#$&'>#$&</a>" }
31
+ o.a 'Edit', :href => "edit?p=#{p}"
32
+ else
33
+ o.p("No page #{p}. ").a('Create?', :href => "edit?p=#{p}")
34
+ end
35
+ end
36
+ end
37
+
38
+ def edit
39
+ p = request['p'].to_s
40
+ if c = request['c']
41
+ WIKI.transaction { WIKI[p] = c.to_s }
42
+ redirect "show?p=#{p}"
43
+ end
44
+ WIKI.transaction do
45
+ o.h1 "Editing #{p}"
46
+ o.a('Show', :href => "show?p=#{p}").br.br
47
+ o.form(:method => 'post') {
48
+ o.input :type => 'hidden', :name => 'p', :value => p
49
+ o.textarea WIKI[p].to_s, :name => 'c', :style => 'width: 90%; height: 200px'
50
+ o.br.br.submit
51
+ }
52
+ end
53
+ end
54
+ end
55
+
56
+ require 'nitro/adapters/webrick'
57
+ Webrick.start(:dispatcher => Dispatcher.new(Wiki))
@@ -0,0 +1,6 @@
1
+ ---
2
+ HomePage: "fasfdasfdfsadfdsa\\]\r
3
+
4
+ \r
5
+
6
+ fas AmigaRule"
@@ -0,0 +1 @@
1
+ --- {}
@@ -1,15 +1,14 @@
1
1
  # * George Moschovitis <gm@navel.gr>
2
2
  # (c) 2002-2005 Navel, all rights reserved.
3
- # $Id: array.rb 259 2005-02-15 08:54:54Z gmosx $
3
+ # $Id: array.rb 266 2005-02-28 14:50:48Z gmosx $
4
4
 
5
5
  require 'sync'
6
6
 
7
7
  module N
8
8
 
9
- # A thread-safe array. We use a sync object instead of a mutex,
10
- # because it is re-entrant.
11
- # An exclusive lock is needed when writing, a shared lock IS NEEDED
12
- # when reading
9
+ # A thread-safe array. We use a sync object instead of a
10
+ # mutex, because it is re-entrant. An exclusive lock is
11
+ # needed when writing, a shared lock IS NEEDED when reading.
13
12
 
14
13
  class SafeArray < Array
15
14
 
@@ -18,61 +17,43 @@ class SafeArray < Array
18
17
  # gmosx: delegator is not used.
19
18
 
20
19
  def initialize(delegator = nil)
21
- @sync = ::Sync.new()
20
+ @sync = Sync.new()
22
21
  end
23
22
 
24
23
  def << (value)
25
- return @sync.synchronize(::Sync::SH) {
26
- super
27
- }
24
+ return @sync.synchronize(Sync::SH) { super }
28
25
  end
29
26
 
30
27
  def delete_if(&block)
31
- return @sync.synchronize(::Sync::SH) {
32
- super
33
- }
28
+ return @sync.synchronize(Sync::SH) { super }
34
29
  end
35
30
 
36
31
  def [](key)
37
- return @sync.synchronize(::Sync::SH) {
38
- super
39
- }
32
+ return @sync.synchronize(Sync::SH) { super }
40
33
  end
41
34
 
42
35
  def []=(key, value)
43
- return @sync.synchronize(::Sync::EX) {
44
- super
45
- }
36
+ return @sync.synchronize(Sync::EX) { super }
46
37
  end
47
38
 
48
39
  def delete(key)
49
- return @sync.synchronize(::Sync::EX) {
50
- super
51
- }
40
+ return @sync.synchronize(Sync::EX) { super }
52
41
  end
53
42
 
54
43
  def clear
55
- @sync.synchronize(::Sync::EX) {
56
- super
57
- }
44
+ @sync.synchronize(Sync::EX) { super }
58
45
  end
59
46
 
60
47
  def size
61
- return @sync.synchronize(::Sync::SH) {
62
- super
63
- }
48
+ return @sync.synchronize(Sync::SH) { super }
64
49
  end
65
50
 
66
51
  def shift
67
- return @sync.synchronize(::Sync::EX) {
68
- super
69
- }
52
+ return @sync.synchronize(::Sync::EX) { super }
70
53
  end
71
54
 
72
55
  def unshift(el)
73
- return @sync.synchronize(::Sync::EX) {
74
- super
75
- }
56
+ return @sync.synchronize(::Sync::EX) { super }
76
57
  end
77
58
 
78
59
  end