更改 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"