Hi Yoram,
There are lots of different approaches, especially depending on what
your app does and how it is implemented, but I usually do something
like the following, which works for both development env (setup to re-
reload all code/templates/etc on each request) and production env
(setup to re-load code/templates/etc on app restart):
### in ./app/controllers/application.rb
...
require 'time'
...
MAINT_DOWN_TIME_FILE = "#{RAILS_ROOT}/tmp/down_time_#
{RAILS_ENV}.txt"
...
before_filter :fetch_maint_down_time
...
def fetch_maint_down_time
@maint_down_time = nil
begin
s = IO.read(MAINT_DOWN_TIME_FILE)
@maint_down_time = Time.parse(s) if s && s =~ /\d/
rescue
#ignore, ... meaning no scheduled down time.
end
end
...
### in ./app/views/shared/_maintenance_msg.html.erb:
<% if @maint_down_time -%>
<% mins = (@maint_down_time - Time.now).to_i/60 -%>
<% down_when = mins > 1 ? "in #{mins} minutes" : "imminently" -%>
<div id='sys_notice'>
Notice: App going offline <%= h(down_when) %>. ...
</div>
<% end -%>
### in each layout, like ./app/views/layouts/testapp.html.erb:
...
<%= render :partial=> 'shared/maintenance_msg' %>
...
Then anytime you want to warn your users for a given env about a
planned maint down_time, you just stuff a parsable datetime in the
appropriate env down time file, like:
$ echo '2009-02-28 18:20:00' > ./tmp/down_time_production.txt
which will automatically get picked up with the next request, and thus
will display the maint msg on every screen of your app like:
...
Notice: App going offline in 22 minutes. ...
...
And then once you've completed your maintenance, you just clear out
that down time file:
$ echo '' > ./tmp/down_time_production.txt
and no maintenance msg will be displayed.
Jeff
On Feb 27, 12:27 pm, "[email protected]" <[email protected]> wrote:
> Hi. I have a site that is currently running in alpha mode. I have
> warned my users that it will be bouncing up and down as I deploy
> updates. That said, i'd like to broadcast a real time warning to them
> when I am about to do so. Something along the lines of:
>
> The site will be brought down for maintenance in five minutes. Save
> your work and logout to avoid losing data.
>
> Any clever suggestions on how to do this?
>
> A colleague suggested to me that I have a javascript on each page that
> polls the server for a change in status and pos up an alert. I'm
> looking for other creative suggestions...
>
> Thanks,
> Yoram
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---