Very strange problem with Gettext and Haml / rake updatepo


I'm on Rails 2.3.3 and using Haml 2.0.9 for my templates and
Gettext-Rails 2.0.4 for the translation. Haml works like a charm and
gettext is also working like it should.

But I cant get Gettext to parse Haml Files when using "rake updatepo". I
created a custom parser like this:

# lib/haml_parser.rb
require 'gettext_rails/tools'
require 'haml'
# Haml gettext parser
module HamlParser

  def target?(file)
    File.extname(file) == ".haml"

  def parse(file, ary = [])
    haml =
    code = haml.precompiled.split(/$/)
    GetText::RubyParser.parse_lines(file, code, ary)


My Rakefile looks like this:

# Rakefile
require(File.join(File.dirname(__FILE__), 'config', 'boot'))

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'

require 'tasks/rails'

desc "Create mo-files for L10n"
task :makemo do
  require 'gettext_rails/tools'
  GetText.create_mofiles(true) #(true, "po", "locale")

desc "Update pot/po files to match new version."
task :updatepo do
  require 'gettext_rails/tools'
  require 'haml_parser'
  MY_APP_VERSION = "APP 1.1.0"

This follows the known approach for parsing Haml files ( ).

The problem: No MessageIds are recognized from my Haml files. I checked
with "puts" in the Haml-Parser if it tried the right files, could parse
them and so on. Everything seemed to be fine, it just recognize anything
and always returned only the already found msgids and for the Haml file
an empty Array.

The strange thing: When I enter this in my console, everything works:

$$ script/console
Loading development environment (Rails 2.3.3)

require 'gettext_rails/tools'

=> []

require 'haml'

=> []

file = "app/views/sessions/new.haml"

=> "app/views/sessions/new.haml"

haml =

=> #<Haml::Engine:0x4254104 @tab_change=0, @block_opened=false, @inden

code = haml.precompiled.split(/$/)

=> [" content_for :head do;", "\nhaml_temp = stylesheet_link [...]

GetText::RubyParser.parse_lines(file, code, [])

=> [["Login", "app/views/sessions/new.haml:4"], [...]

As you can see everything works here (I left out the long returns). I'm
kind of freaking out why this isn't the case in my Rake Task.

Anyone has an idea? You would really make me a happy Nerd!