Weer bereikbaar!

Geplaatst door Remco van 't Veer wo, 10 mei 2006 11:51:00 GMT

Na een dag of wat onbereikbaar geweest te zijn, is de RubyEnRails site eindelijk weer “up”. We waren vergeten;

rake freeze_edge REVISION=3303

te draaien. Met als gevolg dat de upgrade van dreamhost naar rails 1.1 onze typo installatie onbruikbaar heeft gemaakt.

Freeze is cool, so freeze for goodness sake met andere woorden vertrouw nooit je hosting partij en freeze je gems.

1 reactie

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

EJB's aanroepen met Ruby

Geplaatst door Danny Lagrouw do, 13 apr 2006 13:25:00 GMT

Nadat ik een paar dagen geleden JRuby had geïnstalleerd en er wat mee had gespeeld, begon ik me af te vragen of je een EJB zou kunnen aanroepen vanuit een JRuby-script. De Java-code waarmee je een EJB aanroept is immers gewoon client code, die met de applicatieserver communiceert over een (in het geval van BEA) HTTP-achtig protocol. In mijn huidige project hebben we een OptimalJ-team dat alle domeincode (Java domeinmodel classes) genereert, en daarbij business services aanlevert (in de vorm van session EJB’s) aan ons, het web frontend team. We ontwikkelen de frontend met BEA WebLogic Portal. Als we nu die EJB’s zouden kunnen aanspreken vanuit JRuby, en Rails zou onder JRuby draaien (wat nog slechts een kwestie van tijd lijkt te zijn), dan zouden we zo’n frontend applicatie in Rails kunnen maken. Dat zou mooi zijn. Ik moet alleen de enterprise architect van het bedrijf in kwestie nog even overtuigen, en hij wordt al horenddol van mijn enthousiaste verhalen over Ruby en Rails…

Maar nu de code! Tot mijn verbazing (na 6 jaar ervaring met EJB’s is alles wat met EJB’s te maken heeft en meteen werkt een grote verrassing) was het slechts een kwestie van de Java-code voor het aanroepen van de EJB, omzetten in JRuby-code. En dan werkt het gewoon. Dit is een voorbeeld van de omgezette code:

require 'java'

include_class 'java.util.Properties'
include_class 'javax.naming.Context'
include_class 'javax.naming.InitialContext'

properties = Properties.new
properties.put(Context::INITIAL_CONTEXT_FACTORY,
    "weblogic.jndi.WLInitialContextFactory")
properties.put(Context::PROVIDER_URL, "t3://localhost:7001")
context = InitialContext.new(properties)
home = context.lookup("business-ejb-jndi-name")
business_ejb = home.create
result = business_ejb.someBusinessMethod(parameters)

Oke, er zijn wat kleine lettertjes. Het voorbeeld werkt op een BEA WebLogic applicatieserver. Voor een andere JEE applicatieserver moet je de classname van de juiste InitialContextFactory invullen. Vul ook de JNDI-naam van de EJB in (achter lookup). Bovendien moet je, vóór je het script draait, de juiste libraries in de CLASSPATH environment variabele zetten. Voor de BEA server moet je bijvoorbeeld weblogic.jar nemen en de EJB client jar (die de home interface van de EJB bevat). Maar als je dat hebt uitgezocht, zou het moeten werken; ik heb het bijvoorbeeld ook met JBoss aan de praat gekregen. Vraag eventueel een Java-guru in je buurt om hulp.

Ik heb de code verwerkt tot een JRuby module (die je hier kunt downloaden vanuit de (eindelijk werkende) RubyEnRails Subversion repository). Met deze module hoef je alleen nog het volgende te schrijven voor het aanroepen van een EJB naar keuze:

require 'rejb'
business_ejb = Rejb::ejb("business-ejb-jndi-name")
result = business_ejb.someBusinessMethod(parameters)

Geplaatst in  | geen reacties

RubyEnRails 2006 update

Geplaatst door Danny Lagrouw ma, 10 apr 2006 03:21:00 GMT

Locatie

Update: Omdat het aantal inschrijvingen voor RubyEnRails 2006 onze stoutste verwachtingen overtreft, zijn we genoodzaakt uit te wijken naar een andere, nog fraaiere locatie: Huis de Voorst bij Zutphen. Op de website van Huis de Voorst is een routebeschrijving te vinden. Voor wie met het openbaar vervoer komt wordt (vanaf NS-station Zutphen) vervoer naar het kasteel verzorgd.

Bevestiging

Update: Als je je hebt ingeschreven voor RubyEnRails 2006 ontvang je deze week (17) nog een bevestiging. Als je je hebt ingeschreven maar geen bevestiging ontvangt, laat dat dan weten via email (ruby AT profict nl). Als je je nog niet hebt ingeschreven, doe dat dan snel ; het aantal plaatsen is beperkt!

Programma

Het programma voor RubyEnRails 2006 op 18 mei begint langzaam maar zeker vastere vormen aan te nemen. Een aantal punten zijn onder voorbehoud, maar het programma zal er waarschijnlijk ongeveer als volgt uitzien. In de ochtend zal de nadruk liggen op sessies voor deelnemers met weinig of geen Ruby en Rails ervaring. ’s Middags plannen we meer geavanceerde onderwerpen. Dit is echter geen vaste regel. Tussendoor is er gelegenheid om informeel kennis en ervaring uit te wisselen. Voor een beschrijving van de verschillende sessies: zie www.profict.nl/ruby.
  • 09:00 – 09:30 Ontvangst
  • 09:30 – 10:30 Remco van ‘t Veer en Danny Lagrouw: Workshop On Rails
  • 10:30 – 11:30 Newminds: Ketenintegratie met Rails
  • 11:30 – 12:30 Michiel de Mare: Hoe Ruby Rails mogelijk maakt
  • 12:30 – 13:30 Lunch
  • 13:30 – 15:30 Stefan Kaes: Performance Rails
  • 15:30 – 16:30 Wilco Bauwer: Ruby-compiler voor het Microsoft .Net framework (onder voorbehoud)
  • 16:30 – 17:30 Erik Veenstra: Magie met meta-programmeren in Ruby
  • 17:30 Afsluiting

Geplaatst in , , ,  | geen reacties

Interactief Programmeren

Geplaatst door Michiel de Mare vr, 07 apr 2006 03:36:00 GMT

“Is er wel een goede ontwikkelomgeving voor Ruby en Rails, zoals Eclipse voor Java?” Dat is een van onze Veelgestelde Vragen. Tsja, wat heb je? TextMate is razend populair bij de “Core Developers”. RadRails, gebaseerd op Eclipse, wordt in een hoog tempo verbeterd. Er is natuurlijk altijd VIM. Zelf ben ik verslingerd aan IntelliJ – zelfs goed als je geen Java gebruikt.

Wanneer Ruby-goeroes mij vertelden dat het met Ruby niet zoveel meer uitmaakt welke editor je gebruikt haalde ik meewarig mijn schoulders op (misschien ben ik meer een Tool maven dan zij). Zeker nooit met IntelliJ gewerkt, dacht ik dan.

Toch heb ik de laatste tijd steeds meer het gevoel dat ook een IDE de verkeerde benadering is voor Ruby. IDEalisten (zucht – red.) wijzen je er eindeloos op dat een IDE voor een dynamische taal nooit zoveel kan bieden qua ondersteuning (code completion, refactoring) als een voor een statische taal als Java. Ze wijzen erop dat een IDE nooit kan weten welk type een variabele runtime zal hebben, laat staan welke methoden er runtime aan toegevoegd zullen zijn.

Maar Ruby heeft wel degelijk perfecte code completion! Alleen niet in een IDE, maar in irb (Interactive Ruby), waar je Ruby-process exact weet op welke methoden je object kan reageren. Sowieso breng ik steeds meer tijd door in de rails console. Ik test er mijn code, ik probeer nieuwe truukjes uit, ik voer CRUD-operaties uit via mijn model-classes. Soms gebruik ik mijn editor alleen om er code in te pasten die ik in irb heb geschreven.

Waarom geen ontwikkelomgeving die op dit principe is gebaseerd? (Waarschijnlijk ben ik nu opnieuw een wiel aan het uitvinden dat begraven ligt onder een hele zware grafzerk waar de inscriptie “SmallTalk – Only The Good Die Young” op gebeiteld staat. Het zij zo.) Een paar suggesties voor wat mogelijk zou moeten zijn in deze mythische omgeving:
  • operaties die werken op de project-source
  • refactorings
  • interactief testen van methoden en die kunnen extraheren naar unit tests
  • meerdere windows met syntax highlighting

Dit is maar een gedachtenkronkel, maar ik ben ervan overtuigd dat de toekomst van Ruby ligt in het benutten van haar krachten, en niet in een onmogelijke race om Java IDE’s in te halen.

Geplaatst in  | 2 reacties

RAD race 2de plaats!

Geplaatst door Remco van 't Veer do, 30 maa 2006 22:17:00 GMT

Woensdag middag is de uitslag van de Rapid Application Development Race bekend gemaakt op het Database Systems 2006 evenement in Leiden. Tot onze verbazing zijn we als 2de geëindigd. Zoals ik al eerder aangaf voelde we dat we het niet slecht hadden gedaan maar 2de plaats hadden we nooit durven dromen!

Maar waren wij nou zo goed? Nee, de race is met grote voorsprong gewonnen door Crossmarx een op Java gebaseerde 4GL tool, zij staken ver boven uit in de puntentelling. Maar we hebben andere 4GL systemen, Oracle tools en ervaren Java en C# ontwikkelaars achter ons gelaten.

Helemaal niet slecht voor een stelletje hobbyisten. Hopelijk zijn we volgend jaar als professionals van de partij en kunnen we Crossmarx op hun nummer zetten en laten zie dat Ruby en Rails 5GL genoemd mogen worden.

Geplaatst in , ,  | 4 reacties

Koffie en Ruby en Rails

Geplaatst door Danny Lagrouw do, 30 maa 2006 11:43:00 GMT

Zou er nou eigenlijk een beetje leven zitten in de Nederlandse Ruby en Rails community, vraag je je wel eens af. Een paar maanden geleden, toen Remco, Michiel en ik met deze site begonnen, leek het allemaal nog heel beperkt. Vanmorgen, in een Coffee Company in Amsterdam waar Fingertips een informele Rails meeting had georganiseerd, werd het beeld van ‘de’ Nederlandse Rails community weer wat duidelijker. Inderdaad, Rails community, want bijna alle (ongeveer 30) aanwezigen zijn voornamelijk met Rails bezig. Er waren wat kleine bedrijven aanwezig, wat werknemers van grotere bedrijven die vooral buiten werktijd enthousiast met Rails bezig zijn, en een enkele loslopende student. De gemiddelde Nederlandse Railser is redelijk jong, enthousiast, en heeft al aardig wat ervaring met Rails (als ik even onbeschaamd mag generaliseren). Ik was aangenaam verrast om te horen dat er werkelijk al geld verdiend wordt met Rails projecten, al zijn de opdrachtgevers in de regel wel kleinere bedrijven. Op zich niet vreemd; zoals nu wel voldoende is uitgekauwd zal het nog wel even duren voordat Ruby en Rails hun weg naar de enterprise gevonden hebben. Het was de reis naar de hoofdstad zeker waard; maar volgende keer iets dichter bij mij in de buurt?

Geplaatst in ,  | 3 reacties

Rails 1.1 is uit!

Geplaatst door Remco van 't Veer ma, 27 maa 2006 21:37:00 GMT

Omdat de hele wereld er naar gaat linken, hier onze bijdrage: Rails 1.1: RJS, Active Record++, respond_to, integration tests, and 500 other things!.

Geplaatst in ,  | 1 reactie

From Ruby With With

Geplaatst door Danny Lagrouw vr, 24 maa 2006 12:10:00 GMT

Jarenlang was Pascal mijn favoriete taal, in verschillende verschijningsvormen: UCSD Pascal, Turbo Pascal, Object Pascal en tenslotte Delphi. Inmiddels is het zo’n 6 jaar geleden dat ik voor het laatst iets met Delphi heb gedaan, maar ik mis de taal niet echt. Pascal had echter één keyword dat ontzettend handig kon zijn, en dat (bijvoorbeeld) Java helaas niet heeft overgenomen: with. In Ruby is with niet ingebakken, maar met een trucje lukt het wel (zo las ik in een blogpost van Chris Eidhof, bedankt!). Breid eerst de Object class uit:

class Object
  def with
    yield self
  end
  # het kan nog anders, lees Chris' post!:
end

Daarna kun je with gebruiken op een willekeurig object:

Chatroom.find(1).messages.last.with do |m|
  m.created_at = Time.now
  m.save
  puts "Message: #{m.text} by #{m.user}" 
end

Je ziet, de elegantie zit in het feit dat je de opgezochte message niet in een tijdelijke variabele hoeft te bewaren; die krijg je automatisch in het with block.

Geplaatst in  | geen reacties

Oudere artikelen: 1 ... 15 16 17 18 19 20