Not too different from their corresponding last releases, but documentation
has been filled in for both.
To upgrade:
gem install camping --source code.whytheluckystiff.net
And, here is a complete changelog:
== Camping 1.5
* Camping::Apps stores an array of classes for all loaded apps.
* bin/camping can be given a directory. Like: <tt>camping
examples/</tt>
* Console mode -- thank zimbatm. Use: camping -C yourapp.rb
* Call controllers with Camping.method_missing.
Tepee.get(:Index) #=> (Response)
Blog.post(:Delete, id) #=> (Response)
Blog.post(:Login, :input => {''username'' =>
''admin'', ''password'' =>
''camping''})
#=> #<Blog::Controllers::Login @user=... >
Blog.get(:Info, :env => {:HTTP_HOST => ''wagon''})
#=> #<Blog::Controllers::Info
@env={''HTTP_HOST''=>''wagon''} ...>
* Using \r\n instead of \n on output. FastCGI has these needs.
* ActiveRecord no longer required or installed.
* If you refer to Models::Base, however, ActiveRecord will be loaded with
autoload. (see lib/camping/db.rb)
* new Camping::FastCGI.serve which will serve a whole directory of apps
(see http://code.whytheluckystiff.net/camping/wiki/TheCampingServer)
* ~/.campingrc can contain database connection info if you want your default to
be something other than SQLite.
database:
adapter: mysql
username: camping
socket: /tmp/mysql.sock
password: NOFORESTFIRES
database: camping
* controllers are now *ordered*. uses the inherited hook to keep track of all
classes created with R. those classes are scanned, in order, when a request is
made. any other controllers are handled first. so if you plan on overriding
the
urls method, be sure to subclass from R().
* Console mode will load .irbrc in the working directory, if present.
(for example, in my ~/git/balloon directory, i have this in the .irbrc:
include Balloon::Models
when camping -C balloon.rb gets run, the models all get included in main.)
* And, of course, many other bugfixes from myself and the loyal+kind zimbatm...
* Markaby updated to 0.5. (See its CHANGELOG.)
== Markaby 0.5
* XHTML Validation built in. So, if you have an invalid tag: error. Invalid
attribute: error.
And two identical IDs in the same document: error. Optional, of course. But
handy!
* New Markaby::Fragment class adds much flexibility. If it discovers you are
using a tag as a string,
the tag is removed from the stream. (<tt>div { strong("Real")
+ " Giraffes"
}</tt>)
* The prevailing rule now is: if you want it escaped, pass it to a block. If
not, pass it as an arg.
* Again, escaped: <tt>h1("Me & You Have a
Giraffe")</tt>
* And, not escaped: <tt>h1 { "<a
href=''/''>Home</a>" }</tt>
* Less method_missing, meaning: faster calls all around. Tag methods generated
based on doctype.
* The <tt>html</tt> method doesn''t write the doctype tags
and meta tags. You
must use <tt>xhtml_transitional</tt> or
<tt>xhtml_strict</tt> methods to do
that.
* The <tt>img</tt> method doesn''t try to inject an empty
alt tag and a zero
border. No more of that.
_why