Module: ActiveSupport::CoreExtensions::Time::Zones::ClassMethods
- Defined in:
- lib/active_support/core_ext/time/zones.rb
Instance Attribute Summary collapse
-
#zone_default ⇒ Object
Returns the value of attribute zone_default.
Instance Method Summary collapse
-
#current ⇒ Object
Returns
Time.zone.now
whenconfig.time_zone
is set, otherwise just returnsTime.now
. -
#use_zone(time_zone) ⇒ Object
Allows override of
Time.zone
locally inside supplied block; resetsTime.zone
to existing value when done. -
#zone ⇒ Object
Returns the TimeZone for the current request, if this has been set (via Time.zone=).
-
#zone=(time_zone) ⇒ Object
Sets
Time.zone
to a TimeZone object for the current request/thread.
Instance Attribute Details
#zone_default ⇒ Object
Returns the value of attribute zone_default.
10 11 12 |
# File 'lib/active_support/core_ext/time/zones.rb', line 10 def zone_default @zone_default end |
Instance Method Details
#current ⇒ Object
Returns Time.zone.now
when config.time_zone
is set, otherwise just returns Time.now
.
50 51 52 |
# File 'lib/active_support/core_ext/time/zones.rb', line 50 def current ::Time.zone_default ? ::Time.zone.now : ::Time.now end |
#use_zone(time_zone) ⇒ Object
Allows override of Time.zone
locally inside supplied block; resets Time.zone
to existing value when done.
42 43 44 45 46 47 |
# File 'lib/active_support/core_ext/time/zones.rb', line 42 def use_zone(time_zone) old_zone, ::Time.zone = ::Time.zone, get_zone(time_zone) yield ensure ::Time.zone = old_zone end |
#zone ⇒ Object
Returns the TimeZone for the current request, if this has been set (via Time.zone=). If Time.zone
has not been set for the current request, returns the TimeZone specified in config.time_zone
.
14 15 16 |
# File 'lib/active_support/core_ext/time/zones.rb', line 14 def zone Thread.current[:time_zone] || zone_default end |
#zone=(time_zone) ⇒ Object
Sets Time.zone
to a TimeZone object for the current request/thread.
This method accepts any of the following:
-
A Rails TimeZone object.
-
An identifier for a Rails TimeZone object (e.g., “Eastern Time (US & Canada)”,
-5.hours
). -
A TZInfo::Timezone object.
-
An identifier for a TZInfo::Timezone object (e.g., “America/New_York”).
Here’s an example of how you might set Time.zone
on a per request basis – current_user.time_zone
just needs to return a string identifying the user’s preferred TimeZone:
class ApplicationController < ActionController::Base
before_filter :set_time_zone
def set_time_zone
Time.zone = current_user.time_zone
end
end
37 38 39 |
# File 'lib/active_support/core_ext/time/zones.rb', line 37 def zone=(time_zone) Thread.current[:time_zone] = get_zone(time_zone) end |