Hey guys, I had some unfinished stuff in my working directory which I've now
pushed out to the rackification-branch at my fork. Even though I have
push-permissions to why's repo, I still like the idea that we should all
decide which ways Camping should go, and this includes quite a bit of code:


== Cleanup of blog.rb
http://github.com/judofyr/camping/commit/957c907cc925ab8c58ddff94f4bc6ddd27f7285f

Just making it simpler and not so magically.


== Removal of tepee.rb and campsh.rb
http://github.com/judofyr/camping/commit/3c87b0a6f028bb315ddb2196a1f09d5ba640b865

Currently these are not working 100% correctly so until we clean these up, I
think it's a good idea to remove them to avoid confusion. They're still
hidden in Git's history, so it's more like hiding them than removing them.


== Add Camping.use
http://github.com/judofyr/camping/commit/0d21c240963226bb40038de3fe0f111928889215

This allows the user to inject middlewares so they become a part of the app:

module App
  use Somemiddleware, 123, 456
  # Equals to adding Somemiddleware.new(App, 123, 456) on the "outside".
  use Stackable, :yes => "they are"
end

== Session refactoring
http://github.com/judofyr/camping/commit/332e0a190a6bbf1af7e8d7812ec3f816727efc38

Okay, this is larger one:
Now that we can inject middleware, we can make Camping::Session simply "use
Rack::Session::Cookie". This means a smaller Camping (lib/camping that is,
not camping.rb) and less code to maintain. I've also added a "secret" method
to change the secret key (the name may be a little too generic though):

module App
  include Camping::Session
  secret "Hello!"
end

However, in order to use Rack::Session::Cookie I had to change some internal
stuff. First of all, @env is now the Hash passed into #call (earlier this
was a Camping::h...@env]). This is because all the rack.session stuff require
changing the originial @env in order to save sessions. @state is also now
set in Base#initialize and is always based on rack.session. This means that
any middleware who sets env['rack.session'] to some Hash will make Camping
pick it up and put it in @state. In Base#to_a (which is used to finialize
stuff) there's a simple "@env['rack.session'] = @state" to save the
sessions.

I've also removed Camping::ARSession, since I didn't feel like rewriting it
as a Rack middleware. Please call out if it's missed.


== Simplify things that Rack gives us for free
http://github.com/judofyr/camping/commit/a7cff36813b899b48fe0d196d2ea54bd7377e6e5

Rack now parses nested params and we can now safely assume SCRIPT_NAME and
REQUEST_METHOD to be set thanks to the Rack spec. Saves us some bytes.

camping.rb is at 2999 bytes after these patches.

--

So what do you think? Any obvious things I'm missing? Yeah, I know I've
probably broken some backward compatibility, but remember that 1.9 is after
all a preview release, and 2.0 *is* a major update.

Have a look and don't be afraid to call out the stupid parts :-)


//Magnus Holm (who now has no excuse for not starting on the docs)
_______________________________________________
Camping-list mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/camping-list

Reply via email to