2014-04-29 12 views
11

In meinem application.rb, ich habeWie konfiguriere ich Travis-CI, um die richtige Zeitzone für eine Rails-App zu verwenden?

config.time_zone = "Pacific Time (US & Canada)" 

Und das funktioniert einwandfrei in Entwicklung/Test- und Produktionsservern. Wenn ich jedoch auf Travis-CI drücke, scheint es in UTC zu liegen, zum Beispiel die Ausgabe von I18n.l Time.now.

Gibt es etwas anderes an der Travis-CI Ruby/Rails-Umgebung?

+0

bitte zeigen Sie mir gem Datei – jimagic

+0

Hallo @Jack, welcher Teil wäre von Interesse? – aceofspades

+0

Bitte zeigen Sie mir alle von ihnen. – jimagic

Antwort

9

Die Art, wie ich die Zeitzone accomplish Einstellung ist im before_script Abschnitt des travis.yml

Sie geben Sie Root-Zugriff auf die VM Ihr Projekt ausgeführt wird, so dass Sie einfach die OS Zeitzone einstellen, die Ruby verwendet:

before_script: 
     - echo 'Canada/Pacific' | sudo tee /etc/timezone 
     - sudo dpkg-reconfigure --frontend noninteractive tzdata 

Wenn Sie möchten, können Sie auch durch Zugabe dieses unter ein Update erzwingen:

 - sudo ntpdate ntp.ubuntu.com 
+0

Hinweis: Dies funktioniert nicht, wenn Sie Travis Container-Infrastruktur verwenden, die den sudo-Zugriff einschränkt (sudo: false); Verwenden @ Aruizca Lösung zum TZ exportieren –

+0

Ich stimme zu. Die andere Antwort korrigiert Container (diese Infrastruktur existierte gerade nicht, als ich dieses Problem lösen musste :). – comjf

42

Das ist für mich gearbeitet:

before_install: 
- export TZ=Australia/Canberra 

zu überprüfen, ob richtig ist, können Sie Ausgabe das Datum mit diesem:

- date 
+3

Dies ist besonders nützlich für die "neuen" Docker-Instanzen, in denen sudo usw. deaktiviert ist. – Julian

+2

Hier finden Sie eine Liste der Zeitzonen-IDs: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones –

+0

Ich stimme @JulianKessel zu, dies sollte die bevorzugte Antwort sein, da die meisten die neue Docker-Infrastruktur verwenden sollten. – simonmorley

-1

Ich hatte ein ähnliches Problem und es gelöst.

Bei der Entwicklung ist meine Zeit +10 GMT.

Auf Travis ist meine Zeit +11 GMT.

before_script: 
    - export TZ=Australia/Melbourne 

Ich benutzte Time Cop Gem, um zeitabhängigen Code zu testen. Hier ist, wie ich die Zeit auf Travis geändert habe. Hier

ist ein Beispiel-Test:

require 'spec_helper' 
context "during the week after 11:00am for Morning Follow Up Call" do 
    before do 
    valid_prospect_params["treatment_enquiry_form"]["contact_time"] = "10:00 am" 
    freeze_time = Time.local(2015, 11, 18, 11, 01, 0) 
    change_time(freeze_time) 
    post :create_prospect, valid_prospect_params 
    reset_time 
    end 

    it "creates follow up activities" do 
    expect(prospect_followup_activities).to eq(3) 
    end 

    it "creates follow_up_call for the next day in the morning " do 
    expect(first_call.scheduled_for.to_s).to eq("2015-11-19 10:00:00 +1100") 
    end 
end 

Hier ist, wie ich die Zeit auf Travis geändert. Ich habe 2 Methoden.

Verwandte Themen