Fork me on GitHub

The Guide to Zena

Zena is the CMS with super natural powers, based on Ruby on Rails.

(The Neos alternative on Rails.)

Knowing that all computation is just a never ending stream of zeros and ones, zena allows you to believe that objects do really exist. ;-)

Zena is like you, and is liked by
  • Websurfers, because even large and feature rich zena sites can be lightning fast and responsive.
  • Individuals and Organizations, because you can manage your website with simple create, edit, and publish buttons located right on the webpages (visible only to users with appropriate permissions).
  • Webmasters, because you can define arbitrary data object classes (beyond pages and articles) together with their properties and relations, right in the admin interface.
  • Web-Designers, because you can create – and modify – directly usable templates with any xhtml and css editor tool.
  • Administrators, because users can be assigned all the power from managing content and style of a site to defining data models and programming their nodes (zafu, SQLiss, rubyless), without risking the integrity of the cms or system as a whole.
  • Developers, because its based on the well structured and understood ruby on rails.

General User Information

  1. Getting Started – Installing zena and creating an example website.
  2. Tutorials – Overview examples too see for yourself.
  3. User’s Guide – The common way to interact with zena’s content.
  4. Zazen Markup – Like a better textile for zena.

Webmaster Information

Any web person that heard about the Neos CMS may find himself right at home here. Wonderful abstraction.

  1. Data Management Overview (mushrooms)
  2. Data Model – Predefined and custom data records.
  3. Node Navigator – Crawl the web of information nodes in your system.
    (Click on the edit button next to your user name.)
  4. Origin Settings – Determine the distinguishable roots of your system.
    (Click on your username when living as administrator.)
  5. Skins – Define the look of your site.
  6. Understanding Templates – Present and manage the information your site is all about.
  7. HTML Forms with Zena – Edit you data conveniently.
  8. Indexing and Searching – Find what people are looking for, but faster.
  9. property – The foundation for our flexible data modelling.
  10. SQLiss – The query magic.
  11. RubyLess – (and rubyless) The programming logic.
  12. Zafu Reference – Get comfortable to seat with templating magic.
  13. Library of Zafu Template Parts – We share and organize our ideas in the community.
  14. Available Bricks (zena extensions) and their purpose
  15. “Bugtracking” – Collect information about identified loopholes, to support developers.
  16. Quick Reference – Getting the grips.
  17. Familiarizing Exercises
    1. Add a new language to a site and translate pages:
      Go to to administration->sites and change the languages
      list, for example to “de,fr,en”.
      Then, when logged in, you visit /oo?lang=fr or /oo?lang=en to view the site
      in a specific language. Then edit the articles and this creates new
      versions in the visited language. A language selector can be created with
    2. Define custom classes, properties and relations, and pages to list, filter, create and delete corresponding nodes and links.
      (When to define properties, with indexes? or relations?)
      (With the default template, in custom zafu template, from a ruby script)
    3. Creating a button to toggle a link status
    4. How to implement triggering of actions/email handling?
      (Verification/interaction/send notifications when objects are added modified? field validation?)
      ->see lifecycles#implementing_a_lifecycle_with_a_securelink at

Webdesigner Information

  1. Skins – Principles managment and usage.
  2. create a skin
  3. html to zafu
  4. fs-skins brick.

Have a look at this site’s Skins (layout themes), and examples from other sites running zena.

Administrator Information

  1. Installing the Requirements – .
  2. Running Zena on Servers – .
  3. Mastering Sites – Multiple domains, websites and sharing data nodes.
  4. Upgrading Zena
    gem update zena
    # or with a local file: "gem install -l path/to/zena.gem
    # Edit config/environment.rb to use the new version.
    # add/adjust: config.gem 'zena', :version => 'x.y.z'
    # on your server run rake with RAILS_ENV=production
    rake RAILS_ENV=production zena:assets
    rake RAILS_ENV=production zena:migrate
    rake RAILS_ENV=production zena:clear_zafu
    rake RAILS_ENV=production zena:clear_cache
    # reapply workarounds like
    # then restart the application
    # (for fastcgi: killall -u $USER -KILL ruby)
    # and check for gems that are not used anymore
    # gem cleanup --dryrun

    You may also refer to the automatic install method that finnally capistrano with the default (shipped) config/deploy.rb that assumes managing a root server, with the zena capistrano tasks in lib/zena/deploy.rb and several config file templates.
  5. Changing the domain name of a site:
    There is a rake task available which renames the host and moves the main directory:
    rake RAILS_ENV='production' zena:rename_site OLD_HOST='' HOST=''

    And a capistrano task, if you used that to deploy, that updates everything including vhost files, awstats, logrotate, etc:
    cap rename_site -s old_host='' -s host='' -s pass='WASTATS_PASSWORD'
  6. Adding an alias domain (hostname) to an existing site.
    rake RAILS_ENV='production' zena:mkalias ALIAS='' HOST=''
  7. Installing Bricks
    Create a bricks/ directory in your application and create/extract the brick directory in it. Then enable the brick by setting it to “ON” in the config/bricks.yml file.
  8. Setting up a mobile m.* subdomain

Integration Information

  1. Virtual Classes in Zena versus ActiveRecord classes in Rails
    (where to define, why, how create, results (tables), how to use the classes)
    (Save to be done with zafu by front-end users?)
  2. web-api?
  3. Added support for scripts
  4. New “Remote” API
  5. Use Zena in own Rails-App – Using Zena Code from other rails apps.
    1. Zena Auth API – Using zena authentication in other apps.
      rails app? rails3 active-admin?
    2. Zena Content API – Virtual classes, relations etc.
  6. Using other code from within zena
  1. Using another auth system like devise in zena.
  2. Accessing other rails models, controllers, views,... from zena/zafu.

Development Information

  1. Building Bricks – Create modules that extend zena.
  2. Hitting Gold – Enjoy collaboration and contributions.