Archive for the ‘Ruby’ 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.
Gitolite + Redmine
Github:
https://github.com/ivyl/redmine-gitolite
Historia:
Potrzebowałem czegoś co dałoby mi dostęp do repozytoriów Gitolite z poziomu Redmine.
Powszechnym podejściem jest ustawianie zadań crona, które co jakiś czas uaktualniają lokalną kopię repozytorium do której dostęp ma Redmine.
Problemem jest ręczne dodawanie uprawnień i pamiętanie o gwarancji dostępu dla użytkownika uruchamiającego Redmine.
A co z zarządzaniem kluczami dla różnych użytkowników? Co z automatycznym nadawaniem praw do projektu?
Znalazłem dwa rozwiązania – zaniedbane i niekompatybilne ze sobą.
https://github.com/kahseng/redmine_gitolite_hook
https://github.com/jhogendorn/redmine-gitolite
Pierwszy dawał hooka umożliwiającego automatyczne aktualizowanie lokalnej kopii repozytorium przez redmine,
drugi umożliwiał zarządzanie gitolitem (stare pliki konfiguracyjne, nie działał).
Przysiadłem nad nimi w wolnych chwilach i tak powstał mój redmine-gitolite.
Zachęcam do testowania/używania.
Wszelkie potrzebne informacje w README
Prezentacja JVM + Scala
Dzisiaj na kole naukowym, miałem okazję poprowadzić dwie prezentację. Pierwsza dotyczyła języków programowania na JVM, w której skupiłem się głównie na sensie i zastosowaniach, druga natomiast stanowiła krótki wprowadzenie do Scali.
Mam nadzieję, że nigdzie na załączonych slajdach nie skłamałem.
Prezentacje można ściągnąć: JVM i Scala
lub do obejrzenia na Issuu:
Python Challenge (in Ruby…)
Dzięki Radarkowi poznałem Python Challenge. Jeśli ktoś zna notpron, dobrze się bawił i zna się trochę na programowaniu to polecam. W tytule jest co prawda Python, ale niemal wszystkie zadania da się rozwiązać w czymkolwiek (niektóre nawet z poziomu shella i w klikanych programach).
Do tej pory tylko do rozwiązania 5 zadania była potrzebna znajomość Pythona, jeśli nie znacie możecie zerknąć niżej.
Spoilery (rozwiązania w Ruby):
Więcej »
Ruby w Gnome (gedit)
Nie opisałem w poprzednim poście jak dodać podświetlanie składni plików erb, yaml.
Subscribe to the comments for this post