Archive for the ‘Rails’ Category:
Rails + strefy czasowe
Domyślna strefa czasowa:
config/application.rb
config.time_zone = 'Warsaw'
Preferencje użytkowników:
Dodaj pole timezone do modelu.
walidacja w modelu
validates :timezone, :inclusion => { :in => ActiveSupport::TimeZone.all.map(&:name) }
widok
<%= label_tag t('users.form.timezone') %> <br/> <%= time_zone_select(:user, :timezone) %>
app/controllers/application_controller.rb
before_filter :set_user_time_zone protected def set_user_time_zone Time.zone = current_user.timezone if logged_in? end
Rails app + Git revision na stronie
Podanie bieżącej wersji aplikacji gdzieś na stronie jest przydatne – dodatkowe informacje przy zgłaszaniu błędów + lanserski efekt.
Bardzo często serwujemy aplikację wprost z repozytorium Gita, więc czemu nie podać rewizji?
Użyjemy git describe, które wyświetla wersję w postaci:
ostani_tag-odległość_od_taga-początek_sha1
Z przełącznikiem --dirty dodaje na końcu -dirty jeśli working tree nie jest czyste.
(musi być przynajmniej jeden tag w repozytorium)
Wydobądźmy interesujące nas informacje raz, przy ładowaniu aplikacji.
lib/git_info.rb
module GitInfo BRANCH = `git status`.split[3] REPO_VERSION = `git describe --dirty` end
Można to zrobić za pomocą gemu grit, jednak zrezygnowałem z dodawania zależności.
Rails 3 nie ładuje automatycznie plików z lib/. Można go załadować pojedynczo lub włączyć ładowanie wszystkiego z lib:
config/application.rb
config.autoload_paths += %W(#{config.root}/lib)
app/views/layouts/application.html.erb
...
<div id="footer">
<div id="version">
<span id="branch"><%= GitInfo::BRANCH %> branch</span>
<span id="revision">
rev.
<span id="number">
<%= GitInfo::REPO_VERSION %>;
</span>
</span>
</div>
</div>
...+ trochę magii w CSSie i otrzymujemy przyjemny rezultat z początku wpisu.
Subscribe to the comments for this post