How to install ruby-debug on Windows and Ruby 1.9

Heute ein Artikel in Englisch, damit auch die internationale Gemeinde etwas davon hat ;-)

The Rails Debugging Guide told me that I have to install ruby-debug19 instead of ruby-debug when I want to debug on the Ruby 1.9 platform. So I tried to install it on a system which has Ruby 1.9.2 and Windows 7 x64 installed and I ran into trouble:

c:\Railsapps\tuneo>gem install ruby-debug19 --platform=mswin32
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing ruby-debug19:
ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb
checking for vm_core.h... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby/bin/ruby
--with-ruby-dir
--without-ruby-dir
--with-ruby-include
--without-ruby-include=${ruby-dir}/include
--with-ruby-lib
--without-ruby-lib=${ruby-dir}/lib
C:/Ruby/lib/ruby/1.9.1/mkmf.rb:368:in `try_do': The complier failed to generate
an executable file. (RuntimeError)
You have to install development tools first.
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:452:in `try_cpp'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:834:in `block in have_header'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:693:in `block in checking_for'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:280:in `block (2 levels) in postpone
'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:280:in `block in postpone'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:254:in `open'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:276:in `postpone'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:692:in `checking_for'
from C:/Ruby/lib/ruby/1.9.1/mkmf.rb:833:in `have_header'
from extconf.rb:15:in `block in

'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/ruby_co
re_source.rb:18:in `call'
from C:/Ruby/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/ruby_co
re_source.rb:18:in `create_makefile_with_core'
from extconf.rb:20:in `
'

Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.9.1/gems/linecache19-
0.5.11 for inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.9.1/gems/linecache19-0.5.11/ext/trace_
nums/gem_make.out

This is the way I solved it:
1. Start cmd, change to your devkit folder and execute devkitvars.bat
If you have not yet installed the devkit on your system check this Devkit on github.com

2. Execute the gem install command:
gem install ruby-debug19 --platform=mswin32Note: the platform depends on your ruby installtion. To find out which platform you are using, check your ruby version:
c:\Railsapps>ruby -v
ruby 1.9.2p0 (2010-08-18) [i386-mingw32]

After that the ruby debugger is running on the system. Don’t wonder if the execution of the install command takes a while.

Share

cloudControl für Ruby-Entwickler

Ich muss zugeben, dass ich dem aktuellen Hype um das Thema Cloud Computing ein wenig skeptisch gegenüber stehe. Es scheint mir so, dass es sich dabei zwar durchaus um eine interessante Lösung handelt, die jedoch mal wieder in einer medialen Welle viel zu hoch gepriesen wird.

Für Webentwickler kann Cloud Computing jedoch ein paar interessante Vorteile bieten, die nicht von der Hand zu weisen sind. Vor allem die Idee, sich keine Gedanken mehr um die Serverkapazität und die Bereitstellung der Plattform einer Anwendung machen zu müssen, erscheint mir sehr attraktiv. Oft genug erlebt man es, dass Webseiten, die beispielsweise in einem Nachrichtenmagazin erwähnt werden, kurz nach dessen Veröffentlichung nicht mehr erreichbar sind, da die Server nicht dem Besucheransturm gewachsen waren. Solche ärgerlichen Ausfälle, bei dem wertvolle Benutzer verloren gehen, könnten in der „Cloud“ erfolgreich verhindert werden (Vorausgesetzt die Cloud ist entsprechend leistungsstark ;) ).

Der deutsche Anbieter cloudControl, der sich derzeit auf seinen Start vorbereitet, verspricht darüber hinaus noch einige Vorteile für die Entwickler selbst. Dazu zählen z.B. geringer Administrationsaufwand und Funktionen für die Teamarbeit. Neben den Sprachen PHP, Java und Python wird auch Ruby unterstützt, was für mich hochinteressant ist.
Ich bin sehr gespannt wie sich die Arbeit mit der Cloud letztendlich gestaltet und habe mich daher für die Beta-Phase registriert. Je nachdem wie sich das Thema für mich entwickelt, werde ich hier darüber berichten.

Share

Praktische Einzeiler In Ruby

Hier ein kurzer Tipp um den Quellcode in Rails bzw. Ruby etwas übersichtlicher zu gestalten.

In dem man in Ruby einer Anweisung eine Bedingung mittels if oder unless nachstellt, kann bestimmt werden, ob die Anweisung ausgeführt wird oder nicht.

Das heißt derartiger Code

  1. if @category_id == '1'
  2.    @title = 'Home'
  3. end

wird ersetzt durch:

  1. @title = 'Home' if @category_id == '1'

Bei Verwendung von unless statt if wird die Negativität der Bedingung geprüft.

Weiterhin können mit dem Schlüsselwort and zwei Anweisungen miteinander verknüpft werden.  Ich nutze das besonders oft um die Weiterleitung und die Übergabe einer Flash-Nachricht miteinander zu verbinden:

  1. flash[:error] = 'Objekt nicht gefunden' and redirect_to(index_path)
Share