ugrás a tartalomhoz

A Ruby on Rails 1.1 várható újdonságai

Juhász Attila · 2006. Feb. 28. (K), 23.49
A Rails következő, 1.1-es kiadása február végére volt ütemezve. A megjelenés a jelek szerint csúszik egy kicsit, de szerencsére Scott Raymond összefoglalta az új lehetőségeket, amiket már bárki kipróbálhat az Edge of Rails-t (vagyis a fejlesztői verziót) használva. A következőkben ezeket tekintjük át mi is.

Az eredeti cikk megtalálható a következő címen. A legérdekesebb újdonságokról röviden:

Változások a Rails magjában

  • Az új alapértelmezett adat séma formátum a :ruby lett az :sql helyett.
  • Külön beállítás nélkül használható az Action és a Fragment gyorsítótárazás.

ActiveSupport

  • Minden objektumnak van egy to_json metódusa, megkönnyítve a JSON stringek generálását.
  • A Logger objektumoknak bemutatkozik egy új Around_* metódusa, mellyel a kívánt kódblokk futtatása előtt és után írhatunk a log fájlokba.
  • Az új delegation támogatja a többszörös delegációt.
    
    class Account < ActiveRecord::Base
      has_one :subscription
      delegate :free?, :paying?, :to => :subscription
      delegate :overdue?, :to => "subscription.last_payment"
    end
    account.free?    # => account.subscription.free?
    account.overdue? # => account.subscription.last_payment.overdue?

ActiveRecord

Új eszközök jelennek meg az adatok közötti kapcsolatok leírására. Számos bugfix és sok kisebb, a használhatóságot javító változtatás történt.

  • Többek között bemutatkozik a has_many :through.
    
    class Author < ActiveRecord::Base
      has_many :authorships
      has_many :books, :through => :authorships
    end
    class Book < ActiveRecord::Base
      has_many :authorships
      has_many :authors, :through => :authorships
    end
    class Authorship < ActiveRecord::Base
      belongs_to :author
      belongs_to :book
    end
    Author.find(:first).books.find(:all, :include => :reviews)

  • Használhatunk már Polymorpic asszociációkat is.
    
    class Address < ActiveRecord::Base
      belongs_to :addressable, :polymorphic => true
    end
    class User < ActiveRecord::Base
      has_one :address, :as => :addressable
    end
    class Company < ActiveRecord::Base
      has_one :address, :as => :addressable
    end
  • A Calculations statisztikai eszközöket ad a kezünkbe.
    
    Person.count
    Person.average :age
    Person.minimum :age
    Person.maximum :age
    Person.sum :salary, :group => :last_name

ActionPack

  • A legfontosabb és legérdekesebb különlegesség a most debütáló RJS template rendszer. Használhatunk tehát .rjs kiterjesztésű sablonokat, amelyekben a ruby kód JavaScriptet generál. Segítségével többek között félelmetesen egyszerűen megoldható hogy egy hívás az oldal több független részét is frissítse. Az biztos, hogy az AJAX fejlesztők könnyes szemmel fognak gondolni a fejlesztőkre... :)
  • Új form helper metódusok is bemutatkoznak, mint például a form_for, form_remote_for, és a fields_for.

Röviden tehát ennyit. Látható, hogy a legfontosabb fejlesztések a stabilitást, az adatkezelést és az interakciót érintették. Személy szerint érdeklődve várom hány új AJAX-ot használó webalkalmazás fog megjelenni a közeljövőben, ami a Rails segítségével készült.
 
1

Jó ez a cikk

dtaylor · 2006. Már. 1. (Sze), 09.44
egy kukkot nem értek belőle... :)

Gondolon, ruby tudornak kell lenni ahhoz, hogy fogjam :P

--
[ Dönci ]
2

ruby tudor :)

Juhász Attila · 2006. Már. 1. (Sze), 15.33
Hm. Így utólag végignézve tényleg lehet, hogy nehezen érthető annak aki még nem foglalkozott a témával. Most nincs időm, este írok pár sort magyarázatként.
4

Nos, röviden megpróbálom megvilágítani a dolgokat :)

Juhász Attila · 2006. Már. 1. (Sze), 23.03
Először is a Rails egy Model-View-Controller sémára épülő keretrendszer. A model segít kezelni az adatainkat, a view tartalmazza a megjelenítéshez szükséges információkat és a controller dönti el, hogy melyik kérésre milyen választ kell adni.Az egyes funkciókat külön-külön is használható programrészek látják el.

A Rails maga gyakorlatilag ezeket a részeket csak összehangolja. Az igazság az, hogy az előbb felsorolt részeken túl van még néhány plusz programrész is, úgyhogy álljon itt egy lista, hogy jobban áttekinthető legyen.

- Model: ActiveRecord
- View: ActionView
- Controller: ActionController
- Levelezéssel kapcsolatos fügvények: ActionMailer
- Webszolgáltatások építéséhez: ActionWebservice
- Mindenféle hasznos apróság: ActionSupport

Remélem már tisztul a kép! Akkor mehetünk is tovább! Most következik az újdonságok magyarázata.

Az alapértelmezett adatséma Az azt jelenti, hogy ha lemented vagy épp importálni akarod az adatbázisod struktúráját, merthogy a keretrendszer ebben is a segítségedre van, akkor milyen formátumban, vagyis milyen nyelven fogja a program kiadni a sémát ill bekérni. A ruby formátum véleményem szerint sokkal átláthatóbb. Egy tábladefiníció például így néz ki:

create_table :users do |t|
      t.column  :id,  :integer
      t.column  :name, :string
end
Tehát létrehoz egy users táblát egy id-vel és egy név oszloppal. Ez sql-ben a következőképpen nézne ki:

CREATE TABLE users ("id" INTEGER PRIMARY KEY NOT NULL, "name" VARCHAR(255));
CREATE UNIQUE INDEX users_name_index ON users (name);
Nézzük az ActiveSupportot! A következő nehezebben emészthető fogalom talán JSON stringekkel kapcsolatos. Erről csak annyit, hogy a JSON egy JavaScript által használt formátum, amivel könnyedén lehet platformfüggetlenül adatokat cserélni. Lásd bővebben itt.
Ez pedig többek között az AJAX alkalmazások készítésekor hasznos, de ha jól sejtem akkor még a Flash is kezeli.

A delegation segítségével ismét hosszadalmas kódolást spórolhatunk meg. Ha az egyik modell valamely atribútumát (ezek általában adatbázis mezők) delegáljuk egy másik modell számára, akkor azok az atribútumok előrhetőek a másik modellből is. Most csak annyi történt, hogy bármennyi atribútumot delegálhatunk.

Az AktiveRecord kezeli az adatainkat. Itt különösen fontos, hogy leírhassuk, melyik adatok melyik másik adatokhoz kapcsolódnak. Magyarul a relációk. Nem időznék el a magyarázattal nagyon, az eredeti cikk tele van példákkal és kapcsolódó információkkal, a lényeg, hogy újabb lehetőségeket kaptunk a kezünkbe, amikkel még összetettebb kapcsolatokat is le tudunk írni.

Az ActionView rész pedig érthető minden magyarázat nélkül is :)

Remélem tisztult a kép, most ennyire volt energiám.
3

<Nincs cím>

Fekete Ferenc GDA · 2006. Már. 1. (Sze), 19.52
király, főleg az action pack rész:)

Online 2.0