ruby-mine

exploring the mine

ActiveResource unter Rails 1.2.5

von zickzackv am 23.11.2007 (14 Uhr)

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.

Lange Rede kurzer Sinn.

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.

Notiz am Ende/Rande

Dies war mein erster Blogeintrag hier in der Ruby-Mine. Bitte seid gnädig ;-)


Kommentar schreiben

Name (notwendig)

Mail (wird nicht veröffentlicht)

Webseite