Posts filed under 'Ruby'

Stemming mit ActsAsFerret

Stemming ist ein Verfahren, um – mit Hilfe von Algorithmen – den Wortstamm von Wörtern zu ermitteln. Dies wird z.B. bei Suchmaschinen angewendet, damit die Suche nicht an einem eingebenen Wort scheitert, dass zwar nicht in der Datenbank als solches zu finden ist, wohl aber dessen Wortstamm, z.B. Gitarren => Gitarre.

Ferret und ActsAsFerret bietet eine einfach zu konfigurierende Unterstützung für dieses Stemming:

Eine Datei

stemming_analyzer.rb

im lib/-Verzeichnis anlegen:

require 'rubygems'
require 'ferret'

class StemmingAnalyzer < Ferret::Analysis::Analyzer
  include Ferret::Analysis
  def initialize(stop_words = FULL_GERMAN_STOP_WORDS)
    @stop_words = stop_words
  end
  def token_stream(field, str)
    StemFilter.new(StopFilter.new(LowerCaseFilter.new(StandardTokenizer.new(str)),@stop_words), 'de')
  end
end

Im zu durchsuchenden Model dann folgendes:

acts_as_ferret :fields => {
  :bandname => {}, :firstName_if_public => {},
  :tag_list => {}, :comment_list => {}
}, :ferret => {
    :analyzer => StemmingAnalyzer.new, :remote => true}

Dabei ist darauf zu achten, dass, wenn ihr den DrB-Server verwenden wollt, :remote => true innerhalb des :ferret-Attributs sein muss. Bei uns war dieses ausserhalb, woraufhin bei einem Aufruf von XYZ.rebuild_index nur nil zurückgeliefert wurde und Stemming nicht funktionierte.

Über script/console kann dann schön getestet werden. Wenn man nebenbei noch die log/ferret_server.log anschaut, kann man sehen, dass jetzt automatisch Suchwörter wie „und“ in XYZ.find_by_contents(„Gitarren und Geigen“) entfernt werden. Ausserdem kann man sehen, dass z.B. „Geigen“ auf „Geig“ reduziert wird, womit sich dann auch Wörter wir Geige finden lassen.

1 comment Januar 17, 2008

Flex & RubyOnRails

Onlinemusicstar.de ist jetzt Ligx.de und dazu noch mit Flash/Flex Oberfläche. Nachdem wir uns bei der Umsetzung vorerst auf HTML+RoR beschränkt hatten, ist aus diesem Projekt jetzt eine Flex+RoR-Anwendung geworden. Dabei wird auf Server-Seite das RailsPlugin WebORB verwendet, mit dem im J2EE-Stil Webservices zur Verfügung gestellt und diese dann von Flex aufgerufen werden können.Durch die Möglichkeiten des ClassMappings haben wir ausserdem die Möglichkeit RubyObjekte zwischen Flex und RoR hin- und herzuschicken, anstatt POST-Variablen oder xml-Daten, was doch alles sehr vereinfacht. Ein Beispiel:

def updateUserData(user_object)
user_object.save
end
Diese Funktion speichert die persönlichen Daten eines Users ab. Das interessante daran ist, dass wir nicht etwas einen Block an Variablen erhalten (den wir dann über params[...] speichern müssten), sondern wir erhalten von der Flex-Seite ein User-Objekt, welches wir auch sofort speichern können und können genauso einfach Objekte (die über das Classmapping definiert wurden) zurückschicken.
Was dabei herauskommt sieht man auf www.ligx.de

1 comment Januar 11, 2008

First day at RailsConfEurope – BratwurstOnRails

Gestern war der erste Tag (inoffizielle) RailsConf-Tag: BratwurstOnRails. Die Berliner Rails-User-Group hatte einen fröhlichen Grillabend organisiert der wie das Foto zeigt auch gut besucht wurde.

bild003.jpg  bild005.jpg

Add comment September 17, 2007

RailConf 2007 in Berlin


RailsConf Europe 2007

Morgen nachmittag gehts los mit dem ICE zur RailsConfEurope in Berlin. Wirklich interessante Themen und Tutorials stehen an und natürlich BratwurstOnRails morgen abend ;-)

See you at RailsConf!

Add comment September 15, 2007

Rails Functionality Tests mit Goldberg

Nach dem ich mich jetzt so einige Zeit mit dem Testen von Railsapplikationen beschäftige, habe ich wieder etwas Interessantes herausgefunden.

Wie kann ich meine Goldberg-Tabelleninhalte möglichst einfach in meine Testdatenbank laden?

Eigentlich ganz einfach:

Im Rails_Root

rake goldberg:dump_bootstrap

aufrufen, damit werden die Tabelleninhalte von Goldberg in das Verzeichnis vendor/plugins/goldberg/db gedumpt und zwar im yml-Format.

In den Functionality/Unit-Tests z.B. in der setup Methode einfach den Befehl

GoldbergMigration.load_bootstrap

aufrufen und die Test-Tabellen werden mit den aktuellen Goldbergdaten gefüllt.

Add comment August 30, 2007

Rake-Task der Action eines Controllers aufruft und ActiveRecord-basierte Sessions

Heute hatte ich ein Problem als ich auf ActiveRecord-basierte Sessions umgestiegen bin. Danach funktionierten rake db:migrate und sämtliche anderen Rake-tasks nicht mehr, es kam immer die Fehlermeldung:

rake aborted
uninitialized constant CGI::Sessions::ActiveRecordStore … usw

Den Rake-Task mit dem Action aufruf habe ich von meinem Kollegen Mr. Matt ;-) http://matthall.wordpress.com/2006/12/06/how-to-execute-a-rails-controller-action-via-cron/

Um das Problem zu lösen müssen, die beiden Zeilen

require(‘action_controller’) und
require(‘action_controller/integration’)

in die environment.rb geschrieben werden. Danach lief alles wieder, puh, hat mich 2 Stunden gekostet dieses Problem.

Add comment Juni 26, 2007

Der Gleisarbeiter ist jetzt Angestellter

logo_indiginox.png

Ab dem 1. Juli werde ich bei der Firma Indiginox GmbH als Gleisarbeiter mit RubyOnRails weiterarbeiten.

Die Firma Indiginox ist ein Beratungs- und Dienstleistungsunternehmen für OpenSource – Softwarelösungen. Sie bietet Ihren Kunden Unterstützung z.B. bei der Beurteilung von OpenSource und Web2.0, sowie bei der Projektumsetzung auf Basis dieser Technologien.

In letzter Zeit kristallisiert sich besonders RubyOnRails als Framework für anspruchsvolle Webapplikationen heraus, und so kam es, dass die Indiginox GmbH eine Stellenanzeige für einen RoR-Softwaredeveloper aufsetzte, auf die ich mich bewarb. Unter Tausenden, wenn nicht sogar Zehntausenden von Bewerbern, wurde ich schließlich ausgewählt ;-) Wobei mein Vorteil mit Sicherheit war, dass ich so witzig bin! Und vielleicht noch ein kleines bischen, dass ich bereits mit der Indiginox GmbH als Freelancer zusammen gearbeitet habe.

Anspruchsvolle und interessante Projekte, über die ich zu gegebener Zeit berichten werde, sind schon in Aussicht und die Zusammenarbeit mit Ashley und Matthew läuft gut und wir haben immer viel Spaß :-) Mal schauen wie es weitergeht mit mir als Gleisarbeiter.

Ciao! Und alles Gute an euch da draussen!

1 comment Juni 16, 2007

RubyonRails/Goldberg Rollensystem

Gestern hatte ich folgendes Szenario in einem aktuellen Projekt zu lösen:
Das Rails-Framework Goldberg bietet eine einfache Möglichkeit schnell Webseiten mit Rollensystem/Benutzerverwaltung/etc. aufzubauen. Auch Menüs die von den jeweiligen Rechten eines Users abhängen, können einfach generiert werden. Es gibt vordefiniert 3 Benutzergruppen: Public, Member und Admin.

Einer unserer Menüpunkte hieß „Anmelden“, also ein Login und Registrierungsbereich. Das Problem war, da Member und Admin von Public abgeleitet wurden: Auch ein angemeldeter User der eingeloggt ist und damit Member-Rechte hatte sah diesen Menüpunkt „Anmelden“.

Um dieses Problem zu lösen, musste die Rollenstruktur von Goldberg durchbrochen werden. Zuerst habe ich im Goldberg-Setup eine weitere „Permission“ hinzugefügt: „Public ONLY pages“. Nur „Public“-User (also anonyme) haben das Recht solche Seiten zu sehen. Die Seite „Anmelden“ erhält dann die Einstellung „Public ONLY page“. Jetzt ist aber das Problem nicht gelöst, da Member direkt von „Public“ abgeleitet ist und somit auch das Recht hat „Public ONLY pages“ zu sehen. Dazu müssen wir die Ableitung durchbrechen. In der Datenbank findet sich eine Tabelle „goldberg_roles“. In dieser muss der parent_id-Wert von „Member“ auf NULL gesetzt werden. Damit wird Member nicht mehr von Public abgeleitet. Um jetzt aber dem Member nicht alle Public-Rechte zu verbieten, müssen wir im Goldberg-Setup die Rechte „Public pages – execute“ und „Public pages – view“ von Hand zu den Rechten der Gruppe „Member“ hinzufügen.

Und das war’s,
hat am Anfang bei mir etwas länger gedauert, aber so sollte der Ablauf eigentlich klar sein. Bei Fragen: kommentieren.

Ciao!

Add comment Mai 3, 2007

RadRails und der Fehler: No such file to load — rubygems

Hallo,

nachdem ich heute mal RadRails auf meinem MacBook installiert habe und versucht habe damit zu arbeiten, musste ich leider feststellen, dass kaum etwas funktionierte. Der Web-Server konnte nicht aus RadRails gestartet werden und auch Controller/Models/… erstellen funktionierte nicht.

Die Lösung liegt in den Einstellungen von RadRails. Hier müsst ihr unter Window -> Preferences -> Ruby -> Interpreter einen neuen Interpreter namens „Ruby“ anlegen und den Pfad auf den Interpreter setzen. Bei mir war das /usr/local/bin/ruby.
Unter Window -> Preferences -> Rails -> Configuration sollte man zudem noch die Pfade zu Rails und Rake eintragen, mit Linux/Mac im Terminal zu finden mit which rails und which rake.

Ich hoffe das hat euch weitergeholfen.

Schönen Abend noch!
Happy coding!

Add comment April 24, 2007


RSS Der Gleisarbeiter Blog

 

November 2009
M D M D F S S
« Jan    
 1
2345678
9101112131415
16171819202122
23242526272829
30  

Kategoriewolke

Cocoa Ferret Flash Flex Goldberg Java Mac Private RadRails Rails Ruby Ruby/Rails Spiele Sun Test Testing Uncategorized

Neueste Artikel

Neueste Kommentare

ffaerber zu can’t find header files …
sam zu Stemming mit ActsAsFerret
humpaaa zu Flex & RubyOnRails
gleisarbeiter zu Ruby & Cocoa auf Mac …
schroedi zu Ruby & Cocoa auf Mac …

Blog Stats

Blogroll