2011-12-02 20 views
13

Devise için parse_resource veri deposunu (ActiveRecord'un aksine) kullanmanıza izin veren bir uzantı yazmak istiyorum. parse_resource, Parse.com'un REST API'sı için bir Ruby sarıcıdır. Bu arabirim, ActiveRecord ile hemen hemen aynı ve ActiveModel şikayetidir. Bu nedenle, Devise için bir uzantının çok fazla olmayan kazan gerektirmeyebileceği görülüyor. Ancak, herhangi bir eğitim bulamıyorum. Tek ihtiyacım olan diğer uzantıların kaynağı.Devise uzantısı nasıl yazılır (özel bir veri deposu kullanmak için)

  1. The generators (oldukça gerekli değil) İşte

    Eğer DeviseGenerator#(generate_model|inject_devise_content|replace_default_devise_orm) yöntemleri üzerine: MongoMapper extension, ben iki ana bölüm vardır toplamak.

  2. The "guts "(çok gerekli)

    değilim oldukça olarak. Burada ne oluyor emin Hiç de Demirbaş çok özel tip döküm birazcık, var olduğunu görünüyor ve alt biz varsayılan ORM yerine bu uzantıyı kullanarak olacak bir deklarasyon var.

hepsi bu kadar olduğunu mı? Ya biri bir de "cesaret" in ne olduğunu açıklayabilir misiniz? eksik olduğumu bit daha fazla detay?

Devise ile tam uyumluluk sağlamak için koşmak için herhangi bir basit tiftik testi var mı?

+0

Bunu hiç oluşturdunuz veya bir alternatif buldunuz mu? – emkman

cevap

1

İyi bir başlangıç ​​için couchDB uzantısına ve Riak uzantısına da bakabilirsiniz. Bunu, Hook module'da, Devise'nin çalışması için gereken/istediğiniz her şeyi geçersiz kıldığını görebilirsiniz.

Altta class_eval bildirimini görebiliyor musunuz? Orada bir şey geçersiz kılmak istiyorsanız (MongoMapper uzantısı tüm (ünlü devise yöntemiyle as you can see dahil) gerekli yöntemleri ve Hooks modülü ile sonraki tutan Devise::Models modülü ile (sizin durumunuzda ParseResource::Base olarak) sınıfını genişletmek bir şeyi geçersiz kılmaya gerek yok, bu yüzden bu yöntemi kullanmıyoruz). Böylece yazmak gerekir: Bundan sonra

module Devise 
    module Orm 
    module ParseResource 
     module Hooks 
     # here you define any overrides 
     end 
    end 
    end 
end 

ParseResource::Base.class_eval do 
    extend Devise::Models 
    extend Devise::Orm::ParseResource::Hooks 
end 

yapmanız gerekir require 'devise/orm/parse_resource' sizin #{Rails.root}/config/initializers/devise.rb in başlatıcısı (dosyayı parse_resource.rb adlı varsayarak). Umarım biraz yardımcı olurum :)

3

En iyi yaklaşım, ayrıştırma kaynağı için bir orm_adapter bağdaştırıcısı yazmak olurdu. Teşebbüsün çeşitli ormslarla entegrasyonunun gerçek “cesareti” dir.

Gerçekten çok basit ve kullanabileceğiniz bir test suite içerir. Parse_resource activeemodel uyumlu olduğu düşünüldüğünde, adaptör existing adapter klonlama kadar kolay olmalıdır.

Daha sonra, bu files numaralı telefonlardan birinin yalnızca bir kopyası olan, icat etmek için orm_adapter'a bağlanmanız gerekecektir.

İlgili konular