We gaan even een rails timezone applicatie genereren en kijken wat er standaard aangemaakt wordt. Als we namelijk niets aanpassen in environment.rb, dan gaat 'convention over configuration' even niet op.
> cd rails-code
> rails timezone
> cd timezone
We zien dat het volgende is aangemaakt in environment.rb:
Rails::Initializer.run do |config|
config.time_zone = 'UTC'
end
Dat gaat niet helemaal volgens plan verlopen zo. Kijk maar.
timezone > script/generate model gebruiker naam:string
We gaan nu met script/console een gebruiker aanmaken.
> script/console
Loading development environment (Rails 2.3.2)
>> Gebruiker.count
=> 0
>> g = Gebruiker.create( :naam => 'Basil Fawlty' )
>> g.created_at
=> Sat, 04 Apr 2009 14:00:49 UTC +00:00
Dat is niet goed als het op de klok 4 uur is.
We zitten dus uiteraard in de verkeerde timezone.
Wat is de juiste?
rake to the rescue.
timezone > rake time:zones:local
* UTC +01:00 *
Amsterdam
Belgrade
Berlin
Bern
Bratislava
Brussels
.....
Drie keer raden welke we nodig hebben.
config.time_zone = 'Amsterdam'
Even script/console exit en weer in na aanpassing timezone.
Inmiddels is het ook 5 uur.
> script/console
Loading development environment (Rails 2.3.2)
>> g = Gebruiker.create( :naam => 'John Cleese' )
>> g.created_at
=> Sat, 04 Apr 2009 17:00:23 UTC +00:00
Alles is nu weer OK. Dit is natuurlijk een prima kandidaat om toe te voegen aan een rails template voor het genereren van nieuwe applicaties.
En dan is het nu tijd voor happy hour.