Forum: Ruby on Rails weird startup OS X time zone issue

Posted by Scott Ribe (Guest)
on 2013-01-11 05:56
(Received via mailing list)
I deployed an app to an OS X (10.6.8) server, and launch time for the 
app was shockingly slow, but performance after launch was fine.

The problem turns out to be this line in application.rb:

config.time_zone = /Time Zone: (.*)$/.match(`systemsetup 
-gettimezone`)[1]

Yes, that's right, systemsetup -gettimezone takes a full 30 seconds to 
run on this Mac. (Mac Pro, fairly recent, Xeon, tons of RAM, almost 
non-existent CPU load). Anybody have any idea wtf that's about???

I've just hard-coded the time zone default and it's fine. But still, 
just wondering if anybody has a clue?

--
Scott Ribe
scott_ribe@elevated-dev.com
http://www.elevated-dev.com/
(303) 722-0567 voice
Posted by Robert Walker (robert4723)
on 2013-01-11 16:33
Scott Ribe wrote in post #1091858:
> I deployed an app to an OS X (10.6.8) server, and launch time for the
> app was shockingly slow, but performance after launch was fine.
>
> The problem turns out to be this line in application.rb:
>
> config.time_zone = /Time Zone: (.*)$/.match(`systemsetup
> -gettimezone`)[1]
>
> Yes, that's right, systemsetup -gettimezone takes a full 30 seconds to
> run on this Mac. (Mac Pro, fairly recent, Xeon, tons of RAM, almost
> non-existent CPU load). Anybody have any idea wtf that's about???
>
> I've just hard-coded the time zone default and it's fine. But still,
> just wondering if anybody has a clue?

You don't happen to have "Set timezone automatically using current 
location" checked in your "Date & Time" system preference? I have no 
idea if this would cause the problem you're seeing, but it's the first 
thing that came to mind when I saw this.
Posted by Scott Ribe (Guest)
on 2013-01-11 18:09
(Received via mailing list)
On Jan 11, 2013, at 8:33 AM, Robert Walker wrote:

> You don't happen to have "Set timezone automatically using current
> location" checked in your "Date & Time" system preference?

No, I have it set to a fixed location. I tried changing the location, 
and I tried a different NTP server as well. Neither changed anything.

Later I tried other systemsetup commands, and hell, systemsetup always 
takes 30 seconds, even without a command just to get into it's "console" 
mode takes > 30 seconds to launch. I wonder if it's doing some reverse 
DNS thing at launch???

--
Scott Ribe
scott_ribe@elevated-dev.com
http://www.elevated-dev.com/
(303) 722-0567 voice
Posted by "Crispin Schäffler" <crispinschaeffler@gmail.com> (Guest)
on 2013-01-13 12:51
(Received via mailing list)
config.time_zone = Time.zone || "UTC"

is what you are looking for.

The Time.zone command looks into the local time zone set for the user
visiting your current page and returns it, if not found it will return 
the
UTC Time zone. In your case looking up the timezone of the server it is
running on since its a config. No need to grab it like this because ruby
can do it by itself.

However, if you want to give users access to their local time zones you
should go with an time_zone_select field in user registration and an
application_controller before filter, something like this:

before_filter :settimezone

def settimezone
  Time.zone = user.timezone || "UTC" (well, change that to whatever, but
you get the point)
end

Hope this can help you.

Sincerly,
Crispin

Am Freitag, 11. Januar 2013 05:54:37 UTC+1 schrieb Scott Ribe:
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.