Fuori Active Resources per un Test Drive
Sebbene ActiveResource sia stato annunciato lo scorso giugno durante la relazione di David un “Mondo di risorse” alla RailsConf ancora si deve vedere una release ufficiale. Per ora vive nel trunk svn di rails insieme a tutto il resto, ma è stato rilasciato nella pre-release 1.2. Alcuni sviluppatori (me incluso [Rick Olson]) sono stati tenuti lontani da esso un po’ alla volta mentre sviluppavamo piccoli servizi REST (L’unico esempio pubblico è Blinksale, che usa quello che sembra un’interfaccia compatibile comunque, loro forniscono la loro libreria REST::Client come un esempio di libreria Ruby, invece che come un ARes). Da ciò che arguisco, ARes è usato solo limitatamente, in servizi privati, ma io penso che sia il momento di farlo uscire allo scoperto. il mio obiettivo con questo articolo (e possibilmente di più facendo una serie di articoli) è di informare il mondo del punto a cui siamo con Active Resource, è magari far interessare qualcuno a renderlo noto.
Per quelli che non sanno, ActiveResource è un utilizzatore client-side XML per le API create con le ultime aggiunte del Rails. Consideratela una ricompensa per aver trovato come usare un map.resources appropriatamente e aver ristrutturato parti delle vostre applicazioni intorno ad essa. E’ così, seguite queste regole e avrete la maggior parte delle Server Api e una libreria Client gratis.
Istallazione
Come facciamo a giocare con Active Resource se ancora non è stato rilasciato? Probabilmente la maniera più facile (prima che sia rilasciata una gemma) è quella di fare il check-out dell’intero rails trunk dall’svn e fare il require dell’ ActiveSupport e dell’ ActiveResource:
1 $ svn co http://dev.rubyonrails.org/svn/rails/trunk 2 $ irb 3 > require 'activesupport/lib/active_support' 4 > require 'activeresource/lib/active_resource'
Creare una Client API Library per Beast
Se ci state ancora seguendo nell’irb, potete creare la classe ActiveResource e cominciare ad usarla. Per prima cosa noi creeremo una classe base che imposterà l’indirizzo del Beast, così come le opzionali username/password se volte fare modifiche.
1 2 # any recent trunk version of Beast will work here 3 self.site = 'http://beast.caboo.se' 4 # site.user = 'rick' 5 # site.password = 'secret sauce' 6 end 7
Ora che ce l’abbiamo, possiamo creare una classe per le principali risorse del forum che avranno a che fare con: utenti, forums, argomenti e post. Gli utenti e i forums li faremo poi. I topic e i posts, sono risorse simili. Servirà un valore che corrisponda alla path impostata in map.resources nel Beast.
1 2 end 3 4 5 end 6 7 8 site << '/forums/:forum_id' 9 end 10 11 12 site << '/forums/:forum_id/topics/:topic_id' 13 end 14
Questo è tutto adesso giochiamo:
1 f = Forum.find 1 2 # da quando i topic hanno un prefisso, si deve passare il forum_id. 3 # In questo modo si può fare una richiesta a /forums/1/topics/1.xml 4 t = Topic.find 1, :forum_id => f.id 5 p = Post.find 1, :forum_id => f.id, :topic_id => t.id 6 u = User.find p.user_id 7
Se tutto ha funzionato, dovresti essere in grado di fare esperimenti con beast. Se crei un post, fai la stessa cosa nel Testing Forum.
1 forums = Forum.find :all 2 testing = forums.detect {|f| f.name == 'Testing' } 3 4 # initialize takes two parameters in ActiveResource. One for the model parameters, and one for the prefix parameters. 5 topic = Topic.new({ 6 :title => 'Testing out ARes', 7 :body => 'Testing 1, 2, 3!'}, 8 {:forum_id => testing.id }) 9
Dovresti notare alcuni cose inconsuete. Per prima, #initialize prende un secondo parametro hash per le opzioni di prefix. Cosi si può fare un POST su /forums/5/topics.xml. Inoltre, se guardi lo schema di un topic, non c’è l’attributo body. Beast fa una furberia è crea insieme un topic ed il primo post in un’unica richiesta.
ActiveResource non conosce lo schema e spedirà tutto quello che gli date. Se voleste creare problemi, potreste porvare a fare una richiesta così da cambiare il numero dei posts, il campo updatedat, o altri campi “unchangeble” (non modificabili). Fortunatamente, Beast protegge i sui attributi con attraccessible, così questo non sarà un problema.
Ripreso e tradotto da Techno Weenie


What is really going on in South Ossetia
http://ossetians.com/eng/news.php?newsid=459&f=36
Hello.
The Good resource. Much what interesting for itself has found.
See you.
http://graz-umgebung.st.php enjoy.