dArK kNiGhT
dArK kNiGhT

Reputation: 171

Changing Date and Time of Heroku(ruby on rails) Server

I am having ruby on rails application which is hosted on Heroku. For testing purpose I have to change Date and Time of the server. Or set it manually to particular date..? Is there any way I can do that..? Using console or anything.?

Upvotes: 6

Views: 1723

Answers (3)

Kevin Lawrence
Kevin Lawrence

Reputation: 748

I achieved this with the Timecop gem using an around_action to change the time in my staging environment.

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 is my own class that keeps track of the fake time.

I have a separate TimeController that lets me change the time on the server.

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

Upvotes: 5

puneet18
puneet18

Reputation: 4427

For Rails apps running on Heroku, by default Time.now and some_time.localtime will display in UTC. If you'd like to assign a timezone to your app, you can set the TZ config variable to a time zone (which must be in the tz database timezone format).

heroku config:add TZ="America/Los_Angeles"

Upvotes: 1

Keval
Keval

Reputation: 3336

You cant change the date time but you can change the timezone

heroku config:add TZ="America/Los_Angeles"

http://blog.pardner.com/2012/08/setting-the-default-time-zone-for-a-heroku-app/

Upvotes: 2

Related Questions