HowTo: Ubuntu 11.4 + Ruby 1.9.2 + RubyDebug + Aptana Studio 3.0.2

Die Anleitung basiert auf Ubuntu 11.4, sollte sich aber auch auf andere Versionen portieren lassen.

Zuerst prüfen wir ob schon ein ruby installiert ist:

user@computer:$ which ruby

Wenn die Ausgabe leer bleibt können wir weiter machen. Zuerst benötigen wir einige grundlegende Abhängigkeiten:

user@computer:$ sudo aptitude install git ruby curl

Reading package lists... Done
Building dependency tree
<-- Output Snipped -->

Danach installieren wir den RVM (Ruby Version Manager). Der RVM installiert Ruby in das User-Home Verzeichnis (Single-User installation) was für eine Entwicklungsumgebung am sinnvollsten ist. Eine genaue Anleitung dazu findet man auf der offiziellen Homepage:

http://rvm.beginrescueend.com/rvm/install/

user@computer:$ bash < <( curl https://rvm.beginrescueend.com/releases/rvm-install-head )

<-- Output Snipped -->
* For JRuby (if you wish to use it) you will need:
$ aptitude install curl sun-java6-bin sun-java6-jre sun-java6-jdk
* For MRI & ree (if you wish to use it) you will need (depending on what you are installing):
$ aptitude install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3-0 libsqlite3-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconf
* For IronRuby (if you wish to use it) you will need:
$ aptitude install curl mono-2.0-devel

<-- Output Snipped -->

WARNING: you have a 'return' statement in your .bashrc, likely this will cause untold havoc.
This means that if you see '[ -z "$PS1" ] && return' then you must change this line to:
if [[ -n "$PS1" ]] ; then
... original content that was below the && return line ...
fi # <= be sure to close the if.
#EOF .bashrc
Even if you use zsh you should still adjust the .bashrc as above.
If you have any questions about this please visit #rvm on irc.freenode.net.

Installation of RVM to /usr/local/rvm/ is complete.

Wie wir an der Ausgabe gesehen haben warnt uns das Installations-Script noch vor einen “return” Statement in unserer .bashrc. Wir sind brav und folgen den Anweisungen des Installers:

user@computer:$ nano .bashrc

Nun suchen wir die Zeile

[ -z "$PS1" ] && return

und ersetzen sie mit dieser

if [[ -n "$PS1" ]]; then

Nun müssen wir ganz am Ende der .bashrc noch folgende Zeile einfügen

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

fi

das “fi” ganz am Ende nicht vergessen! Nun speichern wir die Datei mit Strg+o und beenden den nano mit Strg+x.

Jetzt prüfen wir ob der rvm richtig funktioniert

user@computer:$ rvm notes

wenn hier nun einige Details über die Installation des RVM angezeigt werden haben wir alles richtig gemacht.

Um den RVM richtig verwenden zu können braucht Ubuntu noch ein paar Libs

user@computer:$ sudo aptitude install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3-0 libsqlite3-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconf

<-- Snipped -->

Nun ist es an der Zeit ruby zu installieren.

user@computer:$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p352]
[ruby-]1.8.7-head
[ruby-]1.9.1-p378
[ruby-]1.9.1[-p431]
[ruby-]1.9.1-head
[ruby-]1.9.2[-p180]
[ruby-]1.9.2-head
ruby-head
<-- snipped -->

Der Output ist noch größer wir interessieren uns aber nur für die MRI packages. Dann ab und ruby installieren

user@computer:$ rvm install 1.9.2-head
<-- Output Snipped -->
info: Installing ruby-1.8.7-p302
<-- Output Snipped -->
info: Installing rubygems dedicated to ruby-1.8.7-p302...
<-- Output Snipped -->
info: Installing ruby-1.9.2-head
<-- Output Snipped -->
info: Updating rubygems for /usr/local/rvm/gems/ruby-1.9.2-head

Es wir zuerst ruby1.8 installiert was aber völlig normal ist. Danach setzen wir noch unsere ruby default Version und prüfen ob alles funktioniert hat

user@computer:$ rvm --default 1.9.2-head
ruby -v
ruby 1.9.2p289 (2011-07-04 revision 32391) [i686-linux]

Jetzt müssen wir noch ruby-debug installieren. Das hat mir die meiste Zeit geraubt. Aber wenn man weiss wie es geht ist es eigentlich ganz einfach. Gebt folgendes in die Shell ein

user@computer:$ gem install dev-utils
<-- skipped -->

…danach…

user@computer:$ gem install linecache19 -- --with-ruby-include=/home/sascha/.rvm/src/ruby1.9.2-head
<-- skipped -->

und dann noch

user@computer:$ gem install ruby-debug19 -- --with-ruby-include=/home/sascha/.rvm/src/ruby1.9.2-head
<-- skipped -->

danach installieren wir noch die ruby-debug-ide19

user@computer:$ gem install ruby-debug-ide19 -- --with-ruby-include=/home/sascha/.rvm/src/ruby1.9.2-head
<-- skipped -->

Ihr müsst natürlich den Pfad zur eurer ruby-1.9.2 src installation angeben.

Jetzt sollte alles soweit funktionieren und eingerichtet sein. Nun könnt ihr euch unter www.eclipse.org noch das aktuelle Eclipse installieren und dann von www.aptana.com das aktuelle Aptana Studio 3.0.3 als Plugin installieren. Wie das geht erkläre ich hier nicht, zumal es ausführlich auf der Webseite von Aptana beschrieben ist.
Falls Aptana den Debugger nicht finden sollte, dann einmal in die Konsole wecheln und folgendes eingeben

user@computer:$ gem environment

RubyGems Environment:
- RUBYGEMS VERSION: 1.6.2
- RUBY VERSION: 1.9.2 (2011-07-04 patchlevel 289) [i686-linux]
- INSTALLATION DIRECTORY: /home/sascha/.rvm/gems/ruby-1.9.2-head
- RUBY EXECUTABLE: /home/sascha/.rvm/rubies/ruby-1.9.2-head/bin/ruby
- EXECUTABLE DIRECTORY: /home/sascha/.rvm/gems/ruby-1.9.2-head/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /home/sascha/.rvm/gems/ruby-1.9.2-head
- /home/sascha/.rvm/gems/ruby-1.9.2-head@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/


Nun den Pfad von EXECUTABLE DIRECTORY kopieren und zur Umgebungsvariable $PATH hinzufügen

user@computer:$ sudo nano /etc/environment

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/sascha/.rvm/gems/ruby-1.9.2-head/bin"


Nach einem Neustart von Ubuntu lassen sich nun unsere Ruby Programme über Aptana ausführen und Debuggen!

Bug in Json-lib: A string starting and ending with quotes is badly parsed – ID: 2893329

Wir benutzen in unserem Projekt die Json-lib um unsere EMF Modelle in ein Json Format umzuwandeln. Leider sind wir auf einen Bug gestoßen der es für uns unmöglich macht mit dieser Bibliothek weiterzuarbeiten.
Daraufhin habe ich mit dem Project Lead kontakt aufgenommen um mit ihm zusammen an einer Lösung zu arbeiten. Herausgekommen ist ein Patch für die Bibliothek, der höchst wahrscheinlich auch in den nächsten Release einfließen wird. Vorab kann der CVS patch auch schon hier heruntergeladen werden:

Ich hoffe das hilft dem einen oder anderen weiter.

Eclipse: Maven Project in ein WTP Project konvertieren

Mithilfe von M2Eclipse lassen sich in Eclipse Maven Projekte verwalten. Hat man einmal ein solches Projekt angelegt, gestaltet es sich etwas schwierig, es zu einem WTP Projekt zu konvertieren. Der Vorteil von WTP Projekten ist, dass man aus der IDE heraus einen Application Server ansteuern kann und darauf dann sein Web Projekt deployen kann. Es gibt auch eine automatische Re-Deploy Funktion sowie die Möglichkeit seine Webapplikationen wie gewohnt in Eclipse zu debuggen. Soll nun ein M2Eclipse Projekt in ein WTP Projekt konvertiert werden geht man wie folgt vor:

  1. WTP Builder und Nature hinzufügen in der .project Datei:
    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
    28
    29
    
    <?xml version="1.0" encoding="UTF-8"?>
    <projectDescription>
    	<name>test-project</name>
    	<comment></comment>
    	<projects>
    	</projects>
    	<buildSpec>
    		<buildCommand>
    			<name>org.eclipse.wst.common.project.facet.core.builder</name>
    			<arguments>
    			</arguments>
    		</buildCommand>
    		<buildCommand>
    			<name>org.eclipse.jdt.core.javabuilder</name>
    			<arguments>
    			</arguments>
    		</buildCommand>
    		<buildCommand>
    			<name>org.maven.ide.eclipse.maven2Builder</name>
    			<arguments>
    			</arguments>
    		</buildCommand>
    	</buildSpec>
    	<natures>
    		<nature>org.eclipse.jdt.core.javanature</nature>
    		<nature>org.maven.ide.eclipse.maven2Nature</nature>
    		<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    	</natures>
    </projectDescription>
  2. .classpath Datei anpassen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
    	<classpathentry kind="src" output="target/classes" path="src/main/java"/>
    	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>
    	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
    	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
    	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER">
    		<attributes>
    			<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
    		</attributes>
    	</classpathentry>
    	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
    	<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
    	<classpathentry kind="output" path="target/classes"/>
    </classpath>
  3. Project Facet Preferences anpassen:
    Project Facet Preferences
  4. Danach kann das Projekt z.B. einem Tomcat Application Server hinzugefügt werden:

Jetzt kann das Projekt wie jedes andere WTP Projekt verwendet werden.