Fork me on GitHub


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

Posted on : lip 10 2011
Kategorie: programowanie, Rails, Ruby |

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.


Posted on : lip 03 2011
Kategorie: Git, programowanie, Rails, Ruby |

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


Posted on : lip 01 2011
Kategorie: internet, Open Source, programowanie, Ruby |

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:

Open publication – Free publishingMore jvm




Posted on : lis 18 2010
Kategorie: Java, prezentacje, programowanie, Ruby, Scala |

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 »


Posted on : lis 23 2008
Kategorie: programowanie, Python, Ruby |

Ruby w Gnome (gedit)

Nie opisałem w poprzednim poście jak dodać podświetlanie składni plików erb, yaml.

Więcej »


Posted on : cze 01 2008
Tagi: , ,
Kategorie: edytory, programowanie, Ruby |