ActiveResource stellt eine einfache Zugriffsschicht auf Webdienste mit REST-Schnittstelle zur Verfügung. Dabei ist die API lose nach ActiveRecord modelliert und erlaubt somit eine einfache Benutzung der Ressourcen des Dienstes.
ActiveResource war Ende des Jahres 2006 für Rails 1.2 geplant, wurde dann aber wieder aus Rails herausgenommen. Derzeit soll es mit Rails 2.0 veröffentlicht werden und wird auch mit dem ReleaseCandidate ausgeliefert.
Wer aber nicht mit Edge Rails arbeiten will oder kann, kann ActiveResource nicht ohne weiteres einsetzen, da es eine neuere Version von ActiveSupport verlangt, als Rails-1.2-Stable beiliegt.
Ich hatte auf Arbeit das Problem, Edge Rails nicht verwenden zu können, aber dennoch benötigte ich einen REST-Client. Daher habe ich versucht, ActiveResource unter Rails 1.2.5 mit der zugehörigen ActiveSupport-Version zum Laufen zu kriegen.
Hier der Gluecode, der bisher nur kurz getestet ist, um ActiveResource zum Laufen zu bekommen. Diese Teile sind einfach dem neusten ActiveSupport-Zweig entnommen.
class Object unless respond_to?(:send!) # Anticipating Ruby 1.9 neutering send alias send! send end end class Module def attr_accessor_with_default(sym, default = nil, &block) raise 'Default value or block required' unless !default.nil? || block define_method(sym, block_given? ? block : Proc.new { default }) module_eval(<<-EVAL, __FILE__, __LINE__) def #{sym}=(value) class << self; attr_reader :#{sym} end @#{sym} = value end EVAL end end
Zudem wird dieser Patch benötigt, um ActiveResource fehlerfrei zum Laufen zu bekommen. Warum dieser Fehler immer noch nicht behoben ist, oder ob es sich hier um irgend ein anderes Problem handelt, konnte ich leider nicht feststellen.
Wer noch eine kleine Anregung zum Bauen eines REST-Clients braucht, sei auf diesen verwiesen.
Dies war mein erster Blogeintrag hier in der Ruby-Mine. Bitte seid gnädig ;-)
Kommentar schreiben