Migrating to Rack

4 views
Skip to first unread message

Joshua Peek

unread,
Jun 1, 2008, 5:20:43 PM6/1/08
to Ruby on Rails: Core
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

José Valim

unread,
Jun 2, 2008, 7:37:30 AM6/2/08
to Ruby on Rails: Core
Nice! I will take a look into it this afternoon and run some tests!

Rodrigo Kochenburger

unread,
Jun 2, 2008, 10:09:11 AM6/2/08
to Ruby on Rails: Core
That is great news.
I'll also try to experiment with it.

Thanks for adding it ;)

José Valim

unread,
Jun 2, 2008, 10:53:15 AM6/2/08
to Ruby on Rails: Core
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?

Joshua Peek

unread,
Jun 2, 2008, 3:15:08 PM6/2/08
to Ruby on Rails: Core
Nice find. I haven't verified this yet, but I was worried about any
issues regarding cookies.

Thanks

Joshua Peek

unread,
Jun 2, 2008, 10:05:32 PM6/2/08
to Ruby on Rails: Core
Alright I think I got it fixed.

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

Can someone test out the streaming stuff?

José Valim

unread,
Jun 3, 2008, 6:08:12 AM6/3/08
to Ruby on Rails: Core
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! =)


On Jun 3, 4:05 am, Joshua Peek <j...@joshpeek.com> wrote:
> Alright I think I got it fixed.
>
> http://github.com/rails/rails/commit/92050f6c6f586b2a73aeb61da4f41b98...

Joshua Peek

unread,
Jun 3, 2008, 10:07:32 AM6/3/08
to Ruby on Rails: Core
On Jun 3, 5:08 am, José Valim <jose.va...@gmail.com> wrote:
> 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.

José Valim

unread,
Jun 3, 2008, 10:56:43 AM6/3/08
to Ruby on Rails: Core
Yep, I thought so!
I was saying for precaution! ;)

So until now, sessions work but not cookies.

Joshua Peek

unread,
Jun 4, 2008, 11:33:47 PM6/4/08
to Ruby on Rails: Core
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

José Valim

unread,
Jun 5, 2008, 11:45:09 AM6/5/08
to Ruby on Rails: Core
Yep! Working now!

On Jun 5, 5:33 am, Joshua Peek <j...@joshpeek.com> wrote:
> 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/c4d570c2eb6b7bd0a529e20a10557541...
Reply all
Reply to author
Forward
0 new messages