Bijeenkomsten deze week

Geplaatst door Remco van 't Veer ma, 24 nov 2008 12:36:00 GMT

Vanavond wordt er weer bier gedronken in Amsterdam en woensdag gaat twente.rb er weer voor zitten:

Beste allemaal,

A.s. woensdagavond is de tweede bijeenkomst van twente.rb:

26 november om 20:00 in het KPMG gebouw (Hengelosestraat, naast de KvK)

Speciaal dit keer is er gelegenheid om te laten zien waar je je zoal mee bezig houdt. Kan een project zijn, een gem of misschien wel een geheel andere technologie. We zijn nog op zoek naar meer presentaties (ook als-ie lightning quick is) dus gooi het over de list als je wat kunt laten zien!

Tot woensdagavond en ik ben benieuwd naar jullie voorstellen.

Met vriendelijke groet,

Roderick

Update: ook in Groningen wordt deze week een drankje genuttigd; dinsdag 25 november.

Geplaatst in  | geen reacties

Rails & Bash

Geplaatst door Michiel de Mare vr, 14 nov 2008 19:15:00 GMT

Ik breng een groot deel van mijn tijd in de OSX terminal door. (Hoeveel? Dit jaar 358 uur en 33 minuten. Thank you RescueTime )

En ik was van plan om een artikeltje te schrijven over de bash history, maar tijdens mijn research ontdekte ik dat dit artikel al bestond.

Dus lees het, en neem de adviezen over! (Of heb je al een HISTSIZE van één miljoen?)

In plaats van mijn artikel dus een aantal rails-relevante aliassen:

# de snelste manier naar een mysql prompt
alias dbd='./script/dbconsole development'
alias dbt='./script/dbconsole test'

# rake validate checkt de syntax van alle ruby-bestanden
# in mijn project.
alias gca='rake validate && git commit -a'

# diff en status commando's die weten of ze svn 
# of git moeten gebruiken
alias dif='if [ -d ".svn" ]; then svn diff; else git diff;fi'
alias st='if [ -d ".svn" ]; then svn st; else git status;fi'

# op mijn server is dit een alias naar production
alias sco='./script/console'

alias cdw+='cap deploy:web:enable'
alias cdw-='cap deploy:web:disable'

# commit naar testomgeving en run autotests
# als iets faalt krijg ik een mailtje
alias gpu='git push slice && cap autospec'

# een deploy kan even duren
# het 'say' commando vertelt me wanneer de deploy klaar is.
alias cdp='git push gitserver && cap deploy_all \
&& say "deployed on production"'

# shortcuts om in te loggen op al mijn servers
alias shmi='ssh michiel@mijnserver.com'

# snel een nieuwe alias aanmaken en laden
alias ebp='mvim ~/.bash_profile'
alias sbp='source ~/.bash_profile'

# nog een paar rails-afkortingen.
alias rmi='rake db:migrate'
alias rti='rake test:integration'
alias rtf='rake test:functionals'
alias rtu='rake test:units'

Wie heeft er nog meer handige deploy-tips?

Recommend Michiel de Mare

Geplaatst in  | Tags ,  | geen reacties

Enumerable#otherwise

Geplaatst door Remco van 't Veer vr, 07 nov 2008 11:02:00 GMT

Hoe vaak heb je niet iets als het volgende geschreven?


if results.empty?
  puts "no results" 
else
  results.each do |result|
    puts "- #{result}" 
  end
end

In een poging om alle lijsten in een web applicatie te kunnen voorzien van een mededeling dat de lijst leeg is, zijn we tot de volgende constructie gekomen:


results.each do |result|
  puts "- #{result}" 
end.otherwise do
  puts "no results" 
end

Door simpelweg Enumerable uit te breiden met:


module Enumerable
  def otherwise
    empty? ? yield : self
  end
end

Hiermee kan je ook:


results = search_terms.otherwise{['kittens']}.map{|term| search(term)}

Als je de otherwise methode ook nog eens in de NilClass stopt maakt het zelfs niet meer uit of search_terms in het bovenstaande voorbeeld nil of een lege collectie is.

Geplaatst in ,  | 4 reacties

Leesbare boolean parameters

Geplaatst door Michiel de Mare do, 30 okt 2008 14:34:00 GMT

Soms heb je methodes met een flink aantal parameters, waarvan een aantal booleans zijn. Je aanroep ziet er dan bijvoorbeeld als volgt uit:


button(name, url, false, true, false)

Wat de boolean options betekenen is een volslagen raadsel, zonder er de source bij te pakken, zelfs als je al bekend bent met de methode. Dat is waarom ruby programmeur vaak option hashes gebruiken.

Maar wat dacht je van de volgende notatie:


button(name, url, !:use_form, :icon_only, !:default)

:icon_only evalueert tot true en !:use_form tot false.

Zo wordt het meteen duidelijk wat de booleans betekenen. Wel moet je de volgorde van de parameters goed hebben (in tegenstelling tot een option hash), maar wie de bovenstaande code leest kan de methode-aanroep veel makkelijker begrijpen.

Recommend Michiel de Mare

Geplaatst in  | 3 reacties

Rails I18n scopes

Geplaatst door Remco van 't Veer vr, 17 okt 2008 18:19:00 GMT

Op dit moment ben ik in een team druk aan het bouwen aan een site voor een startup. Een vereiste voor deze applicatie is dat deze meertalig uitgevoerd moet worden. Gelukkig wordt er hard gewerkt om Rails 2.2 uit te rusten met I18N en zijn we dus op edge gedoken om van deze goodies gebruik te kunnen maken.

Een aardige eigenschap van de i18n api is het gebruik van scopes. Hiermee kan je je vertalingen netjes georganiseerd houden. Waar ik echter al snel tegenaan liep is dat ik in m’n templates steeds weer dezelfde scope aan het doorgeven was;

<%= t.label :user_name %>
<%= t.text_field :user_name %>
<div class="help">
  <%= t(:user_name, :scope => [:user, :register, :help]) %>
</div>

<%= t.label :password %>
<%= t.text_field :password %>
<div class="help">
  <%= t(:password, :scope => [:user, :register, :help]) %>
</div>

Natuurlijk had ik ook het volgende kunnen schrijven:

  <%= t('user:register:help:user_name')

Maar eigenlijk wil ik:

  <%= t('user_name', :subscope => :help) %>

of:

  <%= t('help:user_name') %>

schrijven.

Gelukkig is dat helemaal niet moeilijk! We hebben nu het volgende in onze application helper staan:

# Override translate method to consider translate_scope.
def t(text, options = {})
  scope = (translate_scope.dup << options.delete(:subscope)).compact
  super(text, {:scope => scope}.merge(options))
end

# Append scopes to the current translation scope.
def with_translate_scope(*scopes)
  translate_scope.concat(scopes)
  yield
  scopes.size.times{translate_scope.pop}
end

# The current translation scope, default to current controller name.
def translate_scope
  @translate_scope ||= [controller.controller_name]
end

De translate_scope methode beheert de huidige scope. Als basis scope wordt de controller naam gebruikt. De with_translate_scope verwacht een scope en een blok waarin deze scope actief zal zijn. Ten slotte wordt de t methode overschreven om deze scopes te gebruiken en om een extra optie subscope te accepteren.

Hiermee kan het eerdere voorbeeld herschreven worden tot:

<% with_translate_scope [:user, :register] do %>
  <%= t.label :user_name %>
  <%= t.text_field :user_name %>
  <div class="help">
    <%= t(:user_name, :subscope => :help) %>
  </div>

  <%= t.label :password %>
  <%= t.text_field :password %>
  <div class="help">
    <%= t(:password, :subscope => :help) %>
  </div>
<% end %>

Beter? Toch?

Geplaatst in ,  | 2 reacties

Twente.rb gaat deze maand live!

Geplaatst door Remco van 't Veer di, 07 okt 2008 09:49:00 GMT

Lokale Ruby gebruikers groepen schieten als paddestoelen uit de grond. Het begon met Amsterdam.rb, snel volgde Utrecht.rb, vorige maand de eerste (?) Ruby samenscholing in Groningen en deze maand gaat Twente.rb een kroeg bezetten.

De aankondiging van de organisatoren:

Sinds begin 2008 is er in Amsterdam met regelmaat een Amsterdam.rb: een meeting voor Ruby (on Rails) programmeurs. Klinkt natuurlijk enorm gezellig, maar als je vanuit het wonderschone Twente moet komen is dat toch wel een hele onderneming. Omdat er in Twente veel Ruby (on Rails) ontwikkelaars rondlopen, leek het ons leuk om de aftrap te geven voor Twente.rb. Het doel: ervaringen uitwisselen, elkaar wat leren en natuurlijk een gezellige avond hebben!

Op woensdag 29 oktober zal de eerste Twente.rb plaatsvinden. We ontmoeten elkaar om 20:00 uur in cafe de Beiaard aan de Oude Markt in Enschede. Iedereen is van harte welkom, zegt het voort! En vergeet je niet aan te melden bij onze Google Group!

Met vriendelijke groet,
Roderick van Domburg – Nedforce
Edwin Vlieg – BlueTools
Joost Diepenmaat – BlueTools

Wat is eigenlijk de status van Eindhoven.rb? Ene.. zijn er echt geen Rotterdammers die een kroeg excuus zoeken?

Geplaatst in , ,  | 3 reacties

De Nederlandse RubyFlow heet... RubyWeb

Geplaatst door Danny Lagrouw za, 02 aug 2008 06:47:00 GMT

Op 30 juli is een nieuwe Nederlandse Ruby-gerelateerde site van start gegaan: RubyWeb.nl. RubyWeb begint als Nederlandstalige kopie van het internationale RubyFlow.com. In een interview vroeg ik oprichter Tom-Eric Gerritsen naar zijn verdere plannen.

Danny: Wat is het idee achter RubyWeb?

Tom-Eric Gerritsen, oprichter van RubyWeb.nl Tom-Eric: Ik ben RubyFlow begonnen om 2 redenen. Ik miste zelf een goede Nederlandstalige versie van RubyFlow waar ik ook Nederlandstalige weblogs mee kon vinden. Daarbij wil ik in de toekomst graag meer gaan doen met de Nederlandse community. Ik heb het idee dat er in Nederland nog redelijk veel Ruby-developers zitten die wel graag naar Utrecht of Amsterdam voor bijvoorbeeld een Ruby koffiemeeting willen komen, maar dat niet kunnen omdat ze te ver weg wonen. Ik hoop dat ik door de community bij elkaar te krijgen er straks ook bijeenkomsten bij hen in de buurt kunnen worden georganiseerd en de beste manier om de community bij elkaar te krijgen leek me een RubyFlow-achtige website.

Lees verder...

Geplaatst in , ,  | geen reacties

MagLev verplaatst naar de Seaside-dag op ESUG

Geplaatst door Remco van 't Veer wo, 23 jul 2008 12:08:00 GMT

De ESUG conferentie is een stuk interessanter geworden voor Rubyisten omdat de MagLev en Seaside presentaties verhuist zijn naar één en dezelfde dag. Bericht van de organisatie:

MagLev verplaatst naar de Seaside-dag, te weten de donderdag. Dit is extra interessant voor Rubyists omdat ze nu op 1 dag voor €210,- zowel de MagLev als de Seaside presentaties bij kunnen wonen.

Highlights uit het donderdagprogramma:

  • De GLASS en Maglev presentaties worden gegeven door GemStone, waarvan key developers op de conferentie zullen zijn.
  • Web Velocity combineert Seaside met toegang tot relationele databases. Ontdek hoe snel web development kan zijn.
Er zijn veel Seaside-experts aanwezig en er is gelegenheid hands-on ervaring met Seaside op te doen.

Geplaatst in ,  | geen reacties

Smalltalk Joint Conference 2008

Geplaatst door Remco van 't Veer vr, 27 jun 2008 07:00:00 GMT

Behoefte je horizon te verbreden? De veel besproken MagLev VM in actie zien? Meer weten over het legendarische Seaside framework?

Eind augustus organiseert de ESUG de 16th International Smalltalk Joint Conference 2008 bij het CWI in Amsterdam.

Lees verder...

Geplaatst in ,  | geen reacties

Amsterdam.rb nu met computers!

Geplaatst door Remco van 't Veer wo, 11 jun 2008 14:23:00 GMT

Na maanden van bier drinken in een donkere rumoerige kroeg wordt het tijd om eens iets met computer te gaan doen (en misschien een beetje Ruby) tijdens ons maandelijkse avondje.

Ward heeft aangegeven dat we met z’n allen welkom zijn op het kantoor van z’n werkgever:

TTY Amsterdam
Kerkstraat 342
1017 JA Amsterdam

Het gerucht is dat er bier koud staat! Dus.. Neem een laptop en mooie ideëen mee!

Geplaatst in ,  | geen reacties

Oudere artikelen: 1 2 3 4 ... 20