How to exit rails application from within

I would like to restart my rails application from within application. On demand. But I am stucked on first step. How to exit. exit 0 doesn't work.

I am running webrick or mongrel.

by TheR

What do you mean by "restarting" the application? Do you mean end the session (if any) and (re)display the login/index/initial page?

If you need to end a session you can do it with this:

reset_session

To send a user to the login/index/initial page you can just use a redirect:

redirect_to :controller => 'my_controller', :action => 'my_action'

Both things are done in your controllers.

Is the kill from outside application the only solution?

by TheR

I don't think you'll be able to do that. I am assuming that you mean the user being able to kill the application. Remember that the user will probably be removed from the server that runs Rails and he/she won't have access to it. That access is only available through the browser.

The only way that you'll be able to do something like that will be to provide a Logout link or something like that and make it available through a main layout so it's present in all views.

If what you want to do is to be able to stop the session from the server itself you'll have to figure out who the user is that you want to end the session for and have a way of managing the sessions for all users (database store?), then you could kill the session any way you want (removing data from the DB for the session?). That won't buy you much, though, if the user can still Login and keep going.

If you are running inside mongrels with monit I am sure you could really do this quite easily...

controller: def restart   `sudo monit restart -g mongrel all << server_sudo_password` end

view: <% link_to "Restart", :action => :restart %>

Of course because you CAN do something does not mean you SHOULD... requires you put the sudo password in the code BAD BAD...

I have not tested it, because my dev system is not setup this way. but looks like it would work.

Sadly my server is Windows. I am working on an application for internal users which runs Word and Excel with ole automation a lot to provide output documents in pdf.

I haven't yet had production loads but a lot of things can go wrong when running ole automation. So I thought If I could close session and restart it on demand .... ( You can always repair windows by restarting it :wink:

I thought that Mongrel or Webrick have some interface to end itself.

Thank you TheR