更改 Heroku(ruby on rails)服务器的日期和时间
Changing Date and Time of Heroku(ruby on rails) Server
我在 Heroku 上托管的 rails 应用程序上有 ruby。出于测试目的,我必须更改服务器的日期和时间。
或者手动将其设置为特定日期..?
有什么办法可以做到这一点..?
使用控制台或任何东西。?
您不能更改日期时间,但可以更改时区
heroku config:add TZ="America/Los_Angeles"
http://blog.pardner.com/2012/08/setting-the-default-time-zone-for-a-heroku-app/
我通过 Timecop gem 使用 around_action
更改暂存环境中的时间实现了这一点。
module TimeTravelFilters
extend ActiveSupport::Concern
included do
if Time::Clock.travel_ok?
around_action :time_travel_for_request
end
end
def time_travel_for_request
time_travel
yield
time_travel_return
end
def time_travel
if Time::Clock.fake_time
Timecop.travel Time::Clock.fake_time
else
Timecop.return
end
end
def time_travel_return
Timecop.return
end
end
Time::Clock
是我自己的 class 跟踪虚假时间。
我有一个单独的 TimeController
可以让我更改服务器上的时间。
class TimeController < ApplicationController
before_action :require_admin!
def index
end
def update
@clock.update_attributes params[:time_clock]
redirect_to time_index_path
end
def destroy
@clock.reset
redirect_to time_index_path
end
end
对于 Heroku 上的 Rails 个应用 运行,默认情况下 Time.now 和 some_time.localtime 将以 UTC 显示。如果您想为应用分配时区,可以将 TZ 配置变量设置为时区(必须采用 tz 数据库时区格式)。
heroku config:add TZ="America/Los_Angeles"
我在 Heroku 上托管的 rails 应用程序上有 ruby。出于测试目的,我必须更改服务器的日期和时间。 或者手动将其设置为特定日期..? 有什么办法可以做到这一点..? 使用控制台或任何东西。?
您不能更改日期时间,但可以更改时区
heroku config:add TZ="America/Los_Angeles"
http://blog.pardner.com/2012/08/setting-the-default-time-zone-for-a-heroku-app/
我通过 Timecop gem 使用 around_action
更改暂存环境中的时间实现了这一点。
module TimeTravelFilters
extend ActiveSupport::Concern
included do
if Time::Clock.travel_ok?
around_action :time_travel_for_request
end
end
def time_travel_for_request
time_travel
yield
time_travel_return
end
def time_travel
if Time::Clock.fake_time
Timecop.travel Time::Clock.fake_time
else
Timecop.return
end
end
def time_travel_return
Timecop.return
end
end
Time::Clock
是我自己的 class 跟踪虚假时间。
我有一个单独的 TimeController
可以让我更改服务器上的时间。
class TimeController < ApplicationController
before_action :require_admin!
def index
end
def update
@clock.update_attributes params[:time_clock]
redirect_to time_index_path
end
def destroy
@clock.reset
redirect_to time_index_path
end
end
对于 Heroku 上的 Rails 个应用 运行,默认情况下 Time.now 和 some_time.localtime 将以 UTC 显示。如果您想为应用分配时区,可以将 TZ 配置变量设置为时区(必须采用 tz 数据库时区格式)。
heroku config:add TZ="America/Los_Angeles"