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
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
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
Drei Links zum Sonntag (XV)
Diese Woche mal wieder einige Links aus der Welt von Ruby und Rails:
- 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. - 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. - 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
Drei Links zum Sonntag (XII)
Der Frühling ist endgültig da und es gibt wieder drei Links zum Sonntag:
- 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. - 360iDev Slides
Bei SlideShare wurden unlängst alle Foliensätze der Konferenz 360iDev veröffentlicht. Jede Menge spannender Informationen, leider ohne Ton oder Video. - 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
Auch abrufbar als: Atom
Schlüsselwörter
- berlin (2)
- blog (5)
- browser (2)
- cocoaheads (5)
- dropbox (1)
- git (7)
- idisk (1)
- iphone (28)
- javascript (2)
- kurztip (4)
- linktips (17)
- mac (9)
- macruby (1)
- objective-c (8)
- ortung (1)
- programmierung (22)
- rails (1)
- railsconf (7)
- ruby (6)
- ruby on rails (7)
- schnipsel (14)
- server (2)
- spiele (1)
- statistiken (3)
- stuttgart (3)
- testen (4)
- tidy (1)
- versionskontrolle (5)
- wwdc (1)
- xcode (9)
- xml (1)