Dovadi

None of us is as smart as all of us.

Workshop RubyEnRails 2006

Ik kijk terug op een heel geslaagde RubyEnRails 2006 dag, met hele interessante presentaties over Rails en Ruby.

Ondergetekende heeft ook een workshop gegeven en we hebben een applicatie van scratch af aan gemaakt met behulp van Google Maps in een tijdsbestek van een uur, waarmee Ruby letterlijk en figuurlijk op de kaart hebben gezet. Allemaal dankzij de kracht en veelzijdigheid van ruby, rails en de cartographer plugin.

Het resultaat van de workshop is te zien op RubyOpDeKaart.
We hebben alleen een ajax_scaffold gebruikt en links aan de namen toegevoegd zodat je inzoomt op de bewuste marker.

Als databron voor de relatie tussen de postcodes en de lengte- en breedtegraden hebben we gebruik gemaakt van een platte tekstfile beschikbaar gemaakt op de website
van Prof. Y. Lupardi.

Voor de layout hebben we gebruik gemaakt van de simplex4 template beschikbaar gesteld via openwebdesign.

Verder is de originele en ongewijzigde code van de 18de mei te downloaden in rar en zip formaat
inclusief de cartographer plugin. Let op dat je een google map key
aanvraagt en de juiste naam opgeeft in het keys.rb bestand van de plugin (zie ook mijn vorige post).

Bij deze roep ik iedereen op om deze applicatie verder te ontwikkelen. We zullen binnenkort een hiervoor een project openen op Rubyforge.

Gebruik Van Sqlite3 Op Windows

Voor de workshop op de RubyEnRails 2006 dag heb ik gebruik gemaakt van Sqlite als database.

Installatie is simpel als je weet wat je moet doen, dus bij deze de handelingen die ik heb verricht.

Download sqlite3.exe en de sqlite3.dll (zonder TCL bindings) en plaats deze in je PATH-directory (bv in /ruby/bin)

Dan nog de sqlite3 library voor ruby installeren, middels) gem install sqlite3-ruby en kies de juiste versie voor het windowsplatform (sqlite3-ruby 1.1.0 (mswin32)).

Zie ook instructies op RubyonRails.com

Het aanmaken van een db-file, doe middels het sqlite3 naam_van_database.db in de command-box.

En tot slot je database.yml aanpassen, bv:

development:
  adapter: sqlite3
  dbfile: db/naam_van_database.db

Let er op dat ook de drie vermeld staat bij de adapter en op de db/ indien je de database ook in de db-directory zet.

Verder heb ik gebruik gemaakt van de sqlite browser , die je hier kunt downloaden.

Cartographer Plugin

Voor de workshop voor de RubyEnRails 2006 dag hebben we gebruik gemaakt van de Cartographer plugin.

De instructies op de website zijn helder, maar er zijn toch een aantal aanvullende tips te geven:

  • Op de site staat een klein foutje, namelijk bij het onderwerp render the map in your view dmv <%= @map.to_html %> , let op dat ook de laatste % meegenomen wordt.
  • Je moet een api key aanvragen bij google (bij ontwikkeling op je lokale systeem, geef je vermoedelijk http://localhost:3000/ op) en deze in het bestand keys.rb opgeven. Daarnaast moet je de naam van je computer opgeven. Zie r19 en r20 GOOGLE_MAPS_API_KEYS = case `hostname`.chomp. Op een windowsmachine moet je daar de naam van de PC opgeven worden en NIET de URL van je applicatie!
  • Geef include Cartographer in je environment.rb op (webserver herstarten).

Onderwater heb ik nog twee wijzigingen in cartograher.rb uitgevoerd:

  • In r31 staat <script src=‘http://maps.google.com/maps?file=api&v=2&key=#{key}’ type=‘text/javascript’></script> heb ik v=1 veranderd in v=2, waardoor je meer detailinformatie krijgt op de kaart van Nederland. Je maakt daardoor gebruik van Google maps API versie 2 .
  • Verder in r281 _ script << " GEvent.addListener(#{name}, \“click\”, function() {#{name}.openInfoWindow*Html*(\“#{@info_window}\”);});\n"_ heb ik de method openInfoWindowScript gewijzigd in openInfoWindowHTML anders werkt de open infowindow niet.

Je kunt onze aangepaste cartographer plugin downloaden in rar en zip formaat. Let op dat je een eigen key
aanvraagt en de naam van je computer opgeeft in keys.rb.

Succes!!

VMware

Het is me eindelijk gelukt om langer dan een week Windows niet te gebruiken op een pc. Nu ik als ontwikkelaar volledig opensource tools gebruik vind ik linux toch een fijner platform dan Windows. Het sluit beter aan op de Mac OS X, met name bij het gebruik van de commandline, waardoor ik makkelijker tussen machines kan wisselen.


Uiteindelijk heb ik dankzij VMware echt de overstap gemaakt. VMware server is gratis ter beschikking voor zowel linux als windows. Ik ben op windows begonnen met het bouwen van linux virtual machines op een vorige opdracht. Deze heb ik als een soort virtual appliance ingericht met Trac/Subversion en een ontwikkeldatabase om een soort instant ontwikkelstraat te creeeren.


Scheelt enorm veel tijd bij de opstart van een project, omdat je al zonder (server) hardware van start kan gaan. Niet meer drie weken wachten totdat de beheersorganisatie de hardware voor je project besteld heeft. Je draait de virtual machine eerst op je desktop en tegen de tijd dat de hardware geleverd is, kopieer je de image naar de nieuwe machine. Als eindgebruiker merk je niet eens dat de server een virtual machine is. VMware draait immers gewoon als een service of daemon op de machine.


Ik heb in elk geval goed kunnen experimenteren met linux op deze manier. Het is namelijk niet erg om dingen te verknallen, omdat het vrij makkelijk is om je veranderingen terug te draaien. Hmm, agile systeembeheer?


Ik heb het inmiddels omgedraaid en gebruik linux als host en windows indien nodig als virtual machine. Dit werkt minder prettig, omdat je windows toch via de ‘zware’ gui moet gebruiken i.p.v. een SSH sessie. Dan merk je wel dat een virtual machine trager is. Waarschijnlijk is de niet gratis VMware workstation hier beter voor geschikt. Ik heb gelukkig nauwelijks naar windows hoeven terug te grijpen.


De ‘instant’ trac/subversion virtual appliance heb ik intussen hergebruikt voor ons iDEAL projectje.
Ik probeer nog een RoR virtual appliance te maken met Rails, Apache of Lighttp en MySQL al goed ingericht. Dan heb je een soort locomotive, maar dan voor windows en linux.

Selenium

Het is een tijdje geleden dat ik voor het laatst echt heb geprogrammeerd en om er weer in te komen doe ik de tutorial uit het RoR boek opnieuw.
Als extra leerproces schrijf ik wel eerst de testen voor de code. Voor de client side testen heb ik Selenium geinstalleerd. Voor Selenium is er een ruby gem,dus installatie gaat gewoon via gem install Selenium.
Daarnaast kun je van http://www.openqa.org/selenium/ een plugin voor firefox downloaden. Deze plugin bevat een recorder waarmee je acties in je browser kunt opnemen om deze als basis te gebruiken voor je testscripts.

Met Selenium heb ik in elk geval een fout in de listing op pagina 63/64 uit het RoR boek kunnen detecteren wat niet met een gewone unit test mogelijk was.
Bij de destroy link moet nog een :post=>true komen in de rhtml, anders lukt het niet om een product te verwijderen.

De webtemplate talen (rhtml, jsp, etc.), zaten mij nooit helemaal lekker, juist omdat ik het moeilijk vond om de code te testen. Selinium lost dit heel netjes op en we kunnen streven naar complete code coverage.