README.markdown in orange-0.5.7 vs README.markdown in orange-0.5.8

- old
+ new

@@ -1,173 +1,28 @@ -Orange -====== +This gem is a metagem for orange-core and orange-more. For more information, visit one of those projects: -Orange is intended to be a middle ground between the simplicity of Sinatra -and the power of Rails. Orange is being developed by Orange Sparkle Ball, inc -for our own use. Our main focus is on creating a super-extensible CMS -with Orange, but we're trying to make the components as reusable as possible. Our -intention is to be ready to use Orange for most client website builds by -May 2010. +**Orange Core** -**Note**: Orange is still in the alpha stage. Test coverage is lack-luster at best. -Tread carefully. +The heart of the Orange library. Main documentation here. -A (Theoretical) Example of Orange -================================= +[http://www.github.com/therabidbanana/orange-core](http://www.github.com/therabidbanana/orange-core) -_This doesn't actually work quite yet, but it's the goal we're working toward._ +**Orange More** -After installing the orange gem, create an 'app.rb' +Various plugins developed to work with orange. These are optional and were split off to keep the core small. -**app.rb:** +[http://www.github.com/therabidbanana/orange-more](http://www.github.com/therabidbanana/orange-more) - require 'rubygems' - require 'orange' - class App < Orange::Application - end +About Orange +============ -You now have an Orange CMS that can be made by calling "App.app". -Put this line in your rackup file... +Orange is a framework for building simple CMS sites without the colossal framework Rails requires. The goal is to host Ruby websites with Sinatra-like ease, while not giving up completely on the idea of MVC (when it's useful). -**config.ru:** +Orange is not intended to be a general purpose full-featured framework, so if you're looking for a framework with testing built in and migrations and lots of generators, Rails is probably your best bet. - require 'app' - run App.app +Orange is not intended to fix maximum functionality into a tiny single file. We're small, but our goal isn't to beat Sinatra on a lines of code basis. If you want the bare minimum necessary to create a tiny RESTful app, you just can't beat Sinatra. -Run rack however you run rack. - -Look at that, a full fledged CMS in 6 lines! Not so impressive, it's all prebuilt, -right? The real question is how hard is it to customize? - -I want my pages to have more than just titles and bodies. I want sidebars... - -**app.rb:** - - require 'rubygems' - require 'orange' - class App < Orange::Application - end - class Orange::Page - markdown :sidebar, :context => [:front] - end - -We now have a sidebar that anybody can see. The backend scaffolding will adapt to allow -editing, and the front end will print it out for each page. Slap some CSS on it to make it -look like a sidebar, and tada! - -Pages now have sidebars, in three lines of code and some -styling. No migrations (we rely on DataMapper's auto_upgrade functionality), no extra -files (unless we want them). - -More Info -========= - -Orange Philosophy ------------------ -The Orange application framework is intended to be a fully customizable CMS -capable of hosting multiple sites while maintaining Sinatra-like ease of -programming. Some core ideas behind Orange: - -* Scaffolding doesn't have to be replaced if it's smart enough (most of the time) -* Put as much functionality into middleware as possible, so it can be easily reused - and remixed -* Give middleware a little more power so it's useful enough to handle more tasks - - -Should I Use Orange? --------------------- -Not right now, unless you want to write half the framework yourself. - - -When it's finished, would I want to use it? -------------------------------------------- -Depends on what you're looking for. Orange has a middleware stack intended to -be reused. If the stack has something you'd like, you could theoretically -put the middleware stack on top of Sinatra or Rails. (This hasn't actually -been tested yet.) - -The full Orange application framework is intended to run -as an easily extensible CMS. We tend to think that having lots of tests -and full MVC separation just so you can add an extra type of page to the CMS -is a bit overkill. We designed this to replace ModX in our web builds for clients. - -Required Gems -------------- - -* dm-core (+ do_[sqlite3|mysql|...] ) -* dm-more -* dm-is-awesome_set -* rack -* haml -* rack-abstract-format (github) -* ruby-openid -* rack-openid -* openid_dm_store -* radius -* crack -* eventbright -* spreedly -* hominid -* mail -* tlsmail (If Ruby version <= 1.8.6) -* gattica - -All dependencies should be loaded if you install the gem except for the datamapper -adapter relevant to your set up. If, for example, you want to use a mysql database, -you'll need to install do_mysql, and for an sqlite3 database, you'll need do_sqlite3 - - -Also, you'll need a web server of some kind and need to set it up for rack. - -**Testing** - -If you want to test, you'll need the following gems: - -* rspec -* rack-test - -Yard is also helpful for generating API docs - -The following are useful rake tasks for testing purposes: - - * rake test => (same as rake spec) - * rake spec => runs rspec with color enabled and spec_helper included - * rake doc => runs yardoc (no, not really necessary) - * rake clean => clear out the temporary files not included in the repo - * rake rcov => runs rspec with rcov - -For my own reference - jeweler rake task for deploying the new gem: - - * rake version:bump:patch release - -Programming Info -================ - -The basics of using the orange framework... - -Terminology ------------ - -* **Application**: The last stop for the packet after traversing through the middleware stack. -* **Core**: This is the core orange object, accessible from all points of the orange - system. Usually the orange instance can be called by simply using the "orange" function -* **Mixins**: Extra functionality added directly to the core. Mixins are generally for only - a couple of extra methods, anything more should probably be created as a resource. -* **Packet**: This object represents a web request coming in to the orange system. - Each request is instantiated as a packet before it is sent through the middleware stack. -* **Pulp**: Mixin added to the packet object rather than the Core. -* **Resources**: Resources are extra functionality contained within an object, accessible - from the core. -* **Stack**: The bundled collection of Orange-enhanced middleware sitting on top of the - Orange application - -Pulp and Mixins ---------------- -The ability to add pulp and mixins is incredibly handy because the packet and the core are -available from just about anywhere in the Orange framework. For instance, the haml parser -evaluates all local calls as if made to the packet, so adding pulp is essentially adding -functionality that is directly available to haml. - +Orange is (trying to be) the middle ground between those two extremes. It's built for the people in the middle - the ones who want to pick up Ruby for small websites they're working on, and don't want to have to go into the hassle of learning a massive framework like Rails, or the effort of creating a CMS from the foundation Sinatra provides. LICENSE: ========= (The MIT License) \ No newline at end of file