nitro 0.31.0 → 0.40.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 (174) hide show
  1. data/bin/nitro +135 -37
  2. data/doc/CHANGELOG.1 +108 -108
  3. data/doc/CHANGELOG.2 +89 -89
  4. data/doc/CHANGELOG.3 +105 -105
  5. data/{CHANGELOG → doc/CHANGELOG.4} +509 -509
  6. data/doc/{AUTHORS → CONTRIBUTORS} +49 -37
  7. data/doc/LIBRARIES +13 -0
  8. data/doc/LICENSE +2 -3
  9. data/doc/MIGRATION +45 -0
  10. data/doc/RELEASES +131 -11
  11. data/doc/TODO +67 -0
  12. data/lib/glue/magick.rb +0 -3
  13. data/lib/glue/sweeper.rb +30 -15
  14. data/lib/glue/thumbnails.rb +0 -2
  15. data/lib/glue/webfile.rb +23 -11
  16. data/lib/nitro.rb +37 -44
  17. data/lib/nitro/adapter/cgi.rb +0 -3
  18. data/lib/nitro/adapter/console.rb +0 -2
  19. data/lib/nitro/adapter/fastcgi.rb +6 -3
  20. data/lib/nitro/adapter/mongrel.rb +97 -58
  21. data/lib/nitro/adapter/script.rb +4 -6
  22. data/lib/nitro/adapter/webrick.rb +33 -87
  23. data/lib/nitro/adapter/webrick/vcr.rb +85 -0
  24. data/lib/nitro/caching.rb +0 -2
  25. data/lib/nitro/caching/actions.rb +0 -2
  26. data/lib/nitro/caching/fragments.rb +0 -2
  27. data/lib/nitro/caching/output.rb +45 -16
  28. data/lib/nitro/caching/proxy.rb +49 -0
  29. data/lib/nitro/cgi.rb +3 -6
  30. data/lib/nitro/cgi/cookie.rb +0 -3
  31. data/lib/nitro/cgi/request.rb +67 -24
  32. data/lib/nitro/cgi/response.rb +0 -2
  33. data/lib/nitro/cgi/{sendfile.rb → send_file.rb} +7 -6
  34. data/lib/nitro/compiler.rb +62 -55
  35. data/lib/nitro/compiler/cleanup.rb +0 -3
  36. data/lib/nitro/compiler/elements.rb +31 -28
  37. data/lib/nitro/compiler/errors.rb +2 -5
  38. data/lib/nitro/compiler/include.rb +10 -8
  39. data/lib/nitro/compiler/layout.rb +0 -2
  40. data/lib/nitro/compiler/localization.rb +0 -2
  41. data/lib/nitro/compiler/markup.rb +14 -6
  42. data/lib/nitro/compiler/morphing.rb +1 -5
  43. data/lib/nitro/compiler/script.rb +2 -4
  44. data/lib/nitro/compiler/squeeze.rb +0 -2
  45. data/lib/nitro/compiler/xslt.rb +0 -2
  46. data/lib/nitro/context.rb +10 -5
  47. data/lib/nitro/control.rb +18 -0
  48. data/lib/nitro/control/attribute.rb +88 -0
  49. data/lib/nitro/control/attribute/checkbox.rb +19 -0
  50. data/lib/nitro/control/attribute/datetime.rb +21 -0
  51. data/lib/nitro/control/attribute/file.rb +20 -0
  52. data/lib/nitro/control/attribute/fixnum.rb +26 -0
  53. data/lib/nitro/control/attribute/float.rb +26 -0
  54. data/lib/nitro/control/attribute/options.rb +38 -0
  55. data/lib/nitro/control/attribute/password.rb +16 -0
  56. data/lib/nitro/control/attribute/text.rb +16 -0
  57. data/lib/nitro/control/attribute/textarea.rb +16 -0
  58. data/lib/nitro/control/none.rb +16 -0
  59. data/lib/nitro/control/relation.rb +53 -0
  60. data/lib/nitro/control/relation/belongs_to.rb +0 -0
  61. data/lib/nitro/control/relation/has_many.rb +97 -0
  62. data/lib/nitro/control/relation/joins_many.rb +0 -0
  63. data/lib/nitro/control/relation/many_to_many.rb +0 -0
  64. data/lib/nitro/control/relation/refers_to.rb +29 -0
  65. data/lib/nitro/controller.rb +7 -296
  66. data/lib/nitro/dispatcher.rb +72 -34
  67. data/lib/nitro/element.rb +36 -10
  68. data/lib/nitro/element/javascript.rb +0 -2
  69. data/lib/nitro/flash.rb +23 -10
  70. data/lib/nitro/global.rb +36 -11
  71. data/lib/nitro/helper.rb +22 -8
  72. data/lib/nitro/helper/benchmark.rb +0 -2
  73. data/lib/nitro/helper/buffer.rb +0 -3
  74. data/lib/nitro/helper/css.rb +12 -0
  75. data/lib/nitro/helper/debug.rb +1 -3
  76. data/lib/nitro/helper/default.rb +1 -0
  77. data/lib/nitro/helper/feed.rb +400 -386
  78. data/lib/nitro/helper/form.rb +246 -116
  79. data/lib/nitro/helper/javascript.rb +28 -2
  80. data/lib/nitro/helper/javascript/morphing.rb +0 -2
  81. data/lib/nitro/helper/javascript/prototype.rb +0 -2
  82. data/lib/nitro/helper/javascript/scriptaculous.rb +0 -1
  83. data/lib/nitro/helper/layout.rb +0 -2
  84. data/lib/nitro/helper/navigation.rb +87 -0
  85. data/lib/nitro/helper/pager.rb +11 -22
  86. data/lib/nitro/helper/table.rb +9 -32
  87. data/lib/nitro/helper/url.rb +104 -0
  88. data/lib/nitro/helper/xhtml.rb +20 -4
  89. data/lib/nitro/helper/xml.rb +0 -2
  90. data/lib/nitro/markup.rb +131 -0
  91. data/lib/nitro/part.rb +52 -7
  92. data/lib/nitro/publishable.rb +328 -0
  93. data/lib/nitro/render.rb +30 -61
  94. data/lib/nitro/router.rb +12 -4
  95. data/lib/nitro/sanitize.rb +48 -0
  96. data/lib/nitro/scaffold.rb +9 -11
  97. data/lib/nitro/scaffold/controller.rb +25 -0
  98. data/lib/nitro/scaffold/model.rb +150 -0
  99. data/lib/nitro/scaffolding.rb +1 -3
  100. data/lib/nitro/server.rb +57 -32
  101. data/lib/nitro/server/drb.rb +16 -2
  102. data/lib/nitro/server/runner.rb +80 -102
  103. data/lib/nitro/service.rb +0 -1
  104. data/lib/nitro/service/xmlrpc.rb +0 -2
  105. data/lib/nitro/session.rb +26 -18
  106. data/lib/nitro/session/drb.rb +2 -16
  107. data/lib/nitro/session/memory.rb +0 -2
  108. data/lib/nitro/template.rb +219 -0
  109. data/lib/nitro/test/assertions.rb +1 -3
  110. data/lib/nitro/test/context.rb +0 -1
  111. data/lib/nitro/test/testcase.rb +0 -1
  112. data/lib/nitro/version.rb +6 -0
  113. data/lib/part/admin.rb +16 -0
  114. data/lib/part/admin/controller.rb +19 -0
  115. data/lib/part/admin/helper.rb +30 -0
  116. data/lib/part/admin/og/controller.rb +114 -0
  117. data/lib/part/admin/og/customize.rb +4 -0
  118. data/lib/part/admin/og/template/index.xhtml +27 -0
  119. data/lib/part/admin/og/template/list.xhtml +38 -0
  120. data/lib/part/admin/og/template/search.xhtml +20 -0
  121. data/lib/part/admin/og/template/update.xhtml +25 -0
  122. data/lib/part/admin/skin.rb +207 -0
  123. data/lib/part/admin/template/denied.xhtml +13 -0
  124. data/lib/part/admin/template/index.xhtml +12 -0
  125. data/lib/part/admin/todo.txt +2 -0
  126. data/proto/public/error.xhtml +4 -2
  127. data/proto/run.rb +0 -2
  128. data/test/glue/tc_webfile.rb +1 -0
  129. data/test/nitro/cgi/tc_request.rb +23 -0
  130. data/test/nitro/helper/tc_feed.rb +0 -3
  131. data/test/nitro/helper/tc_navbar.rb +74 -0
  132. data/test/nitro/helper/tc_table.rb +2 -0
  133. data/test/nitro/tc_cgi.rb +72 -19
  134. data/test/nitro/tc_controller.rb +35 -26
  135. data/test/nitro/tc_controller_aspect.rb +1 -0
  136. data/test/nitro/tc_controller_params.rb +864 -0
  137. data/test/nitro/tc_dispatcher.rb +2 -2
  138. data/test/nitro/tc_element.rb +16 -16
  139. data/test/nitro/tc_flash.rb +3 -3
  140. data/test/nitro/tc_markup.rb +31 -0
  141. data/test/nitro/tc_render.rb +12 -14
  142. data/test/nitro/tc_session.rb +9 -7
  143. data/test/nitro/tc_template.rb +34 -0
  144. metadata +217 -198
  145. data/INSTALL +0 -121
  146. data/ProjectInfo +0 -74
  147. data/README +0 -555
  148. data/doc/apache.txt +0 -9
  149. data/doc/config.txt +0 -28
  150. data/doc/faq.txt +0 -7
  151. data/doc/lhttpd.txt +0 -7
  152. data/lib/nitro/adapter/scgi.rb +0 -239
  153. data/lib/nitro/helper/form/builder.rb +0 -144
  154. data/lib/nitro/helper/form/controls.rb +0 -389
  155. data/lib/nitro/helper/rss.rb +0 -72
  156. data/proto/conf/apache.conf +0 -51
  157. data/proto/public/scaffold/advanced_search.xhtml +0 -30
  158. data/proto/public/scaffold/edit.xhtml +0 -11
  159. data/proto/public/scaffold/form.xhtml +0 -1
  160. data/proto/public/scaffold/index.xhtml +0 -20
  161. data/proto/public/scaffold/list.xhtml +0 -32
  162. data/proto/public/scaffold/new.xhtml +0 -11
  163. data/proto/public/scaffold/search.xhtml +0 -29
  164. data/proto/public/scaffold/view.xhtml +0 -8
  165. data/proto/script/scgi_ctl +0 -221
  166. data/proto/script/scgi_service +0 -128
  167. data/setup.rb +0 -1585
  168. data/src/part/admin.rb +0 -16
  169. data/src/part/admin/controller.rb +0 -81
  170. data/src/part/admin/skin.rb +0 -21
  171. data/src/part/admin/system.css +0 -135
  172. data/src/part/admin/template/denied.xhtml +0 -1
  173. data/src/part/admin/template/index.xhtml +0 -43
  174. data/test/nitro/helper/tc_rss.rb +0 -24
data/INSTALL DELETED
@@ -1,121 +0,0 @@
1
- = Instalation with RubyGems
2
-
3
- 1. Download and install RubyGems:
4
-
5
- http://rubygems.rubyforge.org
6
-
7
- 2. Install the distribution:
8
-
9
- gem install nitro
10
-
11
- If you wish to install Og only:
12
-
13
- gem install og
14
-
15
- (make sure you have the latest stable versions of Ruby and RubyGems
16
- installed)
17
-
18
- When asked about the dependencies to include, only accept
19
- the dependencies for the RDBMS backends you are planning
20
- to use.
21
-
22
- 3. Set environment variable (required to load RubyGems):
23
-
24
- export RUBYOPT=-rubygems
25
-
26
- You can add this in you .bashrc in Unix.
27
-
28
- Alternatively you can run your applications with the -rubygem
29
- option:
30
-
31
- ruby -rubygem xxx.rb
32
-
33
- 4. To verify that everything works ok, run the command
34
-
35
- nitro
36
-
37
- = Installation without RubyGems using script.
38
-
39
- Installation without RubyGems is *strongly* discouraged.
40
- However, as Nitro is all about freedom and possibilities,
41
- a standard installation script is provided.
42
-
43
- 1. Switch to an administrator account
44
-
45
- For example in Unix:
46
-
47
- $ su -
48
-
49
- 2. Run the installation script.
50
-
51
- $ ruby setup.rb
52
-
53
- This installation script also installs some vendor libraries
54
- that you possibly have allready installed. Use with caution.
55
-
56
- Dependencies needed: See 'ProjectInfo' file located in the
57
- current directory
58
-
59
- = Manual installation.
60
-
61
- Uncompress your distribution (Unix example):
62
-
63
- $ cd my_dir
64
- $ tar xvfz nitro-x.x.x.tar.gz
65
-
66
- Put the libray dir in the Ruby path (Unix example):
67
-
68
- $ export RUBYOPT='-I path/to/nitro/lib'
69
-
70
- or, at windows
71
-
72
- > set RUBYOPT=Ic:\dev\nitro\lib;c:\dev\og\lib;c:\dev\glue\lib
73
-
74
- You also may have to manualy install the following libraries:
75
-
76
- * Nano
77
- * Mega
78
- * RedCloth
79
-
80
- = Additional libraries
81
-
82
- Nitro uses a number of additional libraries. RubyGems
83
- installs most of them, but here is the complete
84
- list for your reference. Please not that most of these
85
- libraries are optional.
86
-
87
- * PostgreSQL
88
- http://www.postgres.org
89
- Used for Database driven web applications.
90
-
91
- * MySQL
92
- http://www.mysql.org
93
- Used for Database driven web applications.
94
-
95
- * Ruby-psql
96
- http://www.postgresql.jp/interfaces/ruby/archive/ruby-postgres-0.7.1.tar.gz
97
- Ruby interface to the PostgreSQL RDBMS.
98
-
99
- * Ruby-mysql
100
- http://tmtm.org/ja/ruby/mysql/README_en.html
101
- Ruby interface to the MySQL RDBMS.
102
-
103
- * Ruby-XSLT
104
- http://gregoire.lejeune.free.fr/ruby-xslt_0.4.0.tar.gz
105
- Used for XSLT based templates.
106
-
107
- * Apache 2.0
108
- http://www.apache.org
109
- Used to host application in production environments.
110
-
111
- * Lighttpd
112
- http://www.lighttpd.net/
113
- A lean and efficient web server. A perfect companion to Nitro.
114
-
115
- * Ruby-fcgi
116
- http://www.moonwolf.com/ruby/archive/ruby-fcgi-0.8.5.tar.gz
117
- Used for FCGI based applications.
118
-
119
- * FastCGI development kit
120
- http://www.fastcgi.com/dist/fcgi.tar.gz
121
- Needed to compile the C-version of the ruby fcgi library.
@@ -1,74 +0,0 @@
1
- --- %YAML:1.0
2
-
3
- TITLE : &title Nitro
4
- NAME : &pkg nitro
5
- VERSION : '0.31.0'
6
- STATUS : beta
7
-
8
- AUTHOR : George Moschovitis
9
- EMAIL : &email gm@navel.gr
10
- HOMEPAGE : "http://www.nitroproject.org"
11
-
12
- SUMMARY: Everything you need to create Web 2.0 applications with Ruby and Javascript
13
-
14
- DESCRIPTION: >
15
- Nitro provides everything you need to develop professional Web
16
- applications using Ruby and Javascript. Nitro redefines Rapid
17
- Application Development by providing a clean, yet efficient API,
18
- a layer of domain specific languages implemented on top of
19
- Ruby and the most powerful and elegant object relational
20
- mapping solution available everywhere. Nitro is Web 2.0 ready,
21
- featuring excellent support for AJAX, XML, Syndication while
22
- staying standards compliant.
23
-
24
- RUBYFORGE:
25
- PROJECT: 'nitro'
26
- USERNAME: 'gmosx'
27
-
28
- DEPENDENCIES:
29
- - [ og, '= 0.31.0' ]
30
- - [ gen, '= 0.31.0' ]
31
- - [ glue, '= 0.31.0' ]
32
- - [ RedCloth, '= 3.0.3' ]
33
- - [ ruby-breakpoint, '~> 0.5' ]
34
- - [ daemons, '~> 0.4' ]
35
-
36
- EXECUTABLES:
37
- - nitro
38
-
39
- PACKAGE: !!package
40
- distribute: [ gem, tgz, zip ]
41
-
42
- RDOC: !!rdoc
43
- dir: rdoc
44
- options: ['--all', '--inline-source']
45
- include:
46
- - 'lib/nitro/**/*'
47
- - '[A-Z]*'
48
-
49
- PUBLISH: !!publish
50
- host: rubyforge
51
- type: web
52
- username: gmosx
53
- project: nitro
54
- dir: 'web'
55
-
56
- TEST: !!test
57
- libs:
58
- - '../glue/lib'
59
- - '../og/lib'
60
-
61
- ANNOUNCE: !!announce
62
- to: george.moschovitis@gmail.com
63
- from: gm@navel.gr
64
- domain: navel.gr
65
- server: mail
66
- port: 25 #587
67
- account: gm@navel.gr
68
- authtype: login #cram_md5 #plain
69
- sectype: tls # ~, tls, ssl (tls is broke)
70
- file: ANN
71
- slogan: Nitro Web Engine
72
- links:
73
- - http://www.nitroproject.org
74
-
data/README DELETED
@@ -1,555 +0,0 @@
1
- = Nitro 0.30.0 README
2
-
3
- Nitro provides everything you need to develop professional Web
4
- applications using Ruby and Javascript.
5
-
6
- Nitro redefines Rapid Application Development by providing a
7
- clean, yet efficient API, a layer of domain specific languages
8
- implemented on top of Ruby and the most powerful and elegant
9
- object relational mapping solution available everywhere.
10
-
11
- Nitro is Web 2.0 ready, featuring excellent support for AJAX,
12
- XML, Syndication while staying standards compliant.
13
-
14
- Nitro gives choice to the developer: Multiple paradigms are
15
- implemented, incorporating ideas from Rails, CherryPy, Catalyst,
16
- Wee, PHP, JSP and Microsoft.NET and more. The developer is free
17
- to choose the pattern that better fits his application. This
18
- kind of freedom makes Nitro applicable to a wide range of
19
- applications, spanning from big, scalable web sites with thousands
20
- of concurrent users to simple solutions for deployment on intranet
21
- desktops.
22
-
23
-
24
- == Features
25
-
26
- A short summary of the major features:
27
-
28
- * Multiparadigm web applications.
29
-
30
- You can write applications in the ASP/JSP/PHP style, ie by
31
- writting server pages that are automatically translated to Ruby
32
- code by Nitro.
33
-
34
- Or, you can write MVC style applications (like Rails) by
35
- utilizing the powerfull Object publishing/Controller mechanism.
36
-
37
- Alternatively, you can use stateful components and/or programmatic
38
- rendering: Nitro is the premium container for Wee applications.
39
-
40
- * Advanced Code generation.
41
-
42
- Nitro in essence writes the Web application for you. The system
43
- provides a number of domain spefic language extensions (meta-languages)
44
- to automate the generation of common code (OR mapping, validation,
45
- forms generation, syndication, markup and more).
46
-
47
- * Object-Relational Mapping
48
-
49
- Nitro integrates the Og (ObjectGraph) object-relational mapping
50
- library. Og manages the lifecycle of Ruby objects and provides
51
- transparent serialization of object graphs to stores (typically
52
- RDBM systems)/.
53
-
54
- Unlike other similar solutions Og maps standard Ruby objects
55
- to SQL tables and not vice versa. Og provides a domain specific
56
- language to describe the relations between objects, a flexible
57
- and intuitive api for querieng the database, raw access to the
58
- SQL language if needed (for example to fine tune the automatically
59
- generated SQL tables, or for custom queries), provides automatic
60
- validation, suports deserialization to Ruby objects or tuples,
61
- automatically generates join tables for many_to_many relations
62
- and provides a collection of usefull Mixins to synthesize
63
- common Entities.
64
-
65
- Adapters for PostgreSQL, MySQL, SQLite3, Memory, KirbyBase,
66
- Filesystem, Oracle and SQL Server are included.
67
-
68
- * XML server pages (.xhtml)
69
-
70
- Nitro uses standard, fully xml compliant xhtml pages with logic
71
- code, thus combining the power of embededed Ruby (like erb, eruby)
72
- with the xml compliance of Amrita. Even though it is a 'Callback'
73
- style templating system it is flexible enough to run as 'Pipeline'
74
- style system if the developer prefers this mode of operation.
75
-
76
- <!-- example page -->
77
- <html>
78
-
79
- <?r
80
- title = 'Example'
81
- version = params['version']
82
- ?>
83
-
84
- <h1>#{title}</h1>
85
-
86
- <?r if version > 1 ?>
87
- <b>Version:</b> #{version}
88
- <?r end ?>
89
-
90
- </html>
91
-
92
- * Action / Fragment Synthesis
93
-
94
- Nitro actions and templates can include other actions or templates
95
- to allow for component-based development.
96
-
97
- Here is an example of including an action from a template:
98
-
99
- <render href="list" />
100
-
101
- or
102
-
103
- <inject href="list" />
104
-
105
- or from an action:
106
-
107
- list()
108
-
109
- Nitro server pages can include fragments at 'Compile' time or at
110
- 'RunTime' time.
111
-
112
- <!-- compile time include (static include) -->
113
- <?include href="myfile.inc" ?>
114
-
115
- <!-- run time include (dynamic include) -->
116
- <include href="myfile.inc" />
117
-
118
- * Nitro provides full support for Aspect Oriented programming.
119
- You can use aspects to intercept and customize any component
120
- of the Nitro system.
121
-
122
- * Fully customizable Compile time and Render time pipeline.
123
- Nitro features a fully programmable source transformation pipeline.
124
- For example a pipeline component transforms a standard XHTML
125
- document with embeded ruby-code processing instructions to Ruby
126
- code. Another component could apply XSLT transformation at compile
127
- time to avoid the performance hit. Using the advanced AOP features
128
- or standard OOP practice you can customize the pipeline to your
129
- needs.
130
-
131
- The same is true for the run time render pipeline. Nitro makes
132
- it exteremely easy to add filters or customize the behaviour
133
- of actions. Example filters are the autologin filter,
134
- a gzip filter etc.
135
-
136
- * Excellent support for AJAX and Javascript. Nitro integrates
137
- a set of powerful javascript libraries:
138
-
139
- Prototype
140
- Script.aculo.us
141
- Behaviour
142
-
143
- These libraries are transparently integrated in the rendering
144
- pipeline.
145
-
146
- * Elements subsystem. This is Tag libraries on steroids. You can
147
- define xhtml tags that generate calls to associated Ruby classes
148
- to handle rendering special fx, skins and more.
149
-
150
- * Multiple Platforms
151
-
152
- Runs on Linux, Windows and Mac OSX. It will probably run on other
153
- Unix based system with minor modifications.
154
-
155
- * Multiple Adapters
156
-
157
- Nitro supports multiple web server configurations. Out of the box
158
- it supports WEBrick (pure ruby), Lighttpd (fastcgi/scgi),
159
- Apache (fastcgi / scgi). The prefered adapter is SCGI.
160
- More options will be available in the future.
161
-
162
- * Minimum configuration
163
-
164
- Configuration files are kept to the absolute minimum. The target
165
- is to have no configuration files at all.
166
-
167
- * Scaffolding
168
-
169
- This enables the developer to get started as fast as possible.
170
-
171
- * Auto administration system.
172
-
173
- Just one line of code automagically creates an administration
174
- system for your web application:
175
-
176
- require 'part/admin'
177
-
178
- * Distributed State
179
-
180
- Nitro provides a powerfull distributed state mechanism that utilizes
181
- the DRb library. A typicall use of this infrastructure is to provide
182
- distributed sessions when running your application over a server
183
- cluster. Distributed sessions are fully transparent to the developer.
184
-
185
- * Scalability.
186
-
187
- Nitro promotes the 'share-nothing' architecture pioneered in sites
188
- like Yahoo, LiveJournal, Slashdot, etc to facilate easy scaling
189
- through hardware.
190
-
191
- * Parts
192
-
193
- Parts are organized modules of web services. A Web Framework that
194
- integrates a large collection of parts (User management, Blog,
195
- Fora, CMS, Personalization, ..) will be released by Navel.
196
-
197
- * Web services
198
-
199
- Nitro automates the process of web service development. Just let
200
- Nitro's advanced scaffolding algorithms to generate the boilerplate
201
- code for you.
202
-
203
- * Fine-grained Caching
204
-
205
- Nitro provides a well designed and efficient caching mechanism. Caching
206
- will be provided at the following levels:
207
-
208
- Object Cache (deserialized objects) (coming soon)
209
- Fragment Caching (cache generated sub-parts of a page, or a page)
210
- Action Caching (full pages)
211
- Output Caching (the whole page is stored as html and served by
212
- the front web server, thus completely bypassing Nitro)
213
- HTTP 1.1 Caching (downstream caching of whole pages)
214
-
215
- A variety of invalidation strategies can be implemented.
216
-
217
- * Programmatic xhtml rendering.
218
-
219
- labels = ['George', 'Stella', 'Renos']
220
- html {
221
- head {
222
- title 'A simple test'
223
- }
224
- body {
225
- 10.times {
226
- strong 'Hello World'
227
- i 'Hello World222'
228
- }
229
- select(:id => 'names') {
230
- options :labels => labels, :selected => 1
231
- }
232
- }
233
-
234
- * Automatic validation.
235
-
236
- class User
237
- prop_accessor :name, :password, String
238
- validate_confirmation :password
239
- validate_length :name, :range => 2..12
240
- end
241
-
242
- u = User.new(...)
243
- unless u.valid?
244
- p u.errors.on(:name)
245
- p u.errors[:password]
246
- end
247
-
248
- * Excellent support for Test Driven Development and Testing.
249
- Nitro provides full support for fixtures, mocking and a set
250
- of custom assertions for testing everything, from controller
251
- logic to your models.
252
-
253
- * Implicit nice urls. Nitro automatically generates nice urls
254
- for your actions. However, if you want to customize the defaults,
255
- a powerful routing mechanism is provided.
256
-
257
- * Advanced debuging features
258
-
259
- When running in debug mode, all exceptions raised are logged
260
- to a special debug panel in the current page. Find out the offending
261
- file and line from the exception dump, fix the bug, refresh the page.
262
-
263
- in-process console: inject an irb session to a running application
264
- server. You can use the irb console to investigate all variables
265
- and code in your running server process.
266
-
267
- integrates the 'breakpoint' library by Florian Gross. The Breakpoint
268
- library provides the convenience of being able to inspect and modify
269
- state, diagnose bugs all via IRB by simply setting breakpoints in
270
- your applications by the call of a method.
271
-
272
- * Helper mixins
273
-
274
- Nitro is distributed with a collection of usefull mixins
275
- to make form based application development easier (for example
276
- an efficient, database-aware Pager component).
277
-
278
- * Localization
279
-
280
- Nitro supports efficient and fully transparent localization of
281
- web applications.
282
-
283
- * Morphing
284
-
285
- Nitro provides revolutionary morphing capabilities. You can
286
- easily add extra attributes to standard html tags or create
287
- new tags.
288
-
289
- Here are some example morpher (included by default):
290
-
291
- <div id="mydiv" draggable="true">...
292
-
293
- makes this div draggable using Scriptaculous.
294
-
295
- <li for="photo in photos">#{photo.title}</li>
296
-
297
- generates
298
-
299
- <? for photo in photos ?>
300
- <li>#{photo.title}</li>
301
- <? end ?>
302
-
303
- and much much more. Your imagination is the limit.
304
-
305
- * Mailer
306
-
307
- Nitro provides excellent support for handling emails in your
308
- Web application. Both incoming and outgoing email support is
309
- provided.
310
-
311
- * Wee integration.
312
-
313
- Nitro is the premium container for Wee stateful components.
314
-
315
-
316
- == What's new
317
-
318
- For information about the latest changes please consult the
319
- file
320
-
321
- doc/RELEASES
322
-
323
-
324
- == Download
325
-
326
- The latest version of Nitro can be found at
327
-
328
- * http://www.nitroproject.org
329
-
330
-
331
- == Documentation
332
-
333
- Documentation for Nitro can be found at
334
-
335
- * http://www.nitroproject.org
336
-
337
- Don't forget to read the file doc/RELEASES for usefull
338
- documentation bits. Also, have a look at the test cases in
339
- the test directory for examples of usage.
340
-
341
-
342
- == Videos / Screencasts
343
-
344
- A number of videos that demonstrate Nitro in practical usage
345
- are available here:
346
-
347
- http://www.nitroproject.org/view/Videos
348
-
349
-
350
- == Requirements
351
-
352
- Nitro requires the following applications or libraries:
353
-
354
- * Ruby 1.8.1 and greater
355
- http://www.ruby-lang.org
356
- Version 1.8.2 is recomended
357
-
358
- * Nano Methods / Mega classes
359
- http://nano.rubyforge.org
360
- http://mega.rubyforge.org
361
-
362
- The following applications or libraries are OPTIONAL:
363
-
364
- * PostgreSQL
365
- http://www.postgres.org
366
- Used for Database driven web applications.
367
-
368
- * MySQL
369
- http://www.mysql.org
370
- Used for Database driven web applications.
371
-
372
- * Ruby-psql
373
- http://www.postgresql.jp/interfaces/ruby/archive/ruby-postgres-0.7.1.tar.gz
374
- Ruby interface to the PostgreSQL RDBMS.
375
-
376
- * Ruby-mysql
377
- http://tmtm.org/ja/ruby/mysql/README_en.html
378
- Ruby interface to the MySQL RDBMS.
379
-
380
- * Ruby-XSLT
381
- http://gregoire.lejeune.free.fr/ruby-xslt_0.4.0.tar.gz
382
- Used for XSLT based templates.
383
-
384
- * Apache 2.0
385
- http://www.apache.org
386
- Used to host application in production environments.
387
-
388
- * Lighttpd
389
- http://www.lighttpd.net/
390
- A lean and efficient web server. A perfect companion to Nitro.
391
-
392
- * Ruby-fcgi
393
- http://www.moonwolf.com/ruby/archive/ruby-fcgi-0.8.5.tar.gz
394
- Used for FCGI based applications.
395
-
396
- * FastCGI development kit
397
- http://www.fastcgi.com/dist/fcgi.tar.gz
398
- Needed to compile the C-version of the ruby fcgi library.
399
-
400
- * RedCloth
401
- http://rubyforge.org/projects/redcloth/
402
-
403
- Please install the required applications and libraries before continuing
404
- with the installation of Nitro.
405
-
406
-
407
- == Instalation
408
-
409
- Nitro is distributed as a RubyGem. First of all make sure you have
410
- installed RubyGems on your system. Then run the following command:
411
-
412
- gem install nitro
413
-
414
- (make sure you have the latest stable versions of Ruby and RubyGems
415
- installed)
416
-
417
- Then try to run the examples/tiny Example application.
418
-
419
- A tar.gz distribution is also available on http://www.rubyforge.com/projects/nitro
420
- This distribution is intended to allow developers to get a
421
- quick look at the platform. For real development please use
422
- the gem distribution.
423
-
424
-
425
- == Running the example applications
426
-
427
- * examples/tiny
428
-
429
- A simple application that requires no external applications
430
-
431
- $ cd nitro/examples/tiny
432
-
433
- $ vi conf/apache.conf
434
-
435
- edit user, group,DocumentRoot root as needed.
436
-
437
- or
438
-
439
- $vi conf/lhttpd.conf
440
-
441
- edit as needed, or edit
442
-
443
- $ vi run.rb
444
-
445
- $ ruby run.rb
446
-
447
- browse http://127.0.0.1:9999
448
-
449
- * examples/blog
450
-
451
- A simple Blog application to demonstrate xsl skins, Og models,
452
- xml dispatchers and more.
453
-
454
- $ cd nitro/examples/blog
455
-
456
- $ vi conf/apache.conf
457
- $ vi conf/lhttpd.conf
458
-
459
- edit the configuration as needed.
460
-
461
- $ vi run.rb
462
-
463
- edit the postgresql user and password
464
-
465
- if you wan to run this application with MySQL
466
- edit the configuration file to include
467
-
468
- {
469
- ...
470
- :backend => "mysql"
471
- ...
472
- }
473
-
474
- instead.
475
-
476
- there is no need to initialize the database, Og automatically
477
- takes cate of this.
478
-
479
- $ ruby run.rb
480
-
481
- this script starts the the blog application using the WEBrick
482
- adapter.
483
-
484
- browse http://127.0.0.1:9999
485
-
486
- You can run the application in debug mode with the following
487
- command:
488
-
489
- $ ruby run.rb --debug
490
-
491
-
492
- == Debuging Nitro applications
493
-
494
- Have "tail -f" commands running on log/app.log in your application
495
- directory. Nitro will automatically display debugging and runtime
496
- information to these files. Debugging info will also be shown in the
497
- browser when running in debug mode.
498
-
499
-
500
- == Description of contents
501
-
502
- bin
503
- Commands and wizards.
504
-
505
- examples/
506
- Various examples. 'tiny' is a minimal example, 'blog' is a
507
- fully working and nice looking Blog implementation, 'no_xsl_blog'
508
- is the same example without using XSLT, 'og' contains some Og
509
- examples and 'flash' is an example for generating binary content
510
- for a Nitro response.
511
-
512
- lib/nitro
513
- Nitro library source files.
514
-
515
- test
516
- Unit and functional tests.
517
-
518
-
519
- == Running Tests
520
-
521
- The easiest way to run the included unit tests is through Rake:
522
-
523
- $ rake test_all
524
-
525
- runs all the tests including database tests.
526
-
527
- $ rake test
528
-
529
- runs all tests except the database tests.
530
-
531
- Rake can be found at http://rake.rubyforge.org
532
-
533
-
534
- == Support
535
-
536
- For any questions regarding Nitro, feel free to ask on the ruby-talk
537
- mailing list (which is mirrored to comp.lang.ruby) or contact
538
- mailto:gm@navel.gr.
539
-
540
- A Nitro specific mailing list is also available. Please subscribe
541
- to nitro-general@rubyforge.com. The homepage for this list
542
- is available here:
543
-
544
- http://rubyforge.org/mailman/listinfo/nitro-general
545
-
546
-
547
- == Licence
548
-
549
- Copyright (c) 2004-2006, George 'gmosx' Moschovitis (http://www.gmosx.com)
550
- Copyright (c) 2004-2006, Navel Ltd (http://www.navel.gr)
551
-
552
- Nitro (http://www.nitroproject.org) is copyrighted free software
553
- created and maintained by George Moschovitis (mailto:gm@navel.gr)
554
- and released under the standard BSD Licence. For details consult
555
- the file LICENCE.