Ruby Code Schnipsel: default_scopes und named_scopes

Gegeben

Modell mit folgendem Scope:

named_scope :all, 
            :conditions => "status = 'original' or status = 'initial'", 
            :order => "created_at desc" 

Gesucht

Beschränkung der Suchmenge über default_scopes, die mit Ruby on Rails 2.3 eingeführt wurden. Versucht man im aktuellen Rails 2.3.2 einen default_scope mit conditions zusammen mit einem oder mehreren named_scopes zu verwenden, gibt es dabei einen Bug beim Mergen der Scopes. Folgende erster Ansatz funktioniert nicht:

default_scope :conditions => "site_id = Site.current.id"

Stattdessen wird eine Fehlermeldung ausgegeben:

TypeError: can't convert String into Hash
    from /.../vendor/rails/activerecord/lib/active_record/base.rb:2134:in `merge'
    from /.../vendor/rails/activerecord/lib/active_record/base.rb:2134:in `with_scope'
    from /.../vendor/rails/activerecord/lib/active_record/base.rb:2112:in `each'
    from /.../vendor/rails/activerecord/lib/active_record/base.rb:2112:in `inject'
    from /.../vendor/rails/activerecord/lib/active_record/base.rb:2112:in `with_scope'

Auch so geht's nicht:

default_scope :conditions => ["site_id = ?", Site.current.id]

Die Fehlermeldung ist hier TypeError: can't convert Array into Hash bei gleichem Stacktrace.

Lösung

default_scope :conditions => {:site_id => Site.current.id}

Schlüsselwörter: programmierung, ruby on rails, schnipsel

Von Stefan Haubold vor 476 Tagen hinzugefügt (0 Kommentare)

Ruby Helper 1.1

Heute erschien endlich Version 1.1 unserer App Ruby Helper im App Store. Es enthält die folgenden neuen Dokumente:

  • RSpec 1.2.4
    • 4 Texte
    • 75 Klassen
    • 26 Module
    • 513 Methoden
  • Spec::Rails 1.2.4
    • 3 Texte
    • 19 Klassen
    • 12 Module
    • 93 Methoden
  • Webrat 0.4.4
    • 2 Texte
    • 18 Klassen
    • 7 Module
    • 136 Methoden

Wir arbeiten außerdem an einem Feature, welches es ermöglicht, weitere Dokumente direkt aus der App runterzuladen (beispielsweise für Ruby 1.9). Voraussichtlich wird dieses Feature aber erst mit dem Release von iPhone OS 3.0 im Sommer veröffentlicht.

Schlüsselwörter: iphone, ruby, ruby on rails

Von Thomas Dohmke vor 488 Tagen hinzugefügt (0 Kommentare)

RailsConf 2009: jQuery on Rails

Montagmorgen, 8:30 Uhr. Nach schneller und unkomplizierter Registrierung sowie mittelmäßigem Frühstück beginnen die ersten Tutorials von RailsConf 2009. Wir haben uns für jQuery on Rails in Pavillon 9/10 entschieden. Schon beim Betreten des Saals fällt uns auf, dass an den Tischen keine Steckdosen verlegt wurden und auch an den Seitenwänden keine Spur von Stromversorgung. Rasch folgen diverse Tweets und @railsconf verspricht, dass in Kürze die entsprechenden Verlängerungsstrippen bzw. -dosen verlegt werden (unsere Reihe kriegt nach ca. 30 Minuten tatsächlich Strom, andere warten vergeblich).

Inhaltlich geht es zunächst mit den Grundlagen von jQuery los, Yehuda Katz und Andy Delcambre sind gut vorbereitet und stellen Folien sowie Übungsdateien als Git-Repository zur Verfügung. jQuery erlaubt die Verwendung diverser CSS3-Selektoren, die miteinander verkettet werden können ("Chaining"). Nachfolgend drei Beispiele:

// Alle div-Elemente
$("div")  

// Alle p-Elemente, die zu einem div gehören
$("div p")

// Alle Links, die jquery.com enthalten
$("a[href*=jquery.com]")

Das Tutorial ist so aufgebaut, dass nach jedem Themenblock kurze Übungseinheiten folgen, in denen das Gelernte anhand von einfachen Aufgabe wie "Select any text areas and their labels" geübt wird.

Es folgen Themenblöcke zum Document Object Model, zur Manipulation von Dokumenten, zu Events und Effekten, zu AJAX und einer Auswahl von Plugins. Die Verwendung von jQuery im Zusammenspiel mit Rails nimmt am Ende nur 6 der 86 Folien und damit relativ wenig Umfang ein, gerade hier hätten wir uns mehr Informationen gewünscht.

In den letzten 20 Minuten wird dann noch das Blue Ridge Javascript Testing Plugin vorgestellt, allerdings sind die Erklärungen und Hintergründe dazu eher dürftig und führen so zu einem negativen Eindruck einer ansonsten recht guten Präsentation.

Schlüsselwörter: javascript, railsconf, ruby on rails

Von Thomas Dohmke vor 489 Tagen hinzugefügt (0 Kommentare)

Drei Links zum Sonntag (XV)

Diese Woche mal wieder einige Links aus der Welt von Ruby und Rails:

  1. Debugging Rails 2.3.2 Apps with Rack::Bug
    Mischa Fierer erläutert anhand einer einfachen Beispielanwendung die Benutzung von Rack::Bug zur Analyse des Rails-Environments, Speicherverbrauchs, usw. Wer stattdessen ein Video bevorzugt, wird bei Bryan Helmkamp fündig.
  2. Uploading Files
    Michael Koziarski stellt mit Mod Porter ein Modul für den Apache vor, welches sich um den Upload-Vorgang von großen Dateien kümmert. Nachdem die Datei vollständig auf den Server hochgeladen wurde, wird der Request in einen herkömmlichen POST-Request abgeändert und an die jeweilige Rails-Anwendung weitergeleitet. In Tests ließen sich so Geschwindigkeitssteigerungen um den Faktor 30 bis 200 erreichen.
  3. Ruby Best Practices
    Gregory Brown und andere Autoren haben sich in diesem neuen Blog zusammengeschlossen, um über ihre Best Practises im Zusammenhang mit Ruby zu berichten. Einzige Bedingung ist, dass sie selbst stolz auf den präsentierten Code sind. Mal schauen wie sich das entwickelt, das Konzept klingt jedenfalls gut.

Abschließend noch ein Link zur RailsConf, die in 8 Tagen beginnt und sicher reihenweise spannende Neuigkeiten mit sich bringen wird.

Schlüsselwörter: linktips, ruby, ruby on rails

Von Thomas Dohmke vor 498 Tagen hinzugefügt (0 Kommentare)

Drei Links zum Sonntag (XII)

Der Frühling ist endgültig da und es gibt wieder drei Links zum Sonntag:

  1. Designing Convertbot
    Mark Jardine schreibt über die Entstehung und das Design der iPhone App ConvertBot, dessen Nützlichkeit allerdings in der derzeit vorliegenden Version 1.0 über einen Bug bei der Verwendung des Kommas als Dezimaltrennzeichen beeinträchtigt wird. Trotzdem eine schicke App.
  2. 360iDev Slides
    Bei SlideShare wurden unlängst alle Foliensätze der Konferenz 360iDev veröffentlicht. Jede Menge spannender Informationen, leider ohne Ton oder Video.
  3. OpenID Rails Kit
    Wer gerade ein neues Rails-Projekt aufsetzen will (so wie wir) und eine Authentifizierung der Benutzer mit Benutzername und Passwort oder alternativ mit Open ID einbinden will, sollte sich das OpenID Rails Kit anschauen. Die App kommt komplett lauffähig inkl. Tests mit RSpec. Einfach, schnell, eben Ruby on Rails.

Schlüsselwörter: iphone, linktips, ruby on rails

Von Thomas Dohmke vor 519 Tagen hinzugefügt (0 Kommentare)

1 2 Ältere Artikel »

Auch abrufbar als: Atom

Twitter

Uns auf Twitter verfolgen: