[Nitro] Development version / Request for help

James Britt james_b at neurogami.com
Fri Oct 14 16:17:47 EDT 2005


George Moschovitis wrote:
> Dear devs,
> 
> As this version of Nitro is taking a lot of time to complete, I
> decided to release
> a snapshot of the development version in the hope that I 'll get some help from
> the community. You can find the distribution here:
> 
> http://www.joy.gr/dist.tgz
> 
> WARNING: This distribution is for experienced devs and contains bugs!
> 
> To install this, unzip the .tgz and setup the gems in the following
> order:
> 
> facets,
> glue
> og
> nitro
> gen
> 
> then extract the examples/spark tarballs.
> 
> And now about helping:
> 
> - I would like to ask Chris to investigate and fix any pending bugs
>   in the admin / scaffolding system.
> 
> - I would like to ask Tom to have a look at how annotations are used
>   in Og so we can nail down the problems with the latest facets gem.
> 
> - If you want to try KirbyBase support, uncomment the correct line in
>   the Spark example. There is one problem though: If you restart
>   the application the database gets corrupted. If anyone can help me
>   find the problem I would appreciate it.
> 
> - You can play with the experimental SCGI support. In the spark
>   directory issue:
> 
>   lighttpd -f conf/lhttpd.conf (update the conf for your system)
>   ./script/scgi_ctl start.
> 
> - If you find incompatibilities with the old version, let me know
>   so I can write them down in the MIGRATION text file.
> 
> - If you find more problems, let me know.
> 
> 
> To wet your appetite, here are some of the new additions:
> 
> 
> * Totally recoded annotation / property system. The property
>   system is now based on Facet annotations and inheritors.
>   You can now annotate every object, attribute or method
>   in Nitro. For example you can annotate your actions with
>   routing rules or site map strings etc, etc. One unified
>   system for annotations and meta data is used throughout
>   the whole Framework.
> 
> * Implemented one of the most requested features. An Og
>   frontend for KirbyBase. The KirbyBase store does not yet
>   support all features, but is really useful. For example
>   it can power the Spark wiki example. Switching between
>   KirbyBase, Mysql, Postgres, Sqlite, etc by changing
>   one line of code is really cool ;-)
> 
> * Better Separation of Concerns for Og managed classes. Og
>   can now annotate and handle classes from other libraries.
>   Lets say you have the following class:
> 
>   class User
>     attr_accessor :name
>     attr_accessor :body
>   end
> 
>   Using Ruby's open classes and Nitro's advanced annotation
>   system you can easily prepare this class for Og management
> 
>   class User
>     ann :user, :klass => String
>     ann :body, :klass => String
>   end
> 
>   or even better:
> 
>   class User
>     property :user, String
>     property :body, String
>   end
> 
>   This style promotes SOC: You define your classes in one
>   place and annotate them for Og in another place.
> 
> * Introduced a simple code generation framework. Two example
>   generators are included:
> 
>   * app: generates the directory structure for a new
>     nitro application.
> 
>   * form: generates an xhtml form for a Ruby class.
>     This generator leverages the annotations of the
>     object class.
> 
> * Improved scaffolding code and django style auto
>   administration system. The new scaffolder supports all
>   Og relation types and provides an intuitive DHTML
>   interface for editing.
> 
> * SCGI (http://python.ca/nas/scgi/protocol.txt) support.
>   Thanks to a refactoring of Nitro's cgi code this
>   version integrates with Zed Shaw's SCGI adapter. This
>   provides FastCGI's performance with an easy
>   installation.
> 
> * Experimental HTTP streaming support. Here is a
>   simple example:
> 
>   def index
>     response.content_type = "text/plain"
>     stream do
>       5.times do |i|
>         print "#{i}"*10000 + "\n"
>         sleep 1
>       end
>     end
>   end
> 
> * Simple Og automatic evolution system. Lets say you have a class Article
> 
>   class Article
>     property :title, String
>     property :nbody, String
>     property :dumy, Fixnum
>   end
> 
>   lets you want to change your
>   class to this one:
> 
>   class NewArticle
>     property :ntitle, String
>     property :nbody, String
>     property :new, Float
>   end
> 
>   First you export the database:
> 
>   og.export
> 
>   Then you import the database. Some rules
>   are needed when renaming classes or properties.
>   New properties or deleted properties are handled
>   automatically.
> 
>   rules = {
>     :Article => {
>       :self => :NewArticle, # rename the class
>       :title => :ntitle,
>       :body => :nbody
>     }
>   }
>   og.import :evolution => rules
> 
>   Thats all. The database schema and data are automatically updated
>   for you. In a future version this will be integrated into
>   the default runner scripts.
> 
> * Og helpers to create simple rdbms management scripts. Here
>   is an example:
> 
>   mysql "-u root -p", <<-END
>     drop database if exists weblog_development;
>     create database weblog_development;
>     grant all on weblog_development.* to #{`id -un`.strip}@localhost;
>   END
> 
>   At the moment this is only available for Mysql.
> 
> * Added support for dynamic CSS using Nitro's advanced templating
>   system. Create the dynamic CSS file with an .csst extension in
>   your template root.
> 
>   <?r
>   green = '#79b500'
>   background = '#fff'
>   ?>
> 
>   .page {
>     background: #{green}
> 
>     <?r 10.times do ?>
>       padding: 5px;
>     <?r end ?>
> 
>     // or even
> 
>     <% 3.times do %>
>       margin: 5px;
>     <% end %>
>   }
>   ..
> 
>   then, add this line in run.rb:
> 
>   Compiler.precompile 'style.css'
> 
>   The CSS file will be regenerated automatically whenever the
>   template changes...
> 
> * Cleaned up Og implementation.
> 
> * Fixed minor Ruby 1.8.3 compatibility issues.
> 
> * Even better integration with Ruby Facets.
> 
> * Tons of bug fixes and small but useful features.
> 
> 
> 
> Please report any problems you have if you try to install this
> development version.

On a WinXP box:


D:\downloads\Ruby\nitro-og-alpha-Oct05\dist>gem install facets-2005.10.11
D:\downloads\Ruby\nitro-og-alpha-Oct05\dist>"c:\ruby\bin\ruby.exe" 
"c:\ruby\bin\gem" install facets-2005.10.11
Attempting local installation of 'facets-2005.10.11'
ERROR:  Error installing gem facets-2005.10.11[.gem]: Invalid argument - 
dev/dev.nano/array/**.rb


Not Windows-friendly


James



More information about the Nitro-general mailing list