<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>

<channel>
	<title>RunRails-Blog</title>
	<atom:link href="http://blog.runrails.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.runrails.de</link>
	<description>Ruby on Rails, meine Projekte und Webanwendungen allgemein</description>
	<pubDate>Wed, 09 Jun 2010 14:31:49 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Note to self: Rails 2.3-Helper Object#try</title>
		<link>http://blog.runrails.de/2010/06/09/note-to-self-rails-23-helper-objecttry/</link>
		<comments>http://blog.runrails.de/2010/06/09/note-to-self-rails-23-helper-objecttry/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 14:30:09 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Tricks]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/2010/06/09/note-to-self-rails-23-helper-objecttry/</guid>
		<description><![CDATA[Oh je, beinahe 1 Jahr kein Update mehr auf diesem Blog. Aber das ist wohl eine andere Geschichte.
Hier ein kurzes Posting, hauptsächlich für mich selbt. Ich hatte diesen hilfreichen Helper schon einmal entdeckt, aber konnte mich dann nicht mehr an den Namen erinnern.
In Ruby ist es ja ein beliebtes Idiom mittels dem &#8220;&#124;&#124;&#8221;-Operator nil-Werte abzufangen, [...]]]></description>
			<content:encoded><![CDATA[<p>Oh je, beinahe 1 Jahr kein Update mehr auf diesem Blog. Aber das ist wohl eine andere Geschichte.</p>
<p>Hier ein kurzes Posting, hauptsächlich für mich selbt. Ich hatte diesen hilfreichen Helper schon einmal entdeckt, aber konnte mich dann nicht mehr an den Namen erinnern.</p>
<p>In Ruby ist es ja ein beliebtes Idiom mittels dem &#8220;||&#8221;-Operator nil-Werte abzufangen, z.B. @name || &#8220;default&#8221;.</p>
<p>Dieser Ausdruck liefernt entweder @name oder den String &#8220;default&#8221;, sollte @name == nil sein.</p>
<p>In Rails möchte man in Views häufig Model-Attribute ausgeben, welche ja als Methoden verfügbar sind. Kann das Model aber auch mal nil sein, kommt man mit dem ||-Idiom nicht weit. Rails 2.3 hat dazu Object#try als Monkey-Patch eingeführt:<br />
<code><br />
@user.try(:name) || "(no name)"<br />
</code></p>
<p>hat den gleichen Effekt wie</p>
<p><code><br />
@user ? @user.name || "(no name)" : "(no name)"<br />
</code></p>
<p>Sehr praktisch!</p>
<p>(Related: <a href="http://ozmm.org/posts/try.html">http://ozmm.org/posts/try.html</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2010/06/09/note-to-self-rails-23-helper-objecttry/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lösung für &#8220;undefined method &#8216;require_gem&#8217; for main:Object (NoMethodError)&#8221;</title>
		<link>http://blog.runrails.de/2009/06/17/losung-fur-undefined-method-require_gem-for-mainobject-nomethoderror/</link>
		<comments>http://blog.runrails.de/2009/06/17/losung-fur-undefined-method-require_gem-for-mainobject-nomethoderror/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 14:03:03 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[fix]]></category>

		<category><![CDATA[rake]]></category>

		<category><![CDATA[rubygems]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=61</guid>
		<description><![CDATA[Auf meinem Server streikte rake. Ich bin mir nicht sicher, ob das vielleicht immer schon war und ich es nur nicht verwendet habe (benutze eigentlich Capistrano für alle Aufgaben). Ich möchte die Lösung jedenfalls nicht hinter dem Berg halten und nehme es zum Anlass auf diesem verstaubten Blog mal wieder einen Beitrag zu veröffentlichen.
Der Aufruf [...]]]></description>
			<content:encoded><![CDATA[<p>Auf meinem Server streikte rake. Ich bin mir nicht sicher, ob das vielleicht immer schon war und ich es nur nicht verwendet habe (benutze eigentlich Capistrano für alle Aufgaben). Ich möchte die Lösung jedenfalls nicht hinter dem Berg halten und nehme es zum Anlass auf diesem verstaubten Blog mal wieder einen Beitrag zu veröffentlichen.</p>
<p>Der Aufruf von rake wurde immer mit</p>
<pre>/var/lib/gems/1.8/bin/rake:17: undefined method `require_gem' for main:Object (NoMethodError)</pre>
<p>quittiert. Nach kurzer Suche fand ich <a href="http://nickdenardis.com/2009/02/14/fixing-undefined-method-require_gem-for-mainobject-nomethoderror/">die Lösung für ein ähnliches Problem</a>. Anstelle von rails nimmt man sich hier einfach rake vor (auf meinem Debian-Server unter /var/lib/gems/1.8/bin/rake zu finden) und tauscht dort in Zeile 17 &#8220;gem_require&#8221; gegen &#8220;gem&#8221; aus.</p>
<p>Das funktioniert&#8230; was allerdings die eigentliche Ursache für das Problem ist, bleibt unklar. Wer einen Fix kennt, ohne am rake-Quelltext rumzupfuschen, ist willkommen zu kommentieren!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2009/06/17/losung-fur-undefined-method-require_gem-for-mainobject-nomethoderror/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ajax-Push mit &#8220;Apuq&#8221;: Mein Vortrag auf dem Barcamp Ruhr 2</title>
		<link>http://blog.runrails.de/2009/03/29/ajax-push-mit-apuq-mein-vortrag-auf-dem-barcamp-ruhr-2/</link>
		<comments>http://blog.runrails.de/2009/03/29/ajax-push-mit-apuq-mein-vortrag-auf-dem-barcamp-ruhr-2/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 23:00:37 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[non-rails]]></category>

		<category><![CDATA[ajax push]]></category>

		<category><![CDATA[apuq]]></category>

		<category><![CDATA[bcruhr2]]></category>

		<category><![CDATA[bosh]]></category>

		<category><![CDATA[jabber]]></category>

		<category><![CDATA[thrift]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=55</guid>
		<description><![CDATA[Heute habe ich auf dem Barcamp Ruhr 2 meinen ersten Vortrag gehalten. Es ging um eine Ajax-Push-Lösung (ich habe es Apuq genannt- Ajax PUsh Queue). Apuq ist ein Ruby-Server der eine Schnittstelle zum Browser und zur Webanwendung bereit stellt und Ajax-Requests des Browsers entgegennimmt.
Ich werde dazu später nochmal die Folien online stellen (und vielleicht die [...]]]></description>
			<content:encoded><![CDATA[<p>Heute habe ich auf dem Barcamp Ruhr 2 meinen ersten Vortrag gehalten. Es ging um eine Ajax-Push-Lösung (ich habe es Apuq genannt- Ajax PUsh Queue). Apuq ist ein Ruby-Server der eine Schnittstelle zum Browser und zur Webanwendung bereit stellt und Ajax-Requests des Browsers entgegennimmt.</p>
<p>Ich werde dazu später nochmal die Folien online stellen (und vielleicht die Demo)- Sinn der Sache ist der, dem Browser mit minimaler Verzögerung (&lt; 1s) Nachrichten schicken zu können, die dort per Javascript verarbeitet werden (z.B. für einen Chat).</p>
<p>Ich schreibe diesen Artikel eher als Anlaufstelle für die Zuhörer. Ich habe ja viel Feedback über ähnliche und andere Lösungen für das Ajax-Push-Problem bekommen (Dank an <a href="http://www.twitter.com/captainhagbard">@captainhagbard</a>, <a href="http://twitter.com/sippndipp">@sippndipp</a> u.a. die ich nicht mehr tracken konnte [korrigiert mich, wenn die Namen falsch waren]) Ich werde weiter an &#8220;Apuq&#8221; arbeiten (da ich es auch beruflich benötige). Am vielversprechendsten schien mir da der Hinweis von <a href="http://twitter.com/moeffju">@moeffju</a>, eine webbasierte Jabber-Lösung einzusetzen. Mehr als die entsprechenden Keywords notieren konnte ich aber in der Richtung noch nicht.</p>
<p>Wenn ihr euch für die weitere Entwicklung des Projekts interessiert dann verfolgt doch einfach die Kommentare zu diesem Artikel. Ich werde dort Updates posten, wenn es Neuigkeiten zur Entwicklung gibt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2009/03/29/ajax-push-mit-apuq-mein-vortrag-auf-dem-barcamp-ruhr-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RubyGems: &#8211;no-ri und &#8211;no-rdoc als Vorgabe</title>
		<link>http://blog.runrails.de/2009/03/18/rubygems-no-ri-und-no-rdoc-als-vorgabe/</link>
		<comments>http://blog.runrails.de/2009/03/18/rubygems-no-ri-und-no-rdoc-als-vorgabe/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 08:09:31 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[Tricks]]></category>

		<category><![CDATA[default]]></category>

		<category><![CDATA[rdoc]]></category>

		<category><![CDATA[ri]]></category>

		<category><![CDATA[rubygems]]></category>

		<category><![CDATA[vorgabe]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=49</guid>
		<description><![CDATA[Beim Installieren neuer Gems erstellt RubyGems automatisch RDoc und Ri-Dateien. RDoc erzeugt eine Dokumentation aus den im Quelltext enthaltenen Kommentaren über Klassen- und Methodensignaturen.
Ob das in Zeiten von Flatrates und Google sinnvoll ist, muss jeder selbst entscheiden. Vorteilhaft ist der schnellere Zugriff (unter Ubuntu befinden sich die Dateien in /usr/lib/ruby/gems/1.8/doc), nachteilig das (einmalige) lange Parsing [...]]]></description>
			<content:encoded><![CDATA[<p>Beim <strong>Installieren neuer Gems</strong> erstellt RubyGems automatisch RDoc und Ri-Dateien. <a href="http://en.wikipedia.org/wiki/RDoc">RDoc</a> erzeugt eine Dokumentation aus den im Quelltext enthaltenen Kommentaren über Klassen- und Methodensignaturen.</p>
<p>Ob das in Zeiten von Flatrates und Google sinnvoll ist, muss jeder selbst entscheiden. Vorteilhaft ist der schnellere Zugriff (unter Ubuntu befinden sich die Dateien in <a href="file:///usr/lib/ruby/gems/1.8/doc">/usr/lib/ruby/gems/1.8/doc</a>), nachteilig das (einmalige) lange Parsing bei der Installation.</p>
<h3>RDoc-Erzeugung ausschalten</h3>
<p>Die Erzeugung der lokalen Dokumentation kann mit den zusätzlichen Paramtern &#8211;no-ri und &#8211;no-rdoc für den gem-Befehl unterbunden werden. Häufig begegne ich diesen Parametern auch in Installations-Anleitungen für Gems. Daraus schließe ich mal, das ich nicht der einzige bin, den die Standardeinstellung nicht zufriedenstellt, schließlich beansprucht die RDoc-Erzeugung oft 95% der gesamten Installationszeit.</p>
<p>Lästig also, wenn man &#8211;no-rdoc und &#8211;no-ri mal wieder vergisst, wenn man gerade <strong>das Rails-Framework updaten</strong> möchte. Ebenso lästig, dass man &#8211;no-rdoc und &#8211;no-ri überhaupt eintippen muss!</p>
<h3>Keine RDoc-Erzeugung als Standard setzen</h3>
<p>Es gibt jedoch Abhilfe: gem liest Parameter automatisch aus der Datei $HOME/.gemrc ein</p>
<p>legt man also die Datei .gemrc in seinem Heimatverzeichnis an, und fügt dort die Zeile</p>
<p>gem: &#8211;no-ri &#8211;no-rdoc</p>
<p>hinzu, werden diese beiden Parameter jeweils automatisch benutzt. Selbst wer die die lokale Dokumentation auf seinem Entwicklungsrechner haben möchte, sollte diese Datei zumindest auf seinem Server anlegen.</p>
<p>Diese Information habe ich in der <a href="http://www.rubygems.org/read/chapter/11">RubyGems-Dokumentation</a> gefunden, wo noch mehr Optionen aufgeführt sind.</p>
<h3>Bonus-Tipp:</h3>
<p><a href="http://apidock.com/rails">APIdoc.com ist eine aufgebohrte Alternative</a> zur <a href="http://api.rubyonrails.org">offiziellen Dokumentation</a> von Rails. APIdoc.com stellt nicht nur einfachen Zugriff auf <strong>ältere Versionen</strong> her sondern ermöglicht auch Kommentare (wie z.B. in der <strong>PHP-Doku</strong>). Neben Rails sind ist dort auch die Dokumentation für Ruby selbst und RSpec zu finden.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2009/03/18/rubygems-no-ri-und-no-rdoc-als-vorgabe/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mehr Seiten im Google-Index durch schnellere Antwortzeiten</title>
		<link>http://blog.runrails.de/2009/03/11/mehr-seiten-im-google-index/</link>
		<comments>http://blog.runrails.de/2009/03/11/mehr-seiten-im-google-index/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 08:21:21 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[non-rails]]></category>

		<category><![CDATA[antwortzeit]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[seo]]></category>

		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=42</guid>
		<description><![CDATA[PJ Hyett von GitHub hat in seinem Blog eine Einsicht offenbart, die äußerst SEO-Relevant ist:
Sinkt die Antwortzeit des Webservers, crawlt GoogleBot mehr Seiten. 
Diese Entdeckung machte PJ nachdem er am Caching der Seite gebastelt hatte und damit die Ladezeiten erheblich reduzieren konnte. Er veröffentlicht auch gleich einen Screenshot aus den Google Webmaster Tools- dort ist [...]]]></description>
			<content:encoded><![CDATA[<p><span class="fn"><a href="http://twitter.com/pjhyett">PJ Hyett</a> von <a href="http://github.com/">GitHub</a> <a href="http://github.com/blog/368-keeping-googlebot-happy">hat in seinem Blog eine Einsicht offenbart</a>, die äußerst<strong> SEO-Relevant</strong> ist:</span></p>
<p><span class="fn">Sinkt die <strong>Antwortzeit des Webservers</strong>, <strong>crawlt</strong> <strong>GoogleBot</strong> <strong>mehr Seiten</strong>. </span></p>
<p><span class="fn">Diese Entdeckung machte PJ nachdem er am <strong>Caching</strong> der Seite gebastelt hatte und damit die Ladezeiten erheblich reduzieren konnte. Er veröffentlicht auch gleich einen Screenshot aus den <strong>Google Webmaster Tools</strong>- dort ist deutlich zu erkennen, dass mit gleichzeitigem Sinken der Antwortzeit (rote Linie) die Anzahl der gecrawlten Seiten (blau) ansteigt.</span></p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-41" title="githubcrawling" src="http://blog.runrails.de/wp-content/uploads/2009/03/githubcrawling.jpg" alt="githubcrawling" width="588" height="351" /></p>
<p style="text-align: left;"><span class="fn">Nunja, GoogleBot wird wohl kaum eine single threaded Anwendung sein die auf die Antwort des Webservers warten muss und somit die <strong>Anzahl der gecrawlten Seiten</strong> proportional zur Antwortzeit sinkt. Vielleicht ist dieser Mechanismus auch ganz selbstlos und soll verhindern, dass der Crawler zuviel Last auf dem Webserver erzeugt?</span></p>
<p><span class="fn">Wie dem auch sei, es ist ein weiterer guter Grund in einer ruhigen Minute die Antwortzeiten von <a href="http://www.spekunauten.de">Spekunauten.de</a> ein bisschen aufzupeppen.<br />
</span></p>
<p>P.S.: Ja, ich habe in diesem Posting wahllos Keywords markiert um zu sehen was Google damit anstellt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2009/03/11/mehr-seiten-im-google-index/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Application-Template mit Benutzerregistrierung, L18n, Basis-CSS uvm.</title>
		<link>http://blog.runrails.de/2009/03/08/application-template-mit-benutzerregistrierung-l18n-basis-css-uvm/</link>
		<comments>http://blog.runrails.de/2009/03/08/application-template-mit-benutzerregistrierung-l18n-basis-css-uvm/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 16:08:05 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<category><![CDATA[application template]]></category>

		<category><![CDATA[blueprint]]></category>

		<category><![CDATA[jquery]]></category>

		<category><![CDATA[l18n]]></category>

		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=39</guid>
		<description><![CDATA[Alexander Lang hat auf seinem Blog eine praktische Application Template veröffentlicht. Eine Application Template ist ein neues Feature in Rails 2.3, das - wie der Name schon sagt - ein paar Routineaufgaben vorwegnimmt, die beim Anlegen einer neuen Rails-Anwendung anfallen.
Die Template von Alex erzeugt eine Rails-Anwendung mit Benutzerregistrierung/Login, deutscher Übersetzung für ActiveRecord-Meldungen, Capistrano-Deployment, jQuery als [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/langalex">Alexander Lang</a> hat auf seinem Blog eine <a href="http://upstream-berlin.com/2009/03/06/the-upstream-rails-application-template/">praktische Application Template</a> veröffentlicht. Eine Application Template ist ein <a href="http://weblog.rubyonrails.org/2009/2/1/rails-2-3-0-rc1-templates-engines-rack-metal-much-more">neues Feature in Rails 2.3</a>, das - wie der Name schon sagt - ein paar Routineaufgaben vorwegnimmt, die beim Anlegen einer neuen Rails-Anwendung anfallen.</p>
<p>Die Template von Alex erzeugt eine Rails-Anwendung mit Benutzerregistrierung/Login, deutscher Übersetzung für ActiveRecord-Meldungen, Capistrano-Deployment, jQuery als Prototype-Ersatz, RSpec als Test-Framwork und ein paar weiteren Dingen.</p>
<p>Am interessantesten fand ich das <a href="http://www.blueprintcss.org/">CSS-Framwork Blueprint</a> und die Benutzerregistrierung über Authlogic. Von beiden Projekten habe ich in der Template zum ersten mal gehört.</p>
<p>Mein erster Kontakt mit CSS-Frameworks war auf dem Barcamp Berlin, wo <a href="http://www.yaml.de/de/home.html">Dirk Jesse einen Vortrag über YAML</a> hielt. YAML selbst hat mich aber wegen seiner Fülle an Dateien und Ordnern immer abgeschreckt. Blueprint ist dort wesentlich sparsamer und kommt nebenbei noch mit einem in Ruby geschriebenen CSS-Kompressionsskript daher.</p>
<p><a href="http://authlogic.rubyforge.org/">Authlogic</a> wird als Plugin zur Benutzerverwaltung eingesetzt und tritt in die Fußstapfen von <a href="http://agilewebdevelopment.com/plugins/restful_authentication">restful_authentication</a>. Ich war das letzte Jahr eigentlich durchgängig mit dem Spekunauten-Projekt beschäftigt, wo restful_authentication verwendet wird. Daher habe ich mich natürlich auch nicht nach aktuelleren Lösungen umgeschaut und Authlogic ist an mir vorübergegangen, werde es mir deshalb auf jedenfall anschauen.</p>
<p>Mit jQuery, RSpec und den anderen Goodies habe ich selbst noch keine praktischen Erfahrungen gesammelt und kann dazu wenig sagen.</p>
<p>Was mir noch fehlt ist das ausgezeichnete <a href="http://agilewebdevelopment.com/plugins/exception_notifier">exception_notification-Plugin</a> und Vorbereitung für ein SVN-Repository (Alex verwendet Git). Dazu werde ich dann wohl selbst eine Template anlegen, wozu Alex seine Leser auch ausdrücklich auffordert.</p>
<p>Achso, die Template gibt es <a href="p://gist.github.com/75038">hier zum Download</a> (wer kein Rails 2.3 verwendet kann sich trotzdem den Quelltext anschauen und findet dort beispielsweise das XHTML-Layout für Blueprint).</p>
<p>Benutzen kann man das ganze einfach mit</p>
<p><code>rails my_new_app -m http://gist.github.com/75038</code>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2009/03/08/application-template-mit-benutzerregistrierung-l18n-basis-css-uvm/feed/</wfw:commentRss>
		</item>
		<item>
		<title>View-Helper im Controller benutzen</title>
		<link>http://blog.runrails.de/2008/11/17/view-helper-im-controller-benutzen/</link>
		<comments>http://blog.runrails.de/2008/11/17/view-helper-im-controller-benutzen/#comments</comments>
		<pubDate>Mon, 17 Nov 2008 11:28:56 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Tricks]]></category>

		<category><![CDATA[controller]]></category>

		<category><![CDATA[view]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=37</guid>
		<description><![CDATA[Ich habe die letzten Tage viel Zeit mit einem AJAX-Chat für die Spekunauten verbracht. Dort habe ich mich von .RJS-Templates verabschiedet und erzeuge den meisten View-Code direkt im Controller mit render_to_string.
Für Javascript-Funktionen benötigte ich aber auch oft javascript_escape (bei der Parameterübergabe) und andere Helper, die nur im View zur Verfügung stehen.
Es gibt verschiedene Lösungen, dass [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe die letzten Tage viel Zeit mit einem <strong>AJAX-Chat</strong> für die Spekunauten verbracht. Dort habe ich mich von .RJS-Templates verabschiedet und erzeuge den meisten<strong> View</strong>-Code direkt im <strong>Controller</strong> mit render_to_string.</p>
<p>Für Javascript-Funktionen benötigte ich aber auch oft <strong>javascript_escape</strong> (bei der Parameterübergabe) und andere Helper, die nur im View zur Verfügung stehen.</p>
<p>Es gibt verschiedene Lösungen, dass zu erreichen. Die unkomplizierteste die ich gefunden habe lautet @template.</p>
<p>Mit <strong>@template</strong> (ich habe dieses Feature aus einem Kommentar von 2005 gefunden, es scheint also noch aus 1.x-Tagen zu sein) kann man alle Funktionen innerhalb des Views aufrufen, also z.B. @template.escape_javascript!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2008/11/17/view-helper-im-controller-benutzen/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Barcamp Berlin 3 / Facebook und Rails</title>
		<link>http://blog.runrails.de/2008/09/01/barcamp-berlin-3-facebook-und-rails/</link>
		<comments>http://blog.runrails.de/2008/09/01/barcamp-berlin-3-facebook-und-rails/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 16:48:04 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=35</guid>
		<description><![CDATA[Ende Oktober bin ich auf meinem ersten Barcamp! Habe es geschafft mich dort heute Mittag in allen Veranstaltungen einzutragen, obwohl der Server total überlastet war.
Als Barcamp-Neuling ist man ja angehalten, etwas dazu beizutragen. Ich habe mir überlegt einen Vortrag über Facebook-Anwendungen mit Ruby on Rails zu halten. Ich glaube das Thema ist gerade in Deutschland [...]]]></description>
			<content:encoded><![CDATA[<p>Ende Oktober bin ich auf meinem ersten <a href="http://barcampberlin3.mixxt.org/">Barcamp</a>! Habe es geschafft mich dort heute Mittag in allen Veranstaltungen einzutragen, obwohl der Server total überlastet war.</p>
<p>Als Barcamp-Neuling ist man ja angehalten, etwas dazu beizutragen. Ich habe mir überlegt einen <a href="http://barcampberlin3.mixxt.org/networks/wiki/index.Topic_Suggestions">Vortrag über Facebook-Anwendungen mit Ruby on Rails</a> zu halten. Ich glaube das Thema ist gerade in Deutschland recht interessant, wo Facebook ja noch nicht so lange expandiert. Neben einem <a href="http://www.pragprog.com/titles/mmfacer/developing-facebook-platform-applications-with-rails">sehr empfehlenswerten Buch</a>, welches ich dazu gelesen habe, (momentan nur als PDF erhältlich) ist seit einigen Tagen auch <a href="http://www.facebook.com/apps/application.php?id=22184203762">meine erste Facebook-Anwendung</a> online.</p>
<p>Da bis zum Barcamp-Termin noch ein bisschen Zeit verstreicht, kann ich vielleicht auch berichten, was für Marketing-Erfolge man sich in Deutschland davon versprechen kann. Facebook liegt zwar bei den Nutzerzahlen stark hinter StudiVZ, wer-kennt-wen und anderen Netzwerken, nur was ist die Alternative? Keine der anderen Plattformen* biete eine API für eigene Anwendungen an.</p>
<p>____</p>
<p>* Anfang des Jahres <a href="http://www.golem.de/0801/57279.html">hat StudiVZ eine eigene API angekündigt</a>. Bisher gab es zu dem Thema aber noch keine Neuigkeiten.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2008/09/01/barcamp-berlin-3-facebook-und-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Veränderte URLs Google mitteilen: Redirect mit 301</title>
		<link>http://blog.runrails.de/2008/08/20/veranderte-urls-google-mitteilen-redirect-mit-301/</link>
		<comments>http://blog.runrails.de/2008/08/20/veranderte-urls-google-mitteilen-redirect-mit-301/#comments</comments>
		<pubDate>Wed, 20 Aug 2008 12:50:08 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Tricks]]></category>

		<category><![CDATA[redirect]]></category>

		<category><![CDATA[redirect_to]]></category>

		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=27</guid>
		<description><![CDATA[Angenommen man hat schon eine Menge Seiten im Google-Index. Nun möchte man das Schema der URLs dieser Seiten verändern um es beispielsweise ein bisschen SEO zu betreiben.
Die naheliegendste Vorgehensweise dabei wäre, eine neue Action im Controller zu schreiben und von dort aus auf die neue URL umzuleiten:

def some_action_old
redirect_to some_action_url(params[:id])
end
Oder so ähnlich. Für den Besucher sieht [...]]]></description>
			<content:encoded><![CDATA[<p>Angenommen man hat schon eine Menge Seiten im Google-Index. Nun möchte man das Schema der URLs dieser Seiten verändern um es beispielsweise ein bisschen SEO zu betreiben.</p>
<p>Die naheliegendste Vorgehensweise dabei wäre, eine neue Action im Controller zu schreiben und von dort aus auf die neue URL umzuleiten:</p>
<p><code><br />
def some_action_old<br />
redirect_to some_action_url(params[:id])<br />
end</code></p>
<p>Oder so ähnlich. Für den Besucher sieht das prima aus, denn er sieht nur die neue URL im Browser. Googlebot bekommt beim nächsten Crawl ebenfalls die Weiterleitung mitgeteilt, man könnte daher annehmen er würde ab dann die neue URL speichern. Das wird aber nicht passieren, warum?</p>
<p>redirect_to liefert den Status-Code 302 (Moved temporarily) zurück. Wie der Name schon sagt, gilt diese Umleitung nur vorübergehenderweise- nur für diesen speziellen Seitenaufruf. Im normalen Gebrauch macht das auch Sinn: Angenommen man klickt auf einen Logout-Link, so wird man anschließend zur Startseite umgeleitet. Das bedeutet jedoch nicht, dass ab jetzt die URL der Startseite die gleiche Bedeutung wie die Logout-URL hat.</p>
<p>Für diesen Fall gibt es den Status-Code 301 (Moved permanently). Um diesen zurückzugeben, muss man direkt in den Header zugreifen. (Ich fand <a href="http://snippets.dzone.com/posts/show/4779">diesen Trick über Snippets.dzone.com</a>).</p>
<p><code><br />
def some_action_old<br />
redirect_to post_url(@post), :status=&gt;301<br />
end</code></p>
<p>Jetzt wird der Googlebot nach und nach die alten URLs gegen die neuen austauschen. Software zum auswerten der Serverlogs (ich verwende<a href="http://awstats.sourceforge.net/"> AWStats</a>) zeigt eine Tabelle mit den häufigsten HTTP-Statuscodes an. Dort kann man durch die Zahl der 301-Redirects abschätzen, wie oft dieser Aufruf tatsächlich genutzt wurde.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2008/08/20/veranderte-urls-google-mitteilen-redirect-mit-301/feed/</wfw:commentRss>
		</item>
		<item>
		<title>mysql_stmt_row_tell-Fehler mit Instant-Rails</title>
		<link>http://blog.runrails.de/2008/08/14/mysql_stmt_row_tell-fehler-mit-instant-rails/</link>
		<comments>http://blog.runrails.de/2008/08/14/mysql_stmt_row_tell-fehler-mit-instant-rails/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 20:49:08 +0000</pubDate>
		<dc:creator>Malte</dc:creator>
		
		<category><![CDATA[Rails]]></category>

		<category><![CDATA[Tricks]]></category>

		<category><![CDATA[fix]]></category>

		<category><![CDATA[instantrails]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[rails21]]></category>

		<guid isPermaLink="false">http://blog.runrails.de/?p=28</guid>
		<description><![CDATA[Bei einer InstantRails-Installation habe ich heute auf Rails 2.1 geupgraded (es gibt noch keine InstantRails-Version mit vorinstalliertem Rails 2.1).
Beim Start einer Rails-Anwendung und dem ersten Zugriff auf http://localhost:3000 erhielt ich die Fehlermeldung &#8216;Der Prozedureinsprungpunkt &#8220;mysql_stmt_row_tell&#8221; wurde in der DLL &#8220;LIBMYSQL.dll&#8221; nicht gefunden&#8217;
Nach kurzem Googlen fand ich die Lösung hier:
Einfach im InstantRails-Verzeichnis die Datei libmysql.dll von [...]]]></description>
			<content:encoded><![CDATA[<p>Bei einer InstantRails-Installation habe ich heute auf Rails 2.1 geupgraded (es gibt noch keine InstantRails-Version mit vorinstalliertem Rails 2.1).</p>
<p>Beim Start einer Rails-Anwendung und dem ersten Zugriff auf http://localhost:3000 erhielt ich die Fehlermeldung <strong>&#8216;Der Prozedureinsprungpunkt &#8220;mysql_stmt_row_tell&#8221; wurde in der DLL &#8220;LIBMYSQL.dll&#8221; nicht gefunden&#8217;</strong></p>
<p>Nach kurzem Googlen fand ich <a href="http://brianbruijn.wordpress.com/2008/05/12/mysql_stmt_row_tell-and-libmysqldll-error-for-instant-rails/">die Lösung hier</a>:</p>
<p>Einfach im InstantRails-Verzeichnis die Datei libmysql.dll von &lt;InstantRails&gt;\mysql\bin nach &lt;InstantRails&gt;\ruby\bin kopieren und es geht. Ich weiss nicht ob es speziell mit Rails 2.1 zusammenhängt, aber InstantRails 2 &#8220;out-of-the-box&#8221; hatte ich dieses Problem nicht.</p>
<p>Ach übrigens, das Upgrade auf Rails 2.1 wird durchgeführt in dem man auf der InstantRails-Konsole &#8220;gem rails update&#8221; eingibt.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.runrails.de/2008/08/14/mysql_stmt_row_tell-fehler-mit-instant-rails/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>

