Geplaatst door Michiel de Mare
zo, 25 jun 2006 06:12:00 GMT
Zaterdag waren er drie keynotes. Eerst Mike Clark over waarom je moet testen, waarom dat zo makkelijk is in Rails, en hoe je het aanpakt. Niks nieuws gehoord.
Daarna een verhaal over Homesteading – een eloquent betoog over waarom we allemaal voor onszelf moeten beginnen. Interessant, maar niet heel nieuw.
Tenslotte DHH, met een verhaal van anderhalf uur over CRUD. Hij stelt voor om de PUT en DELETE HTTP methods te gebruiken voor update en delete CRUD-operaties – weet niet hoe serieus dat is. Hij zegt ook dat we moeten streven naar controllers met alleen CRUD-operaties.
Verder vertelt hij wat over responds_to
, zodat je in een actie verschillende clients kunt ondersteunen (html, xml, rss, mobile) op basis van mime-type, accept header of extensie.
Tenslotte introduceerde hij ActiveResource, een api die net als ActiveRecord werkt, maar via een RESTful api i.p.v. via een database.
Geplaatst in ruby on rails | geen reacties
Geplaatst door Michiel de Mare
za, 24 jun 2006 06:00:00 GMT
Zojuist heb ik een sessie gevolgd over AJAX & Rails. Het meeste was bekend – Prototype, Scriptaculous, RJS… Maar de spreker kondigde ook een nieuwe scaffold-generator aan – Streamlined – en die ziet er goed uit. De release komt over een maand – URL is hier
Geplaatst in ruby on rails, ajax | geen reacties
Geplaatst door Michiel de Mare
za, 24 jun 2006 04:49:00 GMT
Twee geweldige keynotes gehoord. Eerst Martin Fowler, die drie dingen behandelde. Rails is ‘opinionated software’: ActiveRecord, het hart van Rails, is gebaseerd op het Active Record pattern (uit Enterprise Architecture Patterns), dat destijds terzijde werd geschoven omdat het niet geschikt zou zijn voor de meeste bestaande applicaties. Maar voor de applicaties die er wel geschikt voor zijn, werkt het fantastisch. Verder helpt Rails, met zijn agile manier van werken, de ontwikkelaar en de klant bijeen te brengen, en communicatie tussen die twee is het lastigste van software ontwikkeling, volgens Fowler. Het derde pluspunt van Rails is Ruby zelf. Fowler beschrijft Ruby als een taal die begrijpt dat de werkelijkheid niet altijd overzichtelijk en uniform is, en die bereid is zijn handen vuil te maken (i.t.t. bijvoorbeeld Lisp of Smalltalk).
Daarna Paul Graham, over outsiders en insiders, vaardigheidstests en het hacken ervan, 18e eeuwse schilderkunst. Geweldig betoog, erg moeilijk samen te vatten, zoals het meeste van zijn werk. Maar waarschijnlijk verschijnt het binnen een paar dagen op zijn blog. Quote: “Many people say you shouldn’t study business. But actually that’s a special case of a more general rule: Don’t learn from people who are bad at it.”
Geplaatst in ruby on rails | geen reacties
Geplaatst door Michiel de Mare
vr, 23 jun 2006 08:17:00 GMT
De eerste echte sessie die ik heb gekozen (er zijn drie tracks tegelijkertijd) ging over Capistrano. Interessante sessie – maar ik kan nog steeds niet precies zeggen wat het is. Rake over SSH, uitgevoerd op meerdere machines tegelijk, dat komt misschien nog het meest in de buurt. Je moet wel een vrij ervaren systeembeheerder zijn om een capistrano-omgeving goed op te zetten.
Aan de andere kant, wanneer het werkt dan heb je ook wat. cap remote-deploy
, ik wou dat ik in mijn J2EE project kon zeggen.
2 reacties
Geplaatst door Michiel de Mare
vr, 23 jun 2006 08:10:00 GMT
Geinteresseerd in Rails, maar er nog niks mee gedaan? Laat je inspireren door deze site en stel jezelf een deadline.
Heb je al een rails-site gebouwd? Laat de url achter in de reacties!
geen reacties
Geplaatst door Michiel de Mare
vr, 23 jun 2006 08:02:00 GMT
Ik zit nu in een grote conference-room, omringd door Ruby-ontwikkelaars – en er is haast geen Dell of HP te bekennen. Iedereen lijkt een Mac te hebben, en de meeste hebben al een Macbook. Vista uitgesteld, Bill Gates weg – het ziet er slecht uit voor Microsoft.
geen reacties
Geplaatst door Michiel de Mare
vr, 23 jun 2006 06:46:00 GMT
Na vier dagen lang Chicago te hebben bezichtigd (schitterend centrum, daarbuiten niet zo mooi (denk Luik), niet erg voetganger-vriendelijk) is vandaag de RailsConf 2006 van start gegaan. Net de Keynote van Dave Thomas gehoord, waarin hij pleit voor betere data-integratie (betere support voor foreign keys, voor non-integer primary keys, composite primary keys), betere CRUD-support (scaffolding, views) en eenvoudiger deployment.
Een goede speech – en ik heb zelf ook een hoop ideeën over betere scaffolding – misschien wordt het tijd om daar iets mee te doen…
1 reactie
Geplaatst door Danny Lagrouw
zo, 18 jun 2006 05:41:00 GMT
Twee maal per jaar organiseert de Nederlandse Java User Group een miniconferentie met sessies over Java, JEE en alles wat daarmee te maken heeft. In de lente heet die dag de J-Spring (heeft niets te maken met het Spring framework), in de herfst de J-Fall. Tijdens de voorbereidingen van RubyEnRails 2006 leek het me wel een goed idee om een paper in te dienen voor de J-Spring, voor een inleidende sessie genaamd Is Ruby The New Java?. Ik was wel verbaasd toen mijn paper werd geaccepteerd, en nog verbaasder toen afgelopen donderdag (de J-Spring) bleek hoeveel Java’ers geinteresseerd waren in mijn sessie: ik gaf mijn presentatie in een grote zaal in de Reehorst in Ede (en zo’n zaal lijkt heel groot als je het podium bestijgt). Het onderwerp “Ruby en Rails” leeft blijkbaar bij de Javanen.
En ook andersom leeft Java bij de Rubyisten, zij het met een iets andere insteek. Ik bedoel het JRuby-project, waarin gewerkt wordt aan een interface naar Java zodat Ruby-programma’s onder Java kunnen draaien. Met als ‘holy grail’ het draaien van Rails-applicaties in een Java applicatieserver. Tijdens de JavaOne in mei konden Charles Nutter en Tom Enebo van JRuby een werkende Rails-applicatie onder Tomcat demonstreren. Ondanks hun vele hulp en emailverkeer heen-en-weer is het mij niet gelukt om hun opstelling te reproduceren voor de J-Spring. In plaats daarvan heb ik getoond hoe gemakkelijk je vanuit Ruby een EJB kunt aanroepen, en hoe je een Rails-applicatie kunt baseren op een (Java-)webservice in plaats van op een database.
Je kunt je afvragen wat het nut is van zo’n interface met Java. Zoals ik tijdens mijn sessie heb verteld, geloof ik er heilig in. Als Rails eenmaal binnen de JVM draait, wordt het een stuk gemakkelijker om Rails te kunnen gebruiken in enterprisey Java-omgevingen. Dan is het ook nog wel nodig dat de Java-ontwikkelaars bij die grote bedrijven overtuigd zijn van de meerwaarde van (Ruby en) Rails. En dat is dan hopelijk ook weer het nut geweest van mijn presentatie: de eerste stap om alle Javanen te bekeren tot Javanen-die-graag-met-Rails-willen-ontwikkelen.
Nu ik dit stukje zo teruglees, en de vele Java-terminologie zie, wordt het misschien tijd voor een inleidende sessie “Java en JEE” tijdens RubyEnRails 2007 ;).
Voor de geinteresseerden: mijn presentatie is hier te downloaden.
Geplaatst in ruby, ruby on rails | geen reacties
Geplaatst door Michiel de Mare
ma, 12 jun 2006 23:43:00 GMT
Voor alle duidelijkheid, mijn artikel van gisteren was geen voorstel voor het vervangen van method_missing in Object, en strings zijn niet een bijzonder geschikte kandidaat voor deze techniek.
Maar ik denk dat deze techniek nuttig kan zijn binnen DSLs. Een voorbeeld waar ik aan dacht is Watir. Watir is een library om Internet Explorer te scripten. Een Watir script is meestal een lange lijst instructies die nog al op elkaar lijken:
ie.link(:text,'Aanmelden').click
ie.checkbox(:index,1).set
ie.text_field(:index,1).set 'secretaresse'
ie.link(:text, /secretaresse/i).click
ie.links.detect {|f| f.html =~ /verder.gif/ }.click
Om de code korter en leesbaarder te houden kun je een hoop (extreem korte) methodes definieren, zoals deze:
def detect_link(regex)
links.detect {|f| f.html =~ regex }
end
def detect_verder_link
detect_link /verder.gif/
end
def click_verder_link
detect_verder_link.click
end
ie.detect_link(/ICT/).click
ie.click_verder_link
Maar waarom zou je deze methodes niet inline kunnen definieren zodra je ze voor het eerst nodig hebt?
ie.click_verder_link { self.detect_verder_link.click }
ie.click_verder_link
Is dat niet handiger? Is dat niet eleganter? En is dat niet eenvoudiger voor de gebruikers van een DSL die misschien geen ervaren Ruby-programmeurs zijn?
Geplaatst in ruby | 2 reacties
Geplaatst door Michiel de Mare
ma, 12 jun 2006 12:12:00 GMT
Terwijl ik aan het nadenken was over meta-programmeren (naar aanleiding van dit artikel), overwoog ik wat het nut is van method_missing bij het schrijven van domain specific languages (DSL). Niet zo heel veel, dacht ik – het stelt je in staat om in plaats van a.get 'foo'
te schrijven: a.foo
. Korter, eleganter, maar niet fundamenteel krachtiger. Maar toen bedacht ik het volgende!
class Object
def method_missing(name, *args, &blk)
raise NoMethodError unless block_given?
self.class.send(:define_method, name, &blk)
self.send(name, *args)
end
end
Voortaan, wanneer je een nieuwe methode wilt definiëren en meteen gebruiken, geef je de code gewoon mee als block:
'foo'.chopchop {self.chop.chop} => 'f'
'bar'.chopchop => 'b'
Geplaatst in ruby | 1 reactie