Zliczanie wizyt dla danej akcji/widoku

Narazie nic nie potrafię powiedziec ponieważ serwis jeszcze nie ruszył, chyba trzeba będzie wtedy wrócić do tematu :slight_smile: Na początku pewnie wystartuje na vpsie M lub L http://www.megiteam.pl/oferta/serwery-vps potem się zobaczy.
Właśnie tak mi coś ten delayed job tutaj nie pasował.

Witam,

użyłem ostatnio redis’a do zliczania wyświetleń danej akcji w moim przypadku akcji show, wszystko działa ale mam pytanie jak zrobić taką zmienną nie przetrzymywaną w bazie ktora zlicza mi wyświetlenie danej akcj ale dla każdego obiektu z osobna nie tak jak teraz zlicza wszystko wspólnie:

model Video

def self.current $redis.get("current_hits").to_i end def self.increment $redis.incr('current_hits') end
controller Video akcja show

@video = Video.find(params[:id]) Video.increment repond_to do |format| format.html format.xml { render :xml => @video } end end
No i widok show:

<%= Video.current %>

Po prostu powiąż wpis w redisie z konkretnym video za pomocą jego id i ustaw odpowiednie gettery i settery (podobnie jak w twoim przykładzie tylko bez self na początku)

Wtedy w controlerze @video.increment i w widoku @video.current

Ok już rozwiązałem ten problem :slight_smile:

Przy tworzeniu każdego obiektu video tworzę z osoba zmienną w redisie czyli w akcji create:

$redis.set "video_hits_#{@video.id}

w akcji show

$redis.incr "video_hits_#{@video.id}

No a w widoku:

<%= $redis["video_hits_#{@video.id}"]

Czy da się uruchomić redisa na ubuntu jako daemona ?

[quote=wlodi]No a w widoku:

<%= $redis["video_hits_#{@video.id}"]

[/quote]
widok nie powinien być odpowiedzialny za pobieranie danych z redisa. Zrób do tego odpowiednią metodę w modelu

Tak zrobiłem, tutaj podalem przyklad na szybko :slight_smile: Mimo to mam jeszcze pytanie jak zabezpieczyć się przed komunikatem:

Connection refused - Unable to connect to Redis on localhost:6379

jak sprawdzić w modelu czy jest nawiązane połączenie z redisem? Czy jest taka możliwość?

Można tak.

def redis.ping rescue Errno::ECONNREFUSED false end

a tu masz jak uruchamiać redisa jako deamona:

Ok dzięki, wszystko fajnie tylko teraz jak padnie serwer i zostanie wyłączony redis zmienna sie wyzeruje tzn liczba wyświetleń, czy można taką zmienną zapisać do bazy i oczywiście gdy zostanie rozłączony server odczytać taką zmienną? Czy istnieje jakaś inna możliwość na trwałość takiej zmiennej?