Screencast: Pry in Rails verwenden

Pry ist eine Alternative zu IRB und bringt einige interessante Features und Funktionen mit. Ryan zeigt diese Woche wie es in Kombination mit Rails eingesetzt werden kann.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
gem install pry pry-doc
rvm gemset use global
pry
pry -r ./config/environment
[/bash]

pry

[bash]
help
cd Article
cd first
cd name
nesting
exit
ls
ls -h
ls -m
ls -M
ls Array -M
show-doc Article#in_groups_of
show-doc all
show-doc all.in_groups_of
show-method all.in_groups_of
edit-method all.in_groups_of
.ls
.cat Gemfile
[/bash]

Gemfile

[ruby]
gem ‚pry‘, :group => :development
[/ruby]

models/article.rb

[ruby]
binding.pry
[/ruby]

Das Ruby-Praxisbuch: Ruby-Code schnell verstehen und einsetzen

Ruby gilt als der neue Star unter den Programmiersprachen – ihre zahl-reichen Anhänger sind vor allem von ihrer eleganten Syntax und ihrer einfachen Erlernbarkeit begeistert. Seit 2004 ist zudem das Framework Ruby on Rails verfügbar, das viele Entwicklungsaufgaben radikal vereinfacht. Ruby ist damit zu einem ernsthaften Konkurrenten von Java in der Anwendungsprogrammierung für das Web geworden. Das Motto des Buchs lautet: keine lange Theorie! Anhand zahlreicher anschaulicher Codebeispiele vermittelt Kevin C. Baird die zentralen Konzepte der Sprache und bietet somit einen praxisorientierten Überblick.

Auf Du und Du mit Ruby Mit dem kommandozeilenorientierten Werkzeug IRB unterstützt Ruby einen sehr direkten, interaktiven Programmieransatz. Der Autor gibt eine Einführung in IRB und vermittelt dabei einen Einblick in die Philosophie, nach der Ruby Informationen verarbeitet. Grundtechniken Ruby ist komplett objektorientiert, verzichtet jedoch größtenteils auf den formalen Overhead anderer OO-Sprachen wie etwa Java. Ruby-Skripte lassen sich daher sehr intuitiv gestalten. Der Autor stellt die Grundlagen vor und dokumentiert sie an Skriptbeispielen, die ausführlich erklärt werden. Funktionale Programmierung Ruby enthält funktionale Ansätze – das erlaubt das Behandeln mathematischer Funktionen als Objekte. Dadurch minimiert sich unter anderem die Notwendigkeit, Schleifen zu benutzen, der Code wird kürzer und übersichtlicher. Codestücke zeigen, wie diese funktionalen Konzepte vorteilhaft genutzt werden können. Erste Schritte mit Ruby on Rails Das Framework Ruby on Rails schickt sich an, Java zunehmend den Rang abzulaufen: Gerade im Webumfeld erleichtert es viele mühsame Programmier-aufgaben deutlich. Anhand eines anschaulichen Beispiels zeigt der Autor, wie Rails-Projekte aufgesetzt werden und welche Komponenten dafür nötig sind.

Shell-Komandos in irb aufrufen

Man muss in einer irb-Session nicht auf die gewohnten Konsolen-Kommandos verzichten. Der heutige Script-Tip zeigt wie ihr eure irb-Session um die Funktionalität von Konsolen-Kommandos erweitern könnt.

Quellcode:

[ruby]
def sys_kommando(name, *args)
system("#{name} #{args.join(‚ ‚)}")
end
[/ruby]

Ruby Log in der Konsole

Im heutigen Script-Tip wollen wir euch zeigen wie ihr die Logeinträge in der Konsole anzeigen könnt. Dazu müsst ihr eure .irbrc um den folgenden Code-Eintrag erweitern.

Folgenden Code müsst in eure .irbrc eintragen:

[ruby]
if ENV.include?(‚RAILS_ENV‘)&& !Object.const_defined?(‚RAILS_DEFAULT_LOGGER‘)
Object.const_set(‚RAILS_DEFAULT_LOGGER‘, Logger.new(SDTOUT))
end
[/ruby]

Ruby im Webbrowser (wieder verfügbar)

Viele kennen die irb Ruby Konsole von „Why The Lucky Stiff“. Die Konsole lief im Browser und jeder konnte so seine ersten Ruby-Geh-Versuche im Browser testen bevor man sich den Interpreter installiert hat. Nach dem misteriösen Verschwinden von Why war eine zeitlang unklar was mit seinen Projekten passieren würde.

Inzwischen hat sich die Lage „entspannt“ und die Projekte haben ein anderes Zuhause auf Github gefunden.

Auch die irb-Browser-Konsole ist wieder online und jeder kann sie unter folgender Adresse benutzen: http://tryruby.sophrinix.com/

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 🙂

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