Scrivere fuctional test in RoR che supportino chiamate JSON

Se avete dei controller che generano chiamate JSON, vi sarete resi conto che i test non sono in grado di analizzarne i dati.
Il problema puo’ essere ovviato usando ActiveSupport::JSON.decode sul response.body.
Per poter utilizzarlo all’interno di tutte le classi editiamo il file test/test_helper.rb ed all’interno della classe ActionController::TestCase inseriamo il seguente codice:


def json
    ActiveSupport::JSON.decode @response.body
end

A questo punto possiamo procede a scrivere il nuovo test. Supponendo che il nosto metodo index all’interno del controller si presenti come segue:

def index
    respond_to do |format|
        format.html
        format.json { render json: UserDatatable.new(view_context) }
    end
end

Affiancheremo al generico functional test:

test "should get index" do
    get :index
    assert_response :success
    assert_not_nil assigns(:user)
end

il test che copre la parte JSON come segue:

test "should get JSON index " do
    get :index , :format => :json
    assert_response :success
    assert_not_nil assigns(:user).to_json, @response.body
end

Vi invito a leggere la doc sui metodi encode e decode che trovate qui’,

Ruotare video con FFmpeg

Avete fatto un video inquadrando in verticale come se stesse scattando una foto ?

A me capita dato che adoro la fotografia e detesto i video, ed ho trovato un modo che mi permette di non dover ruotare la TV o dovermi sdraiare sul divano per vedere correttamente il video.

Se non sapete cos’e’ e come si installa FFmpeg leggete il mio post precedente .

Se avete un video da girare in senso orario di 90º bastera’ posizionarsi sulla directory contenente il/i video e digitare :

# ffmpeg -i myVideo.avi -vf "transpose=1" myFixedVideo.avi

Per tutte le altre varianti dell'opzione transpose consultate lo schema :

0 = 90 CounterCLockwise and Vertical Flip (default)
1 = 90 Clockwise
2 = 90 CounterClockwise
3 = 90 Clockwise and Vertical Flip

Spero vi sia utile

Convertire velocemente vari formati audio usando ffmpeg

FFMPEG e’ il coltellino svizzero delle applicazioni per modificare i file audio e video; possiede tantissime funzioni che lo rendono uno strumento unico. In questo articolo ci limiteremo a fare una conversione massima di tutti i files contenuti in una directory.

Supponiamo di avere una directory di file FLAC e di volerli convertire in MP3 a 256K:  pessima idea, ma a volte alcuni lettori non supportano il formato FLAC.

Primo step installiamo, se non l’abbiamo ancora fatto, ffmpeg e tutti i codec necessari. Su Debian o Ubuntu lanciamo il seguente comando:

# sudo apt-get install ffmpeg lame flac

Su Ubuntu 14.04, ffmpeg non e’ incluso nei repository ufficiali, per cui se il comando precedente vi ha ritornato un errore dovrete lanciare i seguenti comandi prima di ripetere il passo precedente:

# sudo apt-add-repository ppa:jon-severinsson/ffmpeg
# sudo apt-get update

Adesso possiamo effettuare facilmente le conversioni, posizionandoci nella directory che contiene i file e lanciando qualcosa simile a questo comando:

# (for FILE in *.flac ; do ffmpeg -i "$FILE" -f mp3 -ab 256000 "`basename "$FILE" .flac`.mp3" || break; done

Chiaramente possiamo convertire da e verso qualsiasi formato, per avere una lista dei formati supportati :

# ffmpeg -formats

Come detto, le potenzialita’ di ffmpeg non finisco qui’, vi invito a leggere la documentazione ufficiale sulla homepage

TrueCrypt non e’ sicuro: parola degli sviluppatori

Questo quanto riportato sulla pagina del progetto che di conseguenza e’ stato chiuso

http://truecrypt.sourceforge.net/

Anche se non e’ ufficiale pare che il problema sia relativo alla backdor introdotta dalla NSA.

Il prodotto e’ stato successivamente messo sotto Audit e non sono emerse vulnerabilita’, tuttavia il progetto e’ definitivamente chiuso e il mistero sul coinvolgimento della NSA rimane.

RoR: Come testare una confirm dialog con Capybara

Capybara rappresenta una delle gemme indispensabili per gli integration test in Ruby on Rails.
Usandolo vi sarete accorti che sembra non esserci modo di gestire le confirm dialog javascript del vostro codice. Tuttavia, se state usando un driver come Selenium che supporti il JS, potete forzare a trueil valore ritornato dal js come segue:


page.evaluate_script('window.confirm = function() { return true; }')
page.click('Destroy')