NetBeans 6 als Rails-IDE
Stichwörter: ide, jruby, netbeans, rails, ruby, rubyonrails
Als ich mir das letzte Mal NetBeans angeschaut habe, war das während meiner äußerst kurzen Java-Phase. Es war irgendwann im letzten Jahrhundert, noch bevor Sun NetBeans erwarb. NetBeans war eine reine Java-Entwicklungsumgebung — für und in Java. Bis vor kurzem sah ich auch keinen Grund, mich mit NetBeans wieder zu befassen. Doch vor ein paar Tagen sah ich dann diesen Artikel in meinem Feed-Reader.
Da sich Sun vor kurzem die JRuby-Entwickler ins Haus geholt hat, wurde Ruby-Support in das kommende NetBeans 6 eingebaut. Derzeit ist NetBeans 6 noch eine Entwicklerversion und es gibt noch hier und da ein paar scharfe Ecken und Kanten, doch die Software ist durchaus benutzbar.
Ich habe einen Versuch gestartet und eine kleine Rails-Anwendung komplett mit der NetBeans-IDE entwickelt. NetBeans macht es möglich, komplette Anwendungen zu erstellen, ohne auf die Konsole zu müssen. Alle Generatoren lassen sich aus der IDE aufrufen. Auch der Mongrel/WEBrick läßt sich hier starten und stoppen. Subversion/CVS-Support muß ich wohl nicht extra erwähnen, da ich das heutzutage als selbverständlich ansehe. Sogar Autotest läßt sich bequem aus einem Menü starten. Der eingebaute SQL-Client (eigentlich fast ein kleiner Datenbankmanager) ermöglicht es sich direkt mit Datenbanken zu verbinden. Die Entwickler haben sogar einen Gem-Manager eingebaut. Damit lassen sich bequem mit einer GUI Ruby-Gems installieren, deinstallieren und updaten. (Dazu unten noch mehr)
Negativ aufgefallen ist mir, daß die IDE sich auf meinen PowerPC PowerBook ab und zu eine kleine Auszeit nimmt. Dies geschieht meistens, wenn NetBeans 6 versucht mir seine Hilfe anzubieten und dazu alle möglichen Methoden auflistet, die ich an das Objekt senden könnte. Dies ist mir auf dem Mac mini mit Core Duo in der Firma nicht so aufgefallen. Man sollte also schon eine schnelle CPU haben. Ab und zu poppen auch Fenster mit irgendwelchen Java-Exceptions auf. Da es sich noch um eine Entwicklerversion von NetBeans handelt, ist das verzeihlich. Trotz dieser Exceptions läuft jedoch die Software weiter und stürzt nicht ab.
Hier noch ein paar Tips: NetBeans 6 bringt sein eigenes JRuby mit ein paar Gems mit. Ich hatte natürlich schon ein voll lauffähiges Ruby 1.8.6 mit einem Haufen an Gems auf dem Rechner installiert. Glücklicherweise haben die Entwickler daran gedacht. In den Einstellungen findet sich unter Ruby -> Platform die Möglichkeit, einen eigenen Ruby-Interpreter anzugeben. Wählt man hier sein bisheriges Ruby aus, findet NetBeans auch die dazugehörigen Gems. NetBeans erzeugt für diese Gems einen Index, der für die Codevervollständigung benutzt wird.
Der eingebaute Gem-Manager ist zwar angenehm, funktioniert aber bei einer normalen Ruby-Installation nicht, weil normale User in der Regel nicht über Schreibrechte in /usr(/local)/lib/ruby/gems verfügen. Erst wenn man sich die nötigen Rechte verschafft, funktioniert der Gem-Manager.
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 2023× betrachtet
Ruby 1.8.6
Falls es jemand noch nicht mitbekommen hat, Ruby 1.8.6 ist erschienen. Im Changelog ist nachzulesen, was sich geändert hat. Es ist weitgehend eine Maintenance release. Wirklich neue Features sind erst mit Version 1.9 zu erwarten, die voraussichtlich Ende dieses Jahres erscheinen soll.
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1602× betrachtet
Es ist alles eine Ansichtssache
Stichwörter: postgresql, rails, ruby, ruby on rails, rule, schema, view
Wir stellen in der Firma derzeit Teile unserer alten
Software auf eine hippe und coole Rails-Anwendung um. Solange unsere Anwendung nicht fertig ist, muß die alte und die neue Software parallel laufen und auf die gleichen Daten zugreifen können. Da wird die alte Software nicht ändern können und wollen, muß sich Rails entsprechend anpassen. Wir sind ja agil, oder? Ich hätte natürlich die Tabellen gerne möglichst Rails-konform, doch die alten Daten strotzen nur so vor Altlasten: unverständliche oder irreführende mixed-case Namen. Kombiniert man das mit PostgreSQL, hat man ein Problem, da der PostgreSQL-Adapter in Rails die Namen nicht quotet, was PostgreSQL dazu veranlaßt, alle Namen in Kleinbuchstaben zu verwandeln.
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1901× betrachtet
Zeig mir deine .irbrc
Stichwörter: config, irb, ruby
Die IRB ist ein sehr nützliches Tool, um mal interaktiv mit Ruby zu spielen. Die Standardeinstellungen der IRB sind jedoch etwas spartantisch. Meine .irbrc macht das Leben ein wenig komfortabler.
IRB.conf[:AUTO_INDENT] = true
IRB.conf[:PROMPT_MODE] = :SIMPLE
IRB.conf[:SAVE_HISTORY] = 200
IRB.conf[:HISTORY_FILE] = "/.irb-history"
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1691× betrachtet
Verschwurbelter Code
Stichwörter: acts_as_list, helper, listen, rails, ruby, sortieren
In meinem Rails-Programm möchte ich gerne Listenelemente (acts_as_list) horizontal sortieren können. Das ganze sollte über eine kleine Symbolleiste (s. Bild) über jedem Listenelement geschehen. Anfangs schrieb ich einfach den HTML/Rails-Code, der die 5 Buttons enthielt, direkt in den View hinein. Doch dann packte mich der Ehrgeiz und habe versucht, es zu verbessern. Am Ende hatte ich folgenden verschwurbelten Helpercode:
"<table class=\"sort_buttons\"><tr></tr></table>"
end
protected
buttons = [ {:action => :to_top, :exclude_on => :first? },
{:action => :up, :exclude_on => :first? },
{:action => :delete, :exclude_on => :nil? }, # dummy
{:action => :down, :exclude_on => :last? },
{:action => :to_bottom, :exclude_on => :last? } ]
cols = buttons.collect do |button|
["<td>", (sort_button(:controller => options[:controller],
:action => button[:action],
:id => options[:id]) unless options[:id].send(
button[:exclude_on])),
"</td>"].join
end.join
end
link_to image_tag(options[:action].to_s, :size => options[:size]),
:controller => options[:controller], :action => options[:action],
:id => options[:id]
end
Endlich habe ich das Gefühl, die Anfängerpfade verlassen zu haben. Und das nur um DRY-willen.
An solchem Code sehe ich auch, daß es höchste Zeit fürs Wochenende wird
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1298× betrachtet
Tücken von acts_as_list
Stichwörter: acts_as_list, rails, ruby, ruby on rails
Beim benutzen von acts_as_list in Ruby on Rails bin ich beim entfernen von Listenelementen auf eine Hürde gestoßen. Nach dem Entfernen des Listenelementes wurden die nachfolgenden Elemente nicht korrekt sortiert. Ich weiß nicht, ob ich was da falsch verstanden habe oder ob es sich um einen Bug handelt. Um letztenendes ein korrektes Verhalten meiner Liste zu erhalten habe ich folgenden Code benutzt:
child.remove_from_list
child.position = nil
parent.children.delete(child)
Es erscheint mir ein wenig umständlich, aber es funktioniert.
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1852× betrachtet
Zitat des Tages
Ruby's the only language I've ever used that feels like it was designed by a programmer, and not by a hardware engineer (Java, C, C++), an academic theorist (Lisp, Haskell, OCaml), or an editor of PC World (Python).
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1313× betrachtet
Rails Edge + Gettext = Frust
Stichwörter: edge, frust, gettext, l10n, rails, ruby, rubyonrails
Notiz an mich selbst: Ruby-Gettext vorerst nur mit stabilem Rails verwenden.
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1872× betrachtet
Syntax-Highlighting mit Coderay
Stichwörter: code, coderay, highlight, ruby, syntax
Letztens schrob ich, daß ich nun meine Codebeispiele im Blog gerne mit Syntax-Highlighting ausstatten möchte. Manuell war das natürlich nicht zu machen. Bei der Suche nach etwas automatischen bin ich auf Coderay gestoßen. Damit sieht der Code schon mal viel ansprechender aus.
Hier mal ein Beispiel:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
require 'rubygems' require_gem 'activerecord' ActiveRecord::Base.establish_connection( :adapter => "postgresql", :host => "localhost", :database => "artikel", :username => "dbuser", :password => "kryptisches_passwort" ) class Selection < ActiveRecord::Base set_table_name "selections" set_primary_key "id" has_many :items, :class_name => "SelectionItem", :foreign_key => "selection_id", :order => "sort_order" end class SelectionItem < ActiveRecord::Base set_table_name "selectionitems" set_primary_key "id" belongs_to :selection, :class_name => "Selection", :foreign_key => "selection_id" end |
Schick, oder?
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1564× betrachtet
Einfacher Prompt in der IRB
Stichwörter: irb, prompt, ruby
Der normale Prompt in der irb kann ein wenig verwirrend und Platzraubend sein. Wenn man auf die Informationen aus dem Prompt keinen großen Wert legt, kann man ihn ein wenig vereinfachen.
Die folgende Zeile in der ~/.irbrc macht den Prompt schön schlank.
IRB.conf[:PROMPT_MODE] = :SIMPLE
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1637× betrachtet
ActiveRecord ohne Rails
Stichwörter: activerecord, datenbank, orm, ruby
ActiveRecord ist einer der Gründe, wieso Ruby on Rails so einfach und flexibel ist. Es ist ein sogenannter objektrelationaler Mapper. Damit lassen sich Daten aus einer Datenbank wie Objekte behandeln. Aber auch ohne Rails läßt sich ActiveRecord recht einfach einsetzen.
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 2264× betrachtet
Ruby 1.8.5
Noch steht es nicht auf der Ruby-Website, doch gerade eben hat Matz die Version 1.8.5 von Ruby veröffentlicht.
Nachtrag 17:40Uhr: Wie ich gerade lese, hat die Ruby-Website auch noch ein 2.0mäßiges Facelifting bekommen. Leider kann ich es gerade nicht bewundern, daß es auch gleich auf Digg geposted wurde, wodurch die Website nun gar nicht mehr erreichbar ist. Zum Glück konnte ich mir den Source ziehen, als die Website ihr altes Design noch hatte :)
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1640× betrachtet
Zahlen formatieren in Ruby
Stichwörter: format, printf, ruby
Es muß nicht immer printf sein, um Zahlen in Ruby zu formatieren. Ruby kennt da einen eleganteren Weg.
irb(main):001:0> foo=3.14159265358979323846264338328 => 3.14159265358979 irb(main):002:0> "%.4f"%foo => "3.1416"
Zwar muß man immer noch die relativ umständlichen Printf-Style Format-Strings angeben, doch muß man sich nicht mit den Platzhaltern in den Strings herumschlagen.
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1810× betrachtet
Programmieren lernen für Nicht-Geeks
Stichwörter: buch, lernen, programmieren, ruby
Ich höre oft von meinen Nicht-Geek Freunden, daß sie gerne ein wenig programmieren lernen würden, wäre es nicht so komplex. Was sie natürlich meinen ist, daß Programmcode in vielen Programmiersprachen geradezu kryptisch aussieht. Ich habe meinen Freunden immer empfohlen, sich Ruby anzuschauen. Doch Bücher wie Programming Ruby
sind eher an Leute gerichtet, die zumindest das Konzept des Programmierens verinnerlicht haben. Ich habe bislang den Nicht-Geeks das Poignant Guide to Ruby empfohlen. Nun sieht es so aus, als wäre ein Buch erschienen, das sich genau an diese Leute richtet. Learn to Program ist wohl genau das richtige Buch, um nicht nur eine Programmiersprache (Ruby) zu lernen sondern auch ein wenig die Denkweise eines Programmierers nahezubringen. Die auf der Website verfügbaren Abschnitte des Buches sehen jedenfalls sehr vielversprechend aus. Ich werde das Buch mal weiterempfehlen.
- 0 Kommentare
- 0 Trackbacks
- Permalink
- 1591× betrachtet