$ gem push rails-3.0.beta

Paul Engel zo 07 feb 10

Daar is ie dan: de Rails 3.0 beta release is live gegaan!

Voor de één zal het updaten makkelijker gaan dan de andere, dus bekijk RubyInside voor eventuele oplossingen.

Vraag je je af welke gems en plugins nog werken in Rails 3? Check dan Rails Wiki voor een beknopte lijst.

Veel Rails 3.0 plezier iedereen!

Gepost in hor |  0 reacties

Vim, deel 1

Jeroen Bulters vr 05 feb 10

Gezien de regelmatige verbazing over mijn gebruik van – in mijn ogen – de coolste retro text editor nu even geen direct Rails gerelateerd artikel maar korte introductie in werken met vim.

Waarom vim?

Simpel, het is nagenoeg overal aanwezig (mensen met een mac, gebruik wel MacVim), heeft legio uitbreidingsmogelijkheden en is simpelweg snel te noemen. Zelf maak ik veelvuldig gebruik van de Rails.vim, surround.vim, fuzzy_finder_textmate en NERDTree plugins, waardoor ik enkele populaire Textmate functies toch nog kan gebruiken in vim, terwijl ik ook de oorspronkelijke sterke punten van vim intact houdt.

Vandaag in deel 1 de basisbegrippen van werken met vim.

Text invoeren

Als je vim start zal je weinig succes hebben met het invoeren van text, pas als je (per ongeluk) de ‘i’, ‘a’ of ‘o’ toets aan laat zal je in staat zijn om de o-zo-gewenste tekentjes toe te voegen aan je bestand. Stoppen met invoeren gaat ervolgens met Escape.

De reden hiervoor is dat vim standaard in de zogenaamde normal-mode leeft. De normal-mode is de modus waarin je het meerendeel van de tijd zal doorbrengen in vim en wordt gebruikt voor navigeren en bewerken (invoeren uitgezonderd). Navigeren in vim kan door middel van de pijltjes toetsen, of – zoals de bedoeling is – met de h,j,k en l toetsen (zie ook de vim-cheatsheet onderaan dit artikel). Tevens kent vim zogenaamde motions ofwel: handige “commando’s” om snel door je text te navigeren. Het loont de moeite eens te spelen met deze motions (de groene blokjes op de cheat-sheet).

Tegens is het mogelijk om in de normal-mode enkele commando’s uit te voeren die onder te verdelen zijn in (1) de zogenaamde ‘ex’ commando’s en (2) operators. Ex commando’s zijn eigenlijk alle interne vim commandos en beginnen altijd met een dubbele punt. De belangrijksten: “:w” (write), “:wq” (write-and-quit) en “:q!” (quit-without-saving). Ook alle uitbreidingen in vim, die gebaseerd zijn op vim-script zijn aan te roepen met ex-commando’s. De tweede groep bestaat uit commando’s die werken op je document (oranje blokjes op de cheat-sheet) en kunnen op twee manieren gebruikt worden. Ten eerste in combinatie met een motion (“d$” verwijderd bijvoorbeeld alles vanaf de cursor tot het einde van de regel), ten tweede op basis van een selectie.

Het selecteren van text in vim introduceerd een derde modus naast normal- en insert-mode: de visual-mode. Deze betreed je door het indrukken van de ‘v’ (per karakter selecteren), ‘V’ (per regel selecteren) of ‘Control-v’ (block-selection) toetsen en verlaat je door het uitvoeren van een van de commando’s of door het inrammen van de Escape toets.

Het invoeren van text in vim kan zoals eerder genoemd ook op meerdere manieren gestart worden (zie de fel-rode letters op de cheat-sheet).

Is dit nou handig?

In het begin zeker niet, maar – zoals met zovele dingen – oefening baart kunst. Persoonlijk kan ik met een gerust hart zeggen dat ik in vim stukken efficienter werk dan in Textmate of enige andere editor. Het schakelen tussen de verschillende modi wordt vanzelf een ritme en ik kan je bijna garanderen dat mocht je ooit gewend raken aan werken met vim, je hetzelfde ritme ook in andere editors zal toe gaan passen, het soms leuke resultaten.

Hoewel deze introductie met een gerust hart karig genoemd kan worden is deze cheat sheet dat absoluut niet. Ongeveer ieder commando,motion of optie die met de stock-vim mogelijk is, is er op terug te vinden.

In de volgende aflevering, handige plugins voor vim die het leven van een (Rails-)programmeur absoluut makkelijker maken.

Voor de liefhebbers, mijn vim instellingen en plugins zijn terug te vinden op github (github.com/bulters/vim_files).

:wq

Gepost in hor |  1 reactie

Upgrade je applicatie naar Rails 3

Johan Vermeulen do 04 feb 10

De mannen van Peep Code hebben een gratis screencast online gezet waarbij ze een Rails 2 applicatie upgraden naar Rails 3.

De upgrade is gebaseerd op een onofficiële release van Rails 3, wanneer de Rails 3 beta gereleased is, wordt de screencast geupdate.

Gepost in hor |  0 reacties

Ruby on Rails 3.0 bèta release notes

Stephan Kaag wo 03 feb 10

Eén dezer dagen zal de eerste officiële bèta van Rails 3.0 het daglicht zien.
Rails 3.0 is de eerste release van Rails na de merge met Merb, zoals ons beloofd is in december 2008.
Rails 3.0 biedt grote upgrades in alle componenten van Rails. Vanmorgen zijn de officiële release notes gepubliceerd. Absoluut de moeite van het lezen waard!

http://guides.rails.info/3_0_release_notes.html

Gepost in hor |  0 reacties

Bonjour, je suis Cucumber!

Gawin Dapper do 28 jan 10

In de categorie snelheidsoptimalisaties bij het testen schreef Michael al eerder over Cucumber Salad voor het gebruik maken van een meerdere cores tijdens het testen.

Mocht je nu over niet genoeg cores beschikken, dan kun je altijd het leed delen met je collega’s door gebruik te maken van testjour

Met testjour maak je gebruik van Bonjour om binnen je netwerk van elkaars idle time gebruikmaken door tests gedistribueerd uit te voeren. Uiteraard is dit alleen interessant als je een groot aantal tests en computers tot je beschikking hebt.

De vraag blijft natuurlijk, wie neemt de volgende stap en integreert testjour met Cucumber Salad?

Gepost in  |  0 reacties

Stop! Hammertime.

Dax Huiberts wo 27 jan 10

We hebben het op Holland on Rails al eerder gehad over debuggen, maar het probleem met ruby-debug is dat je expliciet moet aangeven wanneer ruby-debug moet gaan runnen. Vrijwel altijd is dat als er een exception geraised wordt. Daarvoor moet je dan een rescue block schrijven die de debugger start en daarna weer de exception re-raised. Dat is niet zo praktisch.

Met behulp van Hammertime is dit probleem opgelost en op een goede manier ook. Lisp, Smalltalk en Haskell zijn een paar talen die ervoor zorgen dat je in een interactive console terecht komt als er een exception ontstaat. Hammertime bootst dit na door de raise method van de Kernel module te herimplementeren en een soortgelijke interactive console op te starten. In deze interactive console kan je de volgende acties uitvoeren:

1. Continue (process the exception normally)
2. Ignore (proceed without raising an exception)
3. Permit by type (don't ask about future errors of this type)
4. Permit by line (don't ask about future errors raised from this point)
5. Backtrace (show the call stack leading up to the error)
6. Debug (start a debugger)
7. Console (start an IRB session)

Zoals je ziet heb je veel mogelijkheden met Hammertime. Enig klein nadeeltje is dat Hammertime niet werkt met exceptions die worden geraised in native code, maar enkel met exceptions die worden geraised in ruby code. Voor veel van je eigen geschreven code is dit waarschijnlijk dus ook geen probleem. Hammertime staat natuurlijk ook op github.

Gepost in hor |  0 reacties

MySQL REPLACE

Gawin Dapper wo 27 jan 10

Vandaag kreeg ik een MySQL database onder ogen met daarin behoorlijk creatieve telefoonnummers. Uiteraard zou het prettig zijn als alle telefoonnummers hetzelfde zouden zijn, zodat we ze makkelijk kunnen gebruiken (in bijvoorbeeld een SMS systeem)

Nu zouden we eigenlijk natuurlijk Ruby met require “mysql” moeten gebruiken, maar het kan ook rechtstreeks in MySQL met behulp van het REPLACE comando.

UPDATE table SET column = REPLACE(column,'match','replacement')

En in dit geval dus:

UPDATE users SET phone_number = replace(phone_number,'020-','+3120');

De update query kan ook natuurlijk ook uitgebreid worden met een WHERE statement.

UPDATE users SET phone_number = REPLACE(phone_number,'020-','+3120') WHERE email LIKE 'gawin%';

En indien gewenst ook met regular expressions:

UPDATE users SET phone_number = REPLACE(phone_number,'020-','+3120') WHERE name REGEXP '^gawin';

Gepost in  |  0 reacties

Videointerview met Yukihiro Matsumoto

Johan Vermeulen wo 27 jan 10

Op de QCon enterprise software development conferentie heeft Yukihiro Matsumoto, bedenker en maker van Ruby, een videointerview gegeven.

In het interview verteld Matz wat hij anders zou als hij Ruby vanaf scratch zou herschrijven.

Gepost in hor |  0 reacties

Testen in de browser

Jeroen Bulters vr 22 jan 10

Het testen van Rails applicaties lijkt wel mogelijk op een haast oneindig aantal manieren. Voor ieders voorkeur is er wel een test framework met bijbehorende voor en nadelen.

Cucumber is momenteel een van de meest populaire test frameworks, vooral omdat een klant deze ook kan lezen en begrijpen. Echter wordt het testen met Cucumber lastiger als de applicatie gebruik maakt van ajax requests. Cucumber gebruikt webrat, en webrat is niet meer dan een luxe screenscraper (excuses voor de oneerbiedigheid) met een paar leuke extra’s. Gelukkig zijn hier ook al ruime tijd oplossingen voor, onder andere in de vorm van selenium.

Het nadeel hiervan is echter dat er altijd extra daemons, libraries en plug-ins nodig zijn. Daarom: watir. Watir is een simpele gem die de interactie met een browser voor je regelt. Persoonlijk gebruik ik de safariwatir variant in verband met mijn voorkeursbrowser.

Het gebruik van watir is eenvoudig:

 require 'watir'
 browser = Watir::Browser.new
 browser.goto("http://127.0.0.1:3000")

Vervolgens kan je gebruik maken van een groot scala aan functies om met de ingeladen site te ‘spelen’.

 browser.text_field(:name, "username").set "jeroen"
 browser.text_field(:name, "password").set "1a2b3c"
 browser.button(:name, "aanmelden").click

Et voila, testen, direct in de browser is mogelijk. Het uitlezen van text in de diverse elementen is eenvoudig. Er blijft echter een probleempje. Niet alle browsers vuren javascript events af als er via een interface met hun gesproken wordt. Om dit op te lossen dien je dus de events met de hand af te scieten. Gelukkig is een wrapper functie zo geschreven en watir maakt het genereren van javascript events eenvoudig:

 browser.text_field(:name, "username").fire_event('onkeypress')

Vervolgens even wachten totdat een div geupdate is:

 
 wait_until { browser.div(:id, 'username_available').visible? }

Uiteraard is het mogelijk om watir te gebruiken in combinatie met cucumber. Een eenvoudige uitleg is hier te vinden.

Gepost in hor |  0 reacties

jQuery Lint

Stephan Kaag wo 20 jan 10

jQuery Lint is een eenvoudig script dat je kan gebruiken in combinatie met jQuery. Het werkt daar namelijk bovenop en rapporteert errors en foutief gebruik van jQuery.

Installatie is zeer eenvoudig; includen in je pagina is voldoende.

<script src="jquery.js"></script>
<script src="jquery.lint.js"></script>

De rapportage gebeurt via Firebug. Het script werkt op dit moment dan ook enkel in Firefox.

Meer info..

Gepost in hor |  0 reacties

Welkom op Holland On Rails

Het startpunt voor Ruby On Rails in Nederland. Vind de laatste technieken, meningen en nieuwtjes.

Recente Jobs

Gezocht: Ruby On Rails ontwikkelaar (junior of senior)

Eet, drink en droom jij over Ruby On Rails? Wil jij het liefste dag en nacht bezig zijn met jehobby; super coole webapplicaties ontwikkelen in Ruby On Rails?

Dan willen wij jou graag een podium bieden om je Ruby skills te vertonen aan onze nationale en internationale klanten!

@ Internetbureau Holder, Obdam

Bekijk alle jobs »»

Gereedschapskist

Onmisbare tools voor
iedere developer!
Ruby On Rails
Framework voor de web 2.0 developer. Eindelijk vooruitgang!
TextMate
Editor for true pro's
Typ, tab, top :-)
Nee, niet voor Win.
Made On A Mac
En nou is het over met die saaie grijze Windows bak van je!

Auteurs op deze site

Chris Obdam

'Less is more' evangelist, past dit ook dagelijks toe op zijn tandenborstel.

Chiel Wester

Snelheidswonder op Ruby wielen. Leuk om mee te pair-programmen ;-) Recommend Me
Src-120-attending

Stephan Kaag

Het eerste Rails coreteam- member uit Nederland? Rails evangelist van het eerste uur.

Paul Engel

Én Rails programmeren én interfaces designen? Je zou hem superman kunnen noemen..

Dax Huiberts

Official Zip-Programmer, skinny code is helemaal zijn ding. Haalt meer code weg dan dat er bij komt.

Freek Monteban

Het nieuwste telg uit het Holland on Rails nest! Hij doet niets anders meer!

Johan Vermeulen

De stylesheet-koning uit de kop van Noord-Holland!