Breaking out of Rails MVC with Mongrel handlers

Geplaatst door Remco van 't Veer za, 23 feb 2008 11:21:00 GMT

Module View Controller is a nice concept but sometimes you need te be very creative to fit a problem in that mold. In such cases a more lowlevel approach can be much more effective. The case in ran into recently involves streaming audio from a Rails application. I wanted to recode and stream MP3 files over HTTP. There’s not much MVC about that, there’s nothing to view!

A memory refresher; what is Mongrel? Mongrel is a web server (mostly) written in Ruby. Ruby version 1.8 comes with a web server named WEBrick but its performance is very limited and not useable for public production web applications. Mongrel, on the other hand, is more like a hybrid between a greyhound and a poodle, fast and tough. The little beast is multi-threaded and can easily handle hundreds of concurrent requests.

Lees verder...

Geplaatst in ,  | 1 reactie

Onze dagmethode #13: Object#mymethods

Geplaatst door Michiel de Mare do, 21 feb 2008 08:00:00 GMT

Ik heb altijd wel een irb of rails console openstaan, en ik ben dol op methods om te kijken wat een object allemaal kan, maar wat krijg je toch een ontiegelijke hoeveelheid troep terug, vooral in Rails.

Daarom dit:


class Object
  def mymethods
    (methods - Object.instance_methods).sort
  end
end

(1..2).methods.size # => 150
(1..2).mymethods.size # => 46

Geplaatst in , ,  | 2 reacties

2008.rubyenrails.nl

Geplaatst door Michiel de Mare wo, 20 feb 2008 11:12:00 GMT

On June 5th the third edition of the RubyEnRails conference will take place in Amsterdam. Last year, about a third of the sessions were in English. It’s not yet possible to register, but we’re looking for speakers.

If you’re interested in giving a presentation about a cool Rails or Ruby subject, let us know.

Some suggestions:
  • Ruby 1.9
  • Experiences with Rails deployment
  • Build a Facebook application in 45 minutes with Rails
  • Tools for Rails – IDEs, editors, debuggers, etc.

Use the rubyenrails2008(ape)rubyenrails.nl email-address to apply.

Geplaatst in , ,  | Tags  | geen reacties

2008.rubyenrails.nl

Geplaatst door Michiel de Mare wo, 20 feb 2008 11:04:00 GMT

Op 5 juni van dit jaar komt de derde editie van Ruby En Rails eraan! Net zoals vorig jaar vindt het plaats in Amsterdam. Inschrijven kun je je nog niet, maar we zijn wel op zoek naar sprekers.

Als je een leuk idee hebt voor een presentatie, laat ons het dan snel weten!

Enige suggesties:
  • Ruby 1.9
  • Ervaringen met Rails deployment in Nederland
  • Live een Facebook app bouwen met Rails
  • Tools voor Rails – IDE’s, editors, debuggers, etc.

Aanmelden als spreker gaat via het e-mailadres rubyenrails2008(ape)rubyenrails.nl. Vermeld s.v.p. welk onderwerp je wilt behandelen en hoeveel tijd je nodig hebt.

Geplaatst in ,  | Tags  | geen reacties

25 februari: amsterdam.rb

Geplaatst door Michiel de Mare di, 19 feb 2008 14:38:50 GMT

De laatste maandag van de maand komt eraan, dus vindt op 25 februari de tweede bijeenkomst van amsterdam.rb plaats! De vorige keer was een groot succes met een flinke opkomst. We houden het deze keer weer op dezelfde lokatie: de Bekeerde Suster aan de Nieuwmarkt, vanaf een uur of acht.

Voor vragen (of om te zien wie er vorige keer gekomen zijn) is er een Google Group ter coördinatie: amsterdam-rb

Tot maandag!

Geplaatst in , ,  | geen reacties

Rails App in één bestand

Geplaatst door Michiel de Mare zo, 17 feb 2008 21:54:12 GMT

Soms lijkt Rails een beetje topzwaar. Maar het is lang niet zo erg als het lijkt.

Geplaatst in  | geen reacties

Our Daily Method #6: AR.find(..).each

Geplaatst door Remco van 't Veer di, 12 feb 2008 08:00:00 GMT

AR.find(..).each

Working with ActiveRecord it often bothers me I need to write each after doing a find-all. I can give find a block but is just ignored without any warning.

So today no new method but the removal of a method!


class ActiveRecord::Base
  def self.find_with_block_sensitivity(*args)
    r = find_without_block_sensitivity(*args)
    [r].flatten.each {|v| yield v} if block_given?
    r
  end

  class << self
    alias_method :find_without_block_sensitivity, :find
    alias_method :find, :find_with_block_sensitivity
  end
end

Now, instead of:


Article.find(:all).each {|article| puts article.title}

we can write:


Article.find(:all) {|article| puts article.title}

Look ma! No each! Also works for single object results.

Geplaatst in , , ,  | geen reacties

Onze dagmethode #6: AR.find(..).each

Geplaatst door Remco van 't Veer di, 12 feb 2008 08:00:00 GMT

AR.find(..).each

Wat me vaak dwars zit als ik met ActiveRecord in de weer ben is dat ik na een find-all ook nog eens each moet schrijven. Sterker nog als ik each vergeet en er een block aanplak gebeurd daar helemaal niets mee, ook geen foutmelding of iets dergelijks.

Vandaag dus geen methode maar een methode minder!


class ActiveRecord::Base
  def self.find_with_block_sensitivity(*args)
    r = find_without_block_sensitivity(*args)
    [r].flatten.each {|v| yield v} if block_given?
    r
  end

  class << self
    alias_method :find_without_block_sensitivity, :find
    alias_method :find, :find_with_block_sensitivity
  end
end

Hiermee kunnen we ipv:


Article.find(:all).each {|article| puts article.title}

het volgende schrijven:


Article.find(:all) {|article| puts article.title}

Kijk mij! Zonder each! Werkt voor zowel enkele als meervoudige resultaten.

Geplaatst in , ,  | 2 reacties

28 januari: amsterdam.rb

Geplaatst door Michiel de Mare do, 17 jan 2008 14:34:00 GMT

Op maandag 28 januari vindt de eerste bijeenkomst van amsterdam.rb plaats! Amsterdam.rb moet een gezelschap worden van Rubyisten die elke laatste maandag van de maand ergens in Amsterdam samenkomen en onder het genot van een biertje de ontwikkelingen in Rubyland bespreken.

Laptops zijn ook welkom – wie weet komt er nog wat creatiefs uit voort ook!

Voorlopig gebruiken we een Google Group ter coördinatie: amsterdam-rb

De eerste ontmoeting vindt plaats in de Bekeerde Suster aan de Nieuwmarkt. Vanaf een uur of acht kunnen jullie ons daar aantreffen.

Wij hopen jullie snel te zien!

Geplaatst in  | 3 reacties

Rails MVC aan je laars lappen met Mongrel handlers

Geplaatst door Remco van 't Veer ma, 24 dec 2007 11:18:00 GMT

Module View Controller is mooi maar soms moet je heel creatief zijn om een oplossing in die mal te proppen. In dergelijke gevallen is een meer lowlevel aanpak veel doeltreffender. In het geval waar ik tegenaan gelopen ben, wil ik audio streams serveren vanuit een Rails applicatie. Om precies te zijn: ik wil MP3 bestanden automatisch omzetten naar een lager bitrate en deze over het netwerk sturen zodat er aan de andere kant naar geluisterd kan worden. Daar is weinig MVC aan, al is het alleen maar dat er niets te view-en valt!

Nog even in het kort, was is Mongrel? Mongrel is een webserver (grotendeels) geschreven in Ruby. Ruby versie 1.8 is standaard uitgerust met een web server genaamd WEBrick maar deze is niet snel en efficient genoeg voor openbare productie web applicaties. Mongrel daarentegen is een kruising tussen een windhond en een poedel, snel en niet stuk te krijgen. Het beestje is multi-threaded en kan daarmee honderden aanvragen tegenlijk afhandelen.

Lees verder...

Geplaatst in , ,  | 5 reacties

Oudere artikelen: 1 2 3 4 ... 9