Migrating to Rack

The Rack processor, that Erza and I have been working on, is finally in trunk. This change will not effect your app. In fact, all of the server commands will still run CGI. All the CGI internals will stick around until this migration is complete. In order to test out the new rack goodies, you'll need to setup a config file for the rackup command.

Please help test this rack stuff out. Once we're pretty confident in the processor, we'll start switching over script/server, mongrel_rails and all those server commands to use Rack by default.

Here is a rackup config to get you started. http://pastie.caboo.se/206893

Nice! I will take a look into it this afternoon and run some tests!

That is great news. I'll also try to experiment with it.

Thanks for adding it :wink:

I wasn't able to make sessions work here. I was using :cookie_store, then I've changed to :memory_store and nothing.

I've cleaned my cookies and then I saw that my application wasn't able to story the session_key in cookies.

Any known hack to make it work?

Nice find. I haven't verified this yet, but I was worried about any issues regarding cookies.

Thanks

Alright I think I got it fixed.

http://github.com/rails/rails/commit/92050f6c6f586b2a73aeb61da4f41b9822bbcf6d

Can someone test out the streaming stuff?

Hmmmmm, cookies problem still not solved.

Now they are set, but for a strange reason, I can't read them. In the middle of an action, I get:

p cookies.inspect => {"_session_id"=>"BAh7BzoMY3NyZl9pZCIlMjQ0MzM2MzYyODkzOWJj...", "lang"=>"en"}

p cookies["_session_id"] => nil

p cookies["lang"] => nil

p cookies.keys => {"_session_id", "lang"}

p cookies.values => {"BAh7BzoMY3NyZl9pZCIlMjQ0MzM2MzYyODkzOWJj...", "en"}

p cookies[cookies.keys.first] => nil

And I've noticed a couple more things:

1. I wasn't able to start thin with it:

rackup -p 3000 -s thin

Unless I put in my environment (or a require somewhere):

config.gem 'thin'

Are you planning to handle those things by default? =)

2. Mongrel starts really slowly and without messages. On the other hand, Webrick and Thin (after the first step) work like a charm! =)

Hmmmmm, cookies problem still not solved.

Now they are set, but for a strange reason, I can't read them. In the middle of an action, I get:

p cookies.inspect => {"_session_id"=>"BAh7BzoMY3NyZl9pZCIlMjQ0MzM2MzYyODkzOWJj...", "lang"=>"en"}

p cookies["_session_id"] => nil

p cookies["lang"] => nil

p cookies.keys => {"_session_id", "lang"}

p cookies.values => {"BAh7BzoMY3NyZl9pZCIlMjQ0MzM2MzYyODkzOWJj...", "en"}

p cookies[cookies.keys.first] => nil

That fix was for sessions. I didn't really test cookies yet.

And I've noticed a couple more things:

1. I wasn't able to start thin with it:

rackup -p 3000 -s thin

Unless I put in my environment (or a require somewhere):

config.gem 'thin'

Are you planning to handle those things by default? =)

There is no way know that thin is an adapter without requiring the gem. Thin and Ebb are the only two I can think of that manage their own handlers inside their gems. If you would like to see this automatic, ask the thin guys to send their handler over to the rack. BTW, this isn't a problem just with Rails, but every rack app with rackup and thin.

rackup -p 3000 -r thin -s thin or require it in your config

2. Mongrel starts really slowly and without messages. On the other hand, Webrick and Thin (after the first step) work like a charm! =)

haha, not sure. I wish rackup would print out some more informative text.

I did not write rackup and it is not what you will likely be using one rails is all switched over. Rackup is a universal command for all rack apps. We will tailor our script/server to be a bit more friendly.

Yep, I thought so! I was saying for precaution! :wink:

So until now, sessions work but not cookies.

Its a step backwards in removing all this CGI junk but its going have to do until we don't have to support it.

http://github.com/rails/rails/commit/c4d570c2eb6b7bd0a529e20a1055754183d50c23

Yep! Working now!