nitro 0.3.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (148) hide show
  1. data/ChangeLog +284 -0
  2. data/{LICENCE → LICENSE} +1 -1
  3. data/README +13 -17
  4. data/RELEASES +13 -1
  5. data/Rakefile +1 -9
  6. data/bin/cluster.rb +5 -5
  7. data/examples/blog/README +45 -0
  8. data/examples/blog/apache.conf +0 -0
  9. data/examples/blog/app.rb +21 -0
  10. data/examples/blog/config.rb +88 -0
  11. data/examples/blog/lib/blog.rb +104 -0
  12. data/examples/blog/log/app.log +117 -0
  13. data/examples/blog/root/comments.xhtml +38 -0
  14. data/examples/blog/root/entry_form.xhtml +18 -0
  15. data/examples/blog/root/index.xhtml +43 -0
  16. data/examples/blog/root/login.xhtml +24 -0
  17. data/examples/blog/root/m/bubbles.gif +0 -0
  18. data/examples/blog/root/m/comments_curve.gif +0 -0
  19. data/examples/blog/root/m/down.gif +0 -0
  20. data/examples/blog/root/m/footer_bg.gif +0 -0
  21. data/examples/blog/root/m/garrow.gif +0 -0
  22. data/examples/blog/root/m/gbull.gif +0 -0
  23. data/examples/blog/root/m/grbull.gif +0 -0
  24. data/examples/blog/root/m/h1_bg.gif +0 -0
  25. data/examples/blog/root/m/header_bg.gif +0 -0
  26. data/examples/blog/root/m/obull.gif +0 -0
  27. data/examples/blog/root/m/page_bg.gif +0 -0
  28. data/examples/blog/root/m/side_title_bg.gif +0 -0
  29. data/examples/blog/root/m/sidebar_bg.gif +0 -0
  30. data/examples/blog/root/recent_posts.xhtml +14 -0
  31. data/examples/blog/root/style.css +201 -0
  32. data/examples/blog/root/style.xsl +118 -0
  33. data/examples/blog/root/view_entry.xhtml +29 -0
  34. data/examples/og/run.rb +27 -29
  35. data/examples/tiny/README +3 -4
  36. data/examples/tiny/app.rb +6 -16
  37. data/examples/tiny/config.rb +30 -0
  38. data/examples/tiny/log/app.log +23 -0
  39. data/examples/tiny/root/{index.sx → index.xhtml} +3 -6
  40. data/lib/{n/std.rb → nitro.rb} +9 -4
  41. data/lib/{n → nitro}/application.rb +13 -7
  42. data/lib/{n → nitro}/config.rb +38 -8
  43. data/lib/{n → nitro}/events.rb +1 -1
  44. data/lib/{n → nitro}/l10n.rb +1 -1
  45. data/lib/{n → nitro}/logger.rb +8 -8
  46. data/lib/{n → nitro}/macros.rb +3 -3
  47. data/lib/{n → nitro}/mixins.rb +1 -1
  48. data/lib/nitro/properties.rb +301 -0
  49. data/lib/{n → nitro}/server.rb +2 -2
  50. data/lib/{n → nitro}/server/appserver.rb +14 -5
  51. data/lib/{n → nitro}/server/cluster.rb +5 -5
  52. data/lib/{n → nitro}/server/cookie.rb +1 -1
  53. data/lib/nitro/server/dispatcher.rb +66 -0
  54. data/lib/{n → nitro}/server/filters.rb +7 -7
  55. data/lib/{n → nitro}/server/filters/autologin.rb +3 -3
  56. data/lib/{n → nitro}/server/fragment.rb +3 -3
  57. data/lib/{n → nitro}/server/handlers.rb +3 -3
  58. data/lib/nitro/server/render.rb +200 -0
  59. data/lib/{n → nitro}/server/request.rb +6 -6
  60. data/lib/{n → nitro}/server/requestpart.rb +5 -5
  61. data/lib/{n → nitro}/server/script.rb +3 -3
  62. data/lib/{n → nitro}/server/server.rb +4 -4
  63. data/lib/{n → nitro}/server/session.rb +3 -3
  64. data/lib/nitro/server/shaders.rb +165 -0
  65. data/lib/{n → nitro}/server/user.rb +1 -1
  66. data/lib/nitro/server/webrick.rb +175 -0
  67. data/lib/nitro/service.rb +25 -0
  68. data/lib/{n → nitro}/sitemap.rb +2 -2
  69. data/lib/{n → nitro}/ui/date-select.rb +0 -0
  70. data/lib/{n → nitro}/ui/pager.rb +1 -1
  71. data/lib/{n → nitro}/ui/popup.rb +1 -1
  72. data/lib/{n → nitro}/ui/select.rb +1 -1
  73. data/lib/{n → nitro}/ui/tabs.rb +1 -1
  74. data/lib/{n → nitro}/utils/array.rb +1 -1
  75. data/lib/{n → nitro}/utils/cache.rb +1 -1
  76. data/lib/{n → nitro}/utils/gfx.rb +1 -1
  77. data/lib/{n → nitro}/utils/hash.rb +1 -1
  78. data/lib/{n → nitro}/utils/html.rb +1 -1
  79. data/lib/{n → nitro}/utils/http.rb +1 -1
  80. data/lib/{n → nitro}/utils/mail.rb +1 -1
  81. data/lib/{n → nitro}/utils/number.rb +1 -1
  82. data/lib/{n → nitro}/utils/pool.rb +1 -1
  83. data/lib/{n → nitro}/utils/string.rb +19 -95
  84. data/lib/{n → nitro}/utils/template.rb +0 -0
  85. data/lib/{n → nitro}/utils/time.rb +1 -1
  86. data/lib/{n → nitro}/utils/uri.rb +3 -3
  87. data/lib/nitro/version.rb +11 -0
  88. data/lib/{n/og.rb → og.rb} +61 -31
  89. data/lib/{n/og → og}/backend.rb +13 -7
  90. data/lib/{n/og → og}/backends/mysql.rb +43 -39
  91. data/lib/{n/og → og}/backends/psql.rb +42 -38
  92. data/lib/{n/og → og}/connection.rb +21 -9
  93. data/lib/{n/og → og}/meta.rb +18 -12
  94. data/lib/xsl/base.xsl +11 -88
  95. data/test/n/server/tc_cookie.rb +1 -1
  96. data/test/n/server/tc_filters.rb +1 -1
  97. data/test/n/server/tc_request.rb +3 -3
  98. data/test/n/server/tc_requestpart.rb +2 -2
  99. data/test/n/server/tc_session.rb +1 -1
  100. data/test/n/tc_events.rb +1 -1
  101. data/test/n/tc_og.rb +16 -18
  102. data/test/n/tc_properties.rb +22 -18
  103. data/test/n/tc_sitemap.rb +2 -2
  104. data/test/n/ui/tc_pager.rb +4 -4
  105. data/test/n/utils/tc_cache.rb +1 -1
  106. data/test/n/utils/tc_hash.rb +1 -1
  107. data/test/n/utils/tc_html.rb +1 -1
  108. data/test/n/utils/tc_http.rb +1 -1
  109. data/test/n/utils/tc_number.rb +1 -1
  110. data/test/n/utils/tc_strings.rb +1 -46
  111. data/test/n/utils/tc_uri.rb +1 -1
  112. metadata +101 -108
  113. data/examples/simple/README +0 -42
  114. data/examples/simple/app.rb +0 -31
  115. data/examples/simple/conf/apache.conf +0 -100
  116. data/examples/simple/conf/config.rb +0 -72
  117. data/examples/simple/conf/debug-config.rb +0 -26
  118. data/examples/simple/conf/live-config.rb +0 -26
  119. data/examples/simple/conf/requires.rb +0 -43
  120. data/examples/simple/ctl +0 -32
  121. data/examples/simple/env.rb +0 -32
  122. data/examples/simple/install.rb +0 -12
  123. data/examples/simple/lib/articles/entities.rb +0 -37
  124. data/examples/simple/lib/articles/lc-en.rb +0 -36
  125. data/examples/simple/lib/articles/methods.rb +0 -55
  126. data/examples/simple/lib/articles/part.rb +0 -57
  127. data/examples/simple/root/add-article.sx +0 -15
  128. data/examples/simple/root/article-form.ss +0 -20
  129. data/examples/simple/root/comments-form.ss +0 -16
  130. data/examples/simple/root/comments.si +0 -30
  131. data/examples/simple/root/index.sx +0 -44
  132. data/examples/simple/root/shader/shader.xsl +0 -100
  133. data/examples/simple/root/shader/style.css +0 -9
  134. data/examples/simple/root/view-article.sx +0 -29
  135. data/examples/tiny/conf/config.rb +0 -62
  136. data/examples/tiny/conf/requires.rb +0 -33
  137. data/examples/tiny/ctl +0 -16
  138. data/lib/n/parts.rb +0 -157
  139. data/lib/n/properties.rb +0 -199
  140. data/lib/n/server/dispatcher.rb +0 -55
  141. data/lib/n/server/handlers/code-handler.rb +0 -182
  142. data/lib/n/server/handlers/page-handler.rb +0 -612
  143. data/lib/n/server/webrick.rb +0 -283
  144. data/lib/n/shaders.rb +0 -166
  145. data/lib/n/sync/clc.rb +0 -110
  146. data/lib/n/sync/handler.rb +0 -229
  147. data/lib/n/sync/server.rb +0 -176
  148. data/lib/p/README +0 -1
@@ -1,26 +0,0 @@
1
- # = Debug Configuration
2
- #
3
- # Configuration to use while debugging, this is slow.
4
- #
5
- # code:
6
- # * George Moschovitis <gm@navel.gr>
7
- #
8
- # (c) 2004 Navel, all rights reserved.
9
- # $Id: debug-config.rb 118 2004-11-01 10:13:42Z gmosx $
10
-
11
- require "simple/conf/config"
12
-
13
- # Database
14
-
15
- $og = N::Og.new(
16
- :address => "localhost",
17
- :database => "simple",
18
- :user => "postgres",
19
- :password => "navelrulez",
20
- :connection_count => 2
21
- )
22
-
23
- $og.get_connection
24
- $og.manage(N::Article)
25
- $og.manage(N::Comment)
26
-
@@ -1,26 +0,0 @@
1
- # = Live Configuration
2
- #
3
- # Configuration to use in the live server, optimized for speed.
4
- #
5
- # code:
6
- # * George Moschovitis <gm@navel.gr>
7
- #
8
- # (c) 2004 Navel, all rights reserved.
9
- # $Id: live-config.rb 118 2004-11-01 10:13:42Z gmosx $
10
-
11
- require "simple/conf/config"
12
-
13
- # Logger
14
-
15
- $log = Logger.new("simple/logs/app.log", 10);
16
- $log.level = Logger::INFO
17
-
18
- # Database
19
-
20
- $og = N::Og.new(
21
- :address => "localhost",
22
- :database => "simple",
23
- :user => "postgres",
24
- :password => "navelrulez",
25
- :connection_count => 20
26
- )
@@ -1,43 +0,0 @@
1
- # = Requires all needed files
2
- #
3
- # Collect all requires in one file includable
4
- # in multiple executable scripts. Moreover, it
5
- # makes the main script file more readable.
6
- #
7
- # code:
8
- # * George Moschovitis <gm@navel.gr>
9
- #
10
- # (c) 2004 Navel, all rights reserved.
11
- # $Id: requires.rb 118 2004-11-01 10:13:42Z gmosx $
12
-
13
- require "n/std"
14
- require "n/properties"
15
-
16
- require "n/og"
17
- require "n/l10n"
18
- require "n/logger"
19
- require "n/parts"
20
- require "n/events"
21
- require "n/shaders"
22
- require "n/mixins"
23
- require "n/sitemap"
24
-
25
- require "n/utils/number"
26
- require "n/utils/string"
27
- require "n/utils/gfx"
28
- require "n/utils/html"
29
- require "n/utils/hash"
30
- require "n/utils/array"
31
-
32
- require "n/ui/popup"
33
- require "n/ui/select"
34
- require "n/ui/pager"
35
- require "n/ui/tabs"
36
- require "n/ui/date-select"
37
-
38
- require "n/server/cluster"
39
- require "n/server/handlers/page-handler"
40
- require "n/server/handlers/code-handler"
41
-
42
- require "articles/part"
43
-
@@ -1,32 +0,0 @@
1
- #! /bin/sh
2
-
3
- ARGV="$@"
4
-
5
- case $ARGV in
6
- start)
7
- /usr/sbin/httpd -d `pwd` -f conf/apache.conf
8
- ruby -C../.. bin/cluster.rb --daemon
9
- ruby -C.. simple/app.rb --start # --daemon
10
- ERROR=$?
11
- ;;
12
- restart)
13
- # restart appserver only!
14
- export ASPID= `ps ax | grep app.rb | grep ruby | cut -d" " -f1`
15
- if [ -n "$ASPID" ]; then
16
- echo $ASPID
17
- kill -9 $ASPID
18
- fi
19
- ruby -C.. simple/app.rb --restart # --daemon
20
- ERROR=$?
21
- ;;
22
- stop)
23
- killall -9 ruby httpd
24
- ERROR=$?
25
- ;;
26
- *)
27
- echo "NOP"
28
- ERROR=$?
29
- esac
30
-
31
- exit $ERROR
32
-
@@ -1,32 +0,0 @@
1
- # = Environment
2
- #
3
- # Require this file in your script to gain access to the full
4
- # AppServer environment.
5
- #
6
- # code:
7
- # * George Moschovitis <gm@navel.gr>
8
- #
9
- # (c) 2004 Navel, all rights reserved.
10
- # $Id: env.rb 124 2004-11-01 12:34:17Z gmosx $
11
-
12
- $:.unshift ".."
13
- $:.unshift "simple/lib"
14
- $:.unshift "../lib"
15
-
16
- $DBG = true
17
- $DBG ? (require "simple/conf/debug-config") : (require "simple/conf/live-config")
18
-
19
- require "n/server/server"
20
-
21
- $drb_lm_server = "druby://:10000"
22
-
23
- module App
24
-
25
- class Server < N::AppServer
26
- include App::Config
27
- end
28
-
29
- end # module
30
-
31
- $app = App::Server.new.exec()
32
-
@@ -1,12 +0,0 @@
1
- # = Install
2
- #
3
- #--
4
- # code:
5
- # George Moschovitis <gm@navel.gr>
6
- #
7
- # (c) 2004 Navel, all rights reserved.
8
- # $Id: install.rb 84 2004-10-19 13:57:01Z gmosx $
9
- #++
10
-
11
- `createdb simple -U postgres`
12
-
@@ -1,37 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: entities.rb 118 2004-11-01 10:13:42Z gmosx $
6
-
7
- module N
8
-
9
- # gmosx: forward declaration, can we avoid this?
10
- class Comment; end
11
-
12
- # = Article
13
- #
14
- class Article
15
- prop_accessor String, :title
16
- prop_accessor String, :body
17
- prop_accessor Time, :create_time
18
- has_many N::Comment, :comments
19
-
20
- def initialize
21
- @create_time = Time.now
22
- end
23
- end
24
-
25
- # = Comment
26
- #
27
- class Comment
28
- prop_accessor String, :body
29
- prop_accessor Time, :create_time
30
- belongs_to N::Article, :article
31
-
32
- def initialize
33
- @create_time = Time.now
34
- end
35
- end
36
-
37
- end # module
@@ -1,36 +0,0 @@
1
- # = Base English Localization Dictionary
2
- #
3
- #--
4
- # code:
5
- # George Moschovitis <gm@navel.gr>
6
- #
7
- # (c) 2004 Navel, all rights reserved.
8
- # $Id: lc-en.rb 84 2004-10-19 13:57:01Z gmosx $
9
- #++
10
-
11
- $lc_en.update({
12
-
13
- :general => "General",
14
- :edit => "Edit",
15
- :add => "Add",
16
- :del => "Delete",
17
- :cancel => "Cancel",
18
- :preview => "Preview",
19
- :store => "Store",
20
- :update => "Update",
21
- :submit => "Submit",
22
- :title => "Title",
23
- :body => "Body",
24
- :description => "Description",
25
- :answer => "Answer",
26
- :refresh => "Refresh",
27
- :select_all => "Select all",
28
- :clear_all => "Clear all",
29
-
30
- # search
31
-
32
- :search => "Search",
33
- :search_results => "Search results",
34
- :results_found => proc { |count| "#{count} results found" }
35
-
36
- })
@@ -1,55 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: methods.rb 118 2004-11-01 10:13:42Z gmosx $
6
-
7
- module P
8
-
9
- # = ArticlesMethods
10
- #
11
- # Methods for the Articles part.
12
- #
13
- module ArticlesMethods
14
-
15
- # Add an article
16
- #
17
- def add_article(request)
18
- if request["add_article"]
19
- article = N::Article.new
20
- request.update_entity(article)
21
- article.save!
22
- request.redirect("index.sx")
23
- end
24
- end
25
-
26
- # Delete an article
27
- #
28
- def del_article(request)
29
- if oid = request["del_article_oid"]
30
- N::Article.delete(oid)
31
- end
32
- end
33
-
34
- # Add a comment
35
- #
36
- def add_comment(request)
37
- if pid = request["add_comment_pid"]
38
- comment = N::Comment.new
39
- comment.article = pid
40
- request.update_entity(comment)
41
- comment.save!
42
- end
43
- end
44
-
45
- # Delete a comment
46
- #
47
- def del_comment(request)
48
- if oid = request["del_comment_oid"]
49
- N::Comment.delete(oid)
50
- end
51
- end
52
-
53
- end
54
-
55
- end # module
@@ -1,57 +0,0 @@
1
- # code:
2
- # * George Moschovitis <gm@navel.gr>
3
- #
4
- # (c) 2004 Navel, all rights reserved.
5
- # $Id: part.rb 118 2004-11-01 10:13:42Z gmosx $
6
-
7
- require "articles/lc-en"
8
- require "articles/entities"
9
- require "articles/methods"
10
-
11
- module P
12
-
13
- # = Articles
14
- #
15
- # A simple articles part.
16
- #
17
- class Articles < N::Part
18
- extend P::ArticlesMethods
19
-
20
- #
21
- #
22
- def initialize
23
- @name = "articles"
24
- @title = "Articles"
25
- @body = "Simple articles management"
26
- @version = "$Id: part.rb 118 2004-11-01 10:13:42Z gmosx $"
27
- @path = ""
28
- super
29
- end
30
-
31
- # Updates the sitemap by attaching site specific nodes.
32
- #
33
- def sitemap
34
- n1 = N::SitePage.new "#@path/index.sx", "Articles"
35
- n2 = N::SitePage.new "#@path/add-article.sx", "Add", n1
36
- n2 = N::SitePage.new "#@path/view-article.sx", "View", n1
37
- end
38
-
39
- #
40
- #
41
- def rewrites
42
- $rewrites["articles"] = {
43
- /\/articles\/(.*?)\/index.sx/ => '/view-article.sx?oid=\1'
44
- }
45
- end
46
-
47
- #
48
- #
49
- def roles
50
- $roles.concat %w{articles.moderator}
51
- end
52
-
53
- end
54
-
55
- end # module
56
-
57
- a = P::Articles.instance
@@ -1,15 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <root
4
- xmlns:x="http://www.navel.gr/xml/shader.xsd"
5
- xmlns:xl="http://www.w3.org/1999/xlink">
6
-
7
-
8
- <x:page>
9
-
10
- <!-- include the form at compile time -->
11
- <?include xl:href="article-form.ss" ?>
12
-
13
- </x:page>
14
-
15
- </root>
@@ -1,20 +0,0 @@
1
- <?r
2
- # methods:
3
- P::Articles.add_article(request)
4
- ?>
5
-
6
- <form id="add_article" method="post">
7
- <input type="hidden" name="add_article" value="*" />
8
-
9
- <p>
10
- <label for="title">|:title|</label><br />
11
- <input type="text" name="title" style="width: 250px" />
12
- </p>
13
- <p>
14
- <label for="body">|:body|</label><br />
15
- <textarea name="body" style="width: 90%; height: 100px">#{}</textarea>
16
- </p>
17
-
18
- <input type="submit" value="|:store|" />
19
- </form>
20
-
@@ -1,16 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <!-- the <?xml declaration is optional, but lets be strict. -->
4
-
5
- <form id="comments_form" method="post">
6
- <input type="hidden" name="add_comment_pid" value="#{request[:comments_parent].oid}" />
7
- <input type="hidden" name="oid" value="#{request[:comments_parent].oid}" />
8
-
9
- <p>
10
- <!-- the |:...| construct is a localization macro. -->
11
- <label for="body">|:body|</label><br />
12
- <textarea name="body" style="width: 90%; height: 100px">#{}</textarea>
13
- </p>
14
-
15
- <input type="submit" value="|:store|" />
16
- </form>
@@ -1,30 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <!-- the <?xml declaration is optional, but lets be strict. -->
4
-
5
- <p>
6
-
7
- <?r
8
- # methods:
9
- P::Articles.add_comment(request)
10
- P::Articles.del_comment(request)
11
-
12
- parent = request[:comments_parent]
13
- comments = parent.comments
14
- ?>
15
-
16
- <?r if comments ?>
17
- <ul>
18
- <?r for comment in comments ?>
19
- <li>
20
- <b>#{N::TimeUtils.date_time(comment.create_time)}:</b> #{comment.body}
21
- [<a href="@?del_comment_oid=#{comment.oid}">del</a>]
22
- </li>
23
- <?r end ?>
24
- </ul>
25
- <?r end ?>
26
-
27
- <!-- include at compile time (static include) -->
28
- <?include xl:href="comments-form.ss" ?>
29
-
30
- </p>