erstellt von max, am 10.06.2008 22:25

hab mir soeben das rails 2.1 changelog angesehen, und dort gibt es folgende nette erweiterungen.

  • zimezones
  • dirty tracking
  • gem dependencies
  • names scope
  • utc-migrations
  • better-caching

wie immer hat rails gute ideen, und eine sehr schoene umsetzung. aber es freut mich umso mehr, dass webtek bereites schon die haelfter der features hatte :)

timezones

in rails setzt man einen before_filter:

class ApplicationController < ActionController::Base

  before_filter :set_timezone

  def set_timezone
    # current_user.time_zone #=> 'London'
    Time.zone = current_user.time_zone
  end
end

in webtek macht man das mit einem event:

event->register(
   'name' => 'request-prepare-end'
   'method' => sub { request->timezone(session->user->timezone) }
)

dirty tracking

hiermit kriegt man informationen welche felder in einem model neu sind (d.h. noch nicht in der db), und welche geaendert wurden (nach einem partial update). hier in rails:

article = Article.find(:first)
article.changed?  #=> false

# Track changes to individual attributes with
# attr_name_changed? accessor
article.title  #=> "Title"
article.title = "New Title"
article.title_changed? #=> true

# Access previous value with attr_name_was accessor
article.title_was  #=> "Title"

# See both previous and current value with attr_name_change accessor
article.title_change  #=> ["Title", "New Title"]

und wieder in webtek

$article = app::Model::Article->find_one;
$article->_lazy; # => [] liefert ein leeres array;

# Track changes to individual attributes with
# attr_name_changed? accessor
$article->title  #=> "Title"
$article->title("New Title")
$article->_lazy; # => ['title']

# Access previous value with attr_name_was accessor
$article->{'persistent_content'}->{'title'};
# => 'Title' ... gut nicht so schoen aber machbar

# See both previous and current value with attr_name_change accessor
# das geht nicht, aber man weiss zumindest was geaendert wurde
# nach dem speichern
$article->save;
$article->_updated; # => ['title']

... zugegeben, rails macht es schoener, aber immerhin, dieses feature hatte webtek schon lange

utc-migrations

gut, das ist jetzt zwar nix besonderes, aber die webtek migrations funktionieren auch genauso. hier wieder in rails

> script/generate migration one
      create  db/migrate/20080402122512_one.rb
> rake db:migrate:up
      ...
> rake db:migrate:down
      ...

und webtek:

> ./webtek migrate create Test
 => create /WebTek/app/Test/scripts/migrate/20080610220557_Test.pl
> ./webtek migrate up
       ...
> ./webtek migrate down
       ...

1 Kommentar(e):

#9 Adrian Smith sagte am 12.06.2008 12:55
Adrian Smith
"nicht so schoen aber machbar" - aber ich kann mir nicht vorstellen, dass man das je bruachen würde! daher ist unschönheit kein problem (bzw vorteil, weil den public-api eines objektes ist kleiner)

Neuen Kommentar schreiben: