Don't understand german? Read or subscribe to my english-only feed.

Ruby (Update)

Ich spiele mich gerade ein wenig mit Ruby. (Murphee, du bist mit ‘Tipping the scale: The Ruby features that make the difference‘ nicht ganz unschuldig! ;-)) Um meine Gedanken zu ordnen hier ein bisserl Brain-Dumping…

Interessante Debian-Pakete:

irb: Interactive Ruby (irb)
rails: MVC ruby based framework geared for web application development
rdoc: Generate documentation from ruby source files
ri: Ruby Interactive reference (ri)
ruby-pkg-tools: Tools for building Debian Ruby packages
ruby1.9-examples: Examples for Ruby 1.9
rubybook: the "Programming Ruby" book
rubygems: package management framework for Ruby libraries/applications
vim-ruby:  Vi IMproved - enhanced vi editor - with Ruby support

Als Vim-Verfechter habe ich natürlich vim-ruby (die Vim-Version mit Ruby-Scripting-Support, siehe ‘:help if_ruby’) installiert. In vim-ruby.rubyforge.org hab ich reingeschnuppert, tut soweit mal. Weiteres Vim-Tuning habe ich aber noch nicht vorgenommen. Kurz reingeschnuppert habe ich auch in RDT, eine Ruby-Erweiterung für Eclipse. Sieht soweit sehr nett aus, ich kann aber mangels Praxis-Erfahrung noch nicht wirklich was dazu sagen.

Unbedingt kennen sollte man auch irb. irb steht für ‘interactive ruby’ und ist quasi eine interaktive Shell für Ruby. Gerade für einfaches Herumspielen finde ich irb ganz nett, hier ein Auszug aus der ~/.irbrc der kommenden grml-Release:

# we want to be able to use tab-completion in irb:
require 'irb/completion'
ARGV.concat [ "--readline", "--prompt-mode", "simple" ]

# we want to get a history file of our session:
module Readline
  module History
    LOG = "#{ENV['HOME']}/.irb-history"

    def self.write_log(line)
      File.open(LOG, 'ab') {|f| f < < "#{line}\n"}
    end

    def self.start_session_log
      write_log("\n# session start: #{Time.now}\n\n")
      at_exit { write_log("\n# session stop: #{Time.now}\n") }
    end
  end

  alias :old_readline :readline
  def readline(*args)
    ln = old_readline(*args)
    begin
      History.write_log(ln)
    rescue
    end
    ln
  end
end

Readline::History.start_session_log

# simple prompt?
# IRB.conf[:PROMPT_MODE] = :SIMPLE

# prompt for easy copy/paste? start with irb --prompt xmp
IRB.conf[:PROMPT][:XMP][:RETURN] = "\# => %s\n"

(Äh ja, diesen fehlplatzierten Smiley in der Konfig macht WordPress hinein. Fragt mich nicht, wieso es so einen Schmarrn in einer pre-Umgebung macht… soll natürlich ein Doppelpunkt mit einem anschliessenden ‘o’ sein….)

Das Buch Programmieren mit Ruby hab ich mir ausgeborgt (danke, Karl!), Programming Ruby, ‘The Pragmatic Programmer’s Guide’ hab ich mir vor kurzem gekauft und ist meine aktuelle Abendlektüre. Sehr netter Schreibstil! Nicht uninteressant wirkt auch Ruby Cookbook, allerdings hab ich vorerst schon genug Leselektüre. ;-)

Interessante Webseiten:

Update: rubygems ist ab jetzt in Unstable zu finden (und wird somit wohl Teil von Debian etch). Vor ein paar Tagen bin ich über die Bookmarks von Murphee auf RubyNode aufmerksam gemacht worden. Heute hab ich mir die Zeit genommen, Ruby 1.8.5 selbst zu kompilieren damit ich RubyNode testen kann:

RubyNode is a library that allows read only access to Ruby’s internal NODE structure.
It can retrieve the node trees of methods and procs and it can use Ruby’s parser to parse
Ruby source code strings to node trees.

Karl, danke fürs Kommentar, natürlich gehört Ruby-on-Rails (Debian-Paket: rails) auch erwähnt.

Hab ich was vergessen? Sollte ich noch etwas kennen? Bitte melden! :-)

4 Responses to “Ruby (Update)”

  1. ak Says:

    RDT hat mir mal beim Refactoring von tpp den Sourcecode vollkommen zerstoert. Auf einmal waren etliche Klassen einfach weg. Keine Ahnung, ob das jetzt immer noch so ist, aber vor ca. 1 bis 1.5 Jahren war RDT noch ziemlich unbenutzbar.

  2. Karl Says:

    Ruby on Rails vielleicht … so als Bonus für Rubykenner

  3. murphee Says:

    Fuer Native Ruby gibts so was aehnliches wie RubyNode:
    http://www.zenspider.com/ZSS/Products/ParseTree/

    Fuer Java gibts noch JRuby http://jruby.org/ , das ziemlich eifrig entwickelt wird (zwei der Entwickler werden seit September von Sun fuers JRuby entwickeln bezahlt).

  4. chris Says:

    Wenn du etwas Farbe in dein irb Leben bringen möchtest, dann schau dir mal an. Außerdem ist der Blogpost von mfp ziemlich nützlich.