Ruby à la PHP

Geplaatst door Danny Lagrouw di, 11 jul 2006 10:50:00 GMT

Ondanks hun enthousiasme voor Ruby en Rails grijpen mensen nog vaak naar PHP als ze een “echte” website maken. Kijk bijvoorbeeld maar eens naar het aantal Ruby-blogs en Ruby-forums dat met PHP wordt opgezet. Dat leidt dan tot enige hoon van bezoekende Rubyisten, maar op zich is het wel begrijpelijk.
  • Veel mensen hebben meer ervaring met PHP, en kunnen daar dus sneller mee overweg.
  • De “kant-en-klare” software die in PHP verkrijgbaar is (zoals blogging software, cms-en e.d.) heeft jaren voorsprong op hun Ruby/Rails tegenhangers; en dat merk je in stabiliteit, gebruiksgemak, hoeveelheid features, documentatie en ondersteuning.
  • Door die jaren voorsprong is er ook meer keuze in PHP-land voor dat soort software.
  • Webhosting… probeer maar eens een Rails site in Nederland te laten hosten. En ook de hosting in het buitenland kent zo zijn problemen. Niet voor niets las ik in een verslag van RailsConf, “Shared hosting + Rails == Suck; Avoid if you can; Rails is ‘a bit of a pig’ compared to the average PHP site”.

Een vierde reden (er zijn er vast nog meer) ontdekte ik toen ik een inschrijfformulier online wilde zetten voor het volgende Profict-event (dit keer helaas geen Ruby, maar Java en Ajax). Het inschrijfformulier verstuurt een mail naar mij, met de inschrijfgegevens. Bovendien worden de gegevens via een http-request op de achtergrond doorgegeven aan een event-organisatie-systeem dat ik in Rails heb gebouwd (achteraf hoorde ik van Remco dat zo’n systeem in vijfvoud is gebouwd tijdens de RAD-race, maar gelukkig: Reuse is vastly overrated). Welnu, hoe maak je zo’n mailformulier, bestaande uit welgeteld één script om de gegevens te mailen en door te sturen? Juist, in PHP. Even afgezien van het feit dat de betreffende provider geen Ruby heeft geïnstalleerd: ik zou eigenlijk met Ruby hetzelfde willen kunnen doen als met PHP. Dus een .rhtml bestand dat de form parameters binnenkrijgt, daar een mail van bakt, en een nette “bedankt en tot ziens”-pagina terugstuurt naar de bezoeker.

Lees verder...

Geplaatst in ,  | 8 reacties

Is Ruby The New Java?

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 ,  | geen reacties

method_missing update

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  | 2 reacties

meer_method_misbruik

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  | 1 reactie

Ruby als lijm

Geplaatst door Michiel de Mare do, 01 jun 2006 08:12:00 GMT

Ruby is natuurlijk een prachtige object-georienteerde taal waar je de mooiste domain-specific languages mee kunt maken. Maar soms heb je gewoon een scriptingtaal nodig, en daar dient Ruby ook prima voor.

Lees verder...

Geplaatst in  | 4 reacties

Presentaties RubyEnRails 2006 online

Geplaatst door Michiel de Mare do, 25 mei 2006 00:06:00 GMT

Frank Oxener: Introductie Rails/Ruby op de kaart

Geert Rozendom: Ketenintegratie met Rails (PowerPoint)

Michiel de Mare: Hoe Ruby Rails mogelijk maakt

Stefan Kaes: Performance Rails

Wilco Bauwer: IronRuby

Erik Veenstra: “Magie met meta-programmeren in Ruby”

Geplaatst in , ,  | 3 reacties

Voor wie er geen genoeg van kan krijgen

Geplaatst door Danny Lagrouw ma, 22 mei 2006 03:29:00 GMT

RubyEnRails 2006 is nog maar nauwelijks achter de rug, of de volgende Nederlandse Ruby en Rails meeting staat alweer voor de deur: Ruby on Beers op 31 mei in Utrecht. Lees meer op het (toepasselijk genaamde) JuiceBlog!

Geplaatst in , ,  | geen reacties

Last-minute RubyEnRails

Geplaatst door Danny Lagrouw ma, 15 mei 2006 05:59:00 GMT

RubyEnRails 2006 komt snel dichterbij. Vlak voor de grote dag hebben we helaas een wijziging in het programma moeten doorvoeren. De Rails introductieworkshop waarmee Remco en ik de dag zouden beginnen, komt te vervallen (vanwege een jonge nieuwe Rubyist die in huize Remco in aantocht is!). We hebben Frank Oxener van Agile Dovadi bereid gevonden om het spits af te bijten met zijn presentatie; eveneens een introductie in Rails, met integratie met Google Maps. Het volledige, bijgewerkte programma vind je op www.profict.nl/ruby.

Verder heb ik vorige week een kijkje genomen op de locatie, Huis de Voorst in Zutphen. Na een paar keer verkeerd te zijn gereden (oke, ik heb geen richtingsgevoel, maar toch) heb ik het uiteindelijk gevonden door mijn navigatiesysteem in te stellen op “Voorsterallee, Zutphen”. Ik heb de locatie aangegeven op Google Maps.

Tot donderdag!

Geplaatst in , , ,  | 3 reacties

vluchtige ActiveRecord objecten

Geplaatst door Remco van 't Veer wo, 26 apr 2006 07:40:00 GMT

Ik ben een simpele web applicatie met rails aan het bouwen. Niets bijzonders; wat berichtjes, een gastenboek en wat formulieren. Deze laatste formulieren hoeven niet opgeslagen te worden maar moeten verstuurd worden via e-mail. Dat versturen is geen probleem; recht toe recht aan ActiveMailer. De uitdaging zit hem in het valideren van deze formulieren.

Uitdaging is misschien een beetje sterk uitgedrukt maar als je net het beheer van berichten met ActiveRecord hebt gebouwd, is het een beetje jammer als je dan toch weer dingen gaat schrijven als:

if params[:email].nil? || !EMAIL_PATTERN.match(params[:email])
  @errors[:email] = 'E-mail adres moet correct ingevuld worden.'
end

Neeh, daar pas ik voor! Ik wil gewoon form.valid? kunnen vragen zoals bij ActiveRecord objecten. Maar hoe doe je dat?

Lees verder ››

Geplaatst in ,

Eindelijk: ruby.pagina.nl

Geplaatst door Danny Lagrouw wo, 19 apr 2006 22:42:00 GMT

Tot mijn verbazing zag ik een paar weken geleden dat er nog geen ruby.pagina.nl bestond. Er zijn natuurlijk verschillende van dit soort linksites, maar voor zover ik weet is (start)pagina.nl wel de bekendste en grootste. Ik heb me spontaan aangemeld als ‘paginabeheerder’ en ben in de wondere wereld van startpagina (contract, richtlijnen, pagina­onderhouds­website, beheerders­vereniging, beheerders­bijeenkomst…) terecht­gekomen. Met als resultaat dat ruby.pagina.nl vanaf vandaag live is! Ik heb schaamteloos del.icio.us, ruby-lang.org, rubyonrails.org en diverse blogs afgestruind op zoek naar geschikte links; maar waarschijnlijk ben ik lang niet compleet. Weet je nog een link die echt niet mag ontbreken, dan hoor ik het graag (je kunt op het envelopje rechtsboven op de pagina klikken voor een fraai reactieformulier).

Geplaatst in , ,  | 4 reacties

Oudere artikelen: 1 ... 7 8 9 10 11 12