Upgrade zu Snow Leopard [Update]

Seit letztem Freitag ist die neue OSX Version Snow Leopard verfügbar. Die Auslieferung hat begonnen, und Ruby und Rails Entwickler sollten sich mit der geänderten Version befassen, damit es keiner bösen Überraschungen gibt. Sowohl im Webblog auf rubyonrails.com als auch auf Github gibt es Einträge und Hilfen dazu.

Auf rubyonrails.com hat Matt Aimonetti eine Zusammenfassung der nötigen Schritte  veröffentlicht:

http://weblog.rubyonrails.org/2009/8/30/upgrading-to-snow-leopard

Einen ähnlichen Eintrag findet ihr auf Github:

http://gist.github.com/177368

Da beide Artikel sich mit dem gleichen Thema überschneiden sie sich an manchen Stellen. Dennoch findet man in beiden genug Informationen um für das Upgrade bewappnet zu sein.

UPDATE:

Wir haben einen weiteren Link für euch gefunden der sich mit dem Upgrade auf Snow Leopard beschäftigt: http://afreshcup.com/2009/09/02/migrating-to-snow-leopard-for-rails-development-a-definitive-guide/

Screencast: Model Versioning

Ryan Bates hat diese Woche einen weiteren Screencast veröffentlicht. In dieser Version behandelt er das Thema Model Versionierung. Für die Versionierung der Models setzt er das gem vistal_versions ein und zeigt wie es verwendet wird.

Downloadlinks:

Download (14.4 MB, 9:28)

Alternativer Download für iPod & Apple TV (10.4 MB, 9:28)

Weitere Resourcen zu diesem Screencast:

Verwendung in der Konsole

[bash]
sudo rake gems:install
script/generate vestal_versions_migration
script/generate migration version_existing_pages
rake db:migrate
[/bash]

Quellcode:

[ruby]
# config/environment.rb
config.gem ‚laserlemon-vestal_versions‘, :lib => ‚vestal_versions‘, :source => ‚http://gems.github.com‘

# models/page.rb
class Page < ActiveRecord::Base
versioned
end

# version_existing_pages migration
say_with_time "Setting initial version for pages" do
Page.find_each(&:touch)
end

# pages_controller.rb
def show
@page = Page.find(params[:id])
@page.revert_to(params[:version].to_i) if params[:version]
end

# script/console
p = Page.all
p.versions
p.revert_to(7.minutes.ago)
p.content
p.revert_to(:last)

[/ruby]

[xhtml]
<p>
<%= link_to "Edit", edit_page_path(@page) %>
| Version <%= @page.version %>
<% if @page.version > 1 %>
| <%= link_to "Previous version", :version => @page.version-1 %>
<% end %>
<% if params[:version] %>
| <%= link_to "Latest version", :version => nil %>
<% end %>
</p>
[/xhtml]

Die langsamsten Actions finden

Railsapplikationen sollen nicht gut aussehen sondern auch schnell arbeiten. Heute zeigen wir euch ein kleines Shellscript mit dem ihr eure Actions nach ihrer Ausführungsgeschwindigkeit sortieren könnt.

Dazu navigiert in das Hauptverzeichnis eurer Applikation und führt folgendes Kommando aus.
Windows-Benutzer können das Kommando in einer Cygwin-Umgebung ausführen.

[bash]
cat log/development.log | awk ‚/Completed/ { print "[" $3 "] – " $0 }‘ | sort -nr
[/bash]

Wenn ihr die Werte aus eurer produktiven Umgebung interessieren, braucht ihr nur das benutze log-File auszutauschen. Also „log/production.log“ anstatt von „log/development.log“.

Viel Spaß beim auswerten.

MySQL DB in UTF8 konvertieren

In der Regel sollte man das Encoding für seine Datenbanken auf UTF8 stellen um später keine bösen Überraschungen zu erleben. Falls beim Entwicklungstart diese Einstellung vergessen wurde oder wenn man sich später zu UTF8 „bekennt“ kann man folgendes Ruby-Script benutzen um die Datenbank zu konvertieren.

Ein Wort der Warnung: Wie immer sollte man IMMER ein Backup anlegen bevor man seine Daten in großem Stil verändert –> Ihr seid gewarnt!

Hier nun das Script:
Es ruft im Grunde die bekannten Shellscript-Befehle (iconv, mysqldump, etc.) auf um die Konvertierung durchzuführen.

[ruby wraplines=“true“]

class ConvertDbToUtf8

def self.up

db_name = ‚DATENBANK-NAME‘
db_user = ‚DATENBAK-BENUTZER‘
db_pass = ‚DATENBANK-PASSWORT‘
db_host = ‚DATENBANK-HOST‘

latin1_mysql_dump = ‚latin1_mysql_dump.sql‘
utf8_mysql_dump = ‚utf8_mwsql_dump.sql‘

print "DB-Dump holen…. "
system "mysqldump –user=#{db_user} –password=’#{db_pass}‘ –host=#{db_host} –add-drop-table –default-character-set=latin1 –insert-ignore –skip-set-charset #{db_name} > #{latin1_mysql_dump}"
puts "…fertig"

print "Konvertierung nach UTF8 starten… "
system "iconv -f ISO-8859-1 -t UTF-8 #{latin1_mysql_dump} | sed ’s/latin1/utf8/‘ > #{utf8_mysql_dump}"
puts "…fertig"

print "Datenbank neu anlegen"
system "mysql –user=#{db_user} –password=’#{db_pass}‘ –host=#{db_host} –execute="DROP DATABASE #{db_name};""
system "mysql –user=#{db_user} –password=’#{db_pass}‘ –host=#{db_host} –execute="CREATE DATABASE #{db_name} CHARACTER SET utf8 COLLATE utf8_unicode_ci;""
puts "…fertig"

print "Konvertierten UTF8 Dump einspielen…"
system "mysql –user=#{db_user} –password=’#{db_pass}‘ –host=#{db_host} –default-character-set=utf8 #{db_name} < #{utf8_mysql_dump}"
puts "…fertig"

puts " Konvertierung abgeschlossen "
end

def self.down
raise "Konvertierung fehlgeschlagen"
end

end

[/ruby]

MySQL Queries in irb ausgeben lassen

Manchmal möchte man auch in einer irb-Session die MySQL-Queries ausgeben lassen, die von Rails erzeugt wurden. Dies ist mit einer kleinen Anpassung in der environments.rb möglich.

Dazu muss die config/environment.rb um folgenden Eintrag ergänzt werden
[ruby]
def log_to(stream)
ActiveRecord::Base.logger = Logger.new(stream)
ActiveRecord::Base.clear_active_connections!
end
[/ruby]

Danach kann man in der Konsole diese Methode benutzen:

[ruby]
>> log_to STDOUT
=> …
>> Post.find(:first)
Post Load (0.000138) SELECT * FROM posts LIMIT 1
=> #<Post:0x1234 …>
>>
[/ruby]

So kann man nun die Queries prüfen oder sich einfach einen Überblick verschaffen was im Hintergrund passiert 🙂

Gitcasts von Scott Chacon

Heute wollen wir euch eine weitere Seite mit guten Screencasts vorstellen: Gitcasts. Wie der Name schon vermuten läßt, handelt es sich um Videos über die Versionsverwaltungssoftware Git. Die Screencasts stammen von Scott Chacon der diese bei seinen ersten Gehversuchen mit Git erstellt hatte.

Inzwischen sind dreizehn Videos auf seinem Blog verfügbar. Die Aufzeichnungsqualität reicht nicht ganz an die von Railscasts heran, aber es ist ein guter Einstieg in das Thema.

Dies sind die bisher verügbaren Videos:

Git Diff
Git Submodules
Git on Windows
RailsConf Git Talk
Empty Branches
Distributed Workflow
Rebasing
Branching and Merging
Browsing Git Objects
Git Log
Interactive Adding
Normal Workflow
Setup, Initialization and Cloning

Mit irb in Rails „einklincken“

Häufig ist es nicht möglich eine produktive Rails-Applikation für Debugging-Zwecke aus dem Netz zu nehmen. Mit Hijack ist dies auch nicht zwingend nötig, da es sich in laufende Ruby-Prozesse einbindet und man somit auch in irb „live-debugging“ betreiben kann.

Hijack ist momentan noch im beta-Stadium und sollte ebenso wie das „live-Debugging“ in produktiven Umgebungen mit Vorsicht genossen werden.

Um eine irb-Konsole für einen laufenden Ruby-Prozess zu öffenen muss lediglich die Prozess-Id (auf unixoiden Systemen) übergeben werden:

>ruby hijack 16451

Danach stehen euch alle Möglichkeiten einer irb-Konsole für die Debugging-Session zur Verfügung.

Hijack wird auf Github gehostet: http://github.com/ileitch/hijack/tree/master

Railscasts von Ryan Bates

Ryan Bates erstellt schon seit über zwei Jahren jede Woche einen Screencasts zum Thema Rails und allem was dazugehört. Viele werden seine Videos bereits kennen, aber alldiejenigen für die es neu ist, können sich auf ein Portfolio von inzwischen 176 Screencasts freuen.

In der folgenden Liste findet ihr alle bisher erschienen Screencasts mit ihren Titeln.
Die Videos sind sehr gut gemacht und wir hoffen es ist auch etwas für euch dabei.

August 2009

176. Searchlogic
175. AJAX History and Bookmarks

July 2009

June 2009

May 2009

April 2009

156. Webrat

March 2009

February 2009

January 2009

December 2008

138. I18n

November 2008

136. jQuery

October 2008

September 2008

August 2008

July 2008

118. Liquid

June 2008

May 2008

April 2008

March 2008

February 2008

January 2008

December 2007

November 2007

October 2007

September 2007

August 2007

July 2007

June 2007

May 2007

April 2007

March 2007

Backpack als CMS mit gu

37Signals haben mit gu eine kleine Rails-Applikation veröffentlicht mit der man seinen Backpack-Account als CMS einsetzen kann.

gu soll kein ausgewachsenes CMS ersetzen, aber genug bieten um kleinere Seiten zu betreiben.

Dabei wird größtenteils auf bestehende Funktionen von Backpack zurückgegriffen.

Ihr findet die Applikation incl. einer Anleitung auf github: github-link zu gu

Alles Neu

Wir haben es wieder getan: Ein weiteres mal haben wir für euch unsere Seite umgebaut und um Funktionen erweitert.

Wir hoffen, dass euch das neue übersichtlichere Layout und die zusätzlichen Funktionen gefallen.

Gerne würden wir eure Meinung zum Umbau erfahren!

Viele Grüße
Euer RubyOnRails.de-Team