Rails 3.x, Ruby 1.9.x + HAML = Terror?

Hi everyone,

It seems ruby_parser is required to parse HAML files for gettext msgids
with the gettext:find rake task from gettext. However, ruby_parser
doesn’t
seem to work on Ruby 1.9.x.

So is it impossible to extract gettext msgids with reasonably new Rubies
and HAML?

Cheers,

Ramn

Hi again,

Perhaps some more context. I’ve added the gems to my Gemfile as
instructed
here: https://github.com/grosser/gettext_i18n_rails

I’ve also added ruby_parser because that readme says it’s needed to
parse
HAML. Yet rake gettext:find explodes on any and all HAML files:

Error parsing app/views/admin/contexts/_form.html.haml
rake aborted!

parse error on value “}” (tRCURLY)
/home/rca/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/racc/parser.rb:349:in
on_error' /home/rca/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/racc/parser.rb:99:in_racc_do_parse_c’
/home/rca/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/racc/parser.rb:99:in
do_parse' /home/rca/.rvm/gems/ruby-1.9.2-p318/gems/ruby_parser-2.3.1/lib/ruby_parser_extras.rb:750:inprocess’
/home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext_i18n_rails-0.4.5/lib/gettext_i18n_rails/ruby_gettext_extractor.rb:55:in
run' /home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext_i18n_rails-0.4.5/lib/gettext_i18n_rails/ruby_gettext_extractor.rb:26:inparse_string’
/home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext_i18n_rails-0.4.5/lib/gettext_i18n_rails/haml_parser.rb:20:in
parse' /home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:140:inblock (2 levels) in parse’
/home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:134:in
each' /home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:134:inblock in parse’
/home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:132:in
each' /home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:132:inparse’
/home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:121:in
generate_pot' /home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:223:inblock in run’
/home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:221:in
open' /home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:221:inrun’
/home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools/rgettext.rb:243:in
rgettext' /home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext-2.2.0/lib/gettext/tools.rb:128:inupdate_pofiles’
/home/rca/.rvm/gems/ruby-1.9.2-p318/gems/gettext_i18n_rails-0.4.5/lib/gettext_i18n_rails/tasks.rb:28:in
block (2 levels) in <top (required)>' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:incall’
/home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in
block in execute' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:ineach’
/home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in
execute' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:158:inblock in invoke_with_call_chain’
/home/rca/.rvm/rubies/ruby-1.9.2-p318/lib/ruby/1.9.1/monitor.rb:201:in
mon_synchronize' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:151:ininvoke_with_call_chain’
/home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:144:in
invoke' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:116:ininvoke_task’
/home/rca/.rvm/gems/ruby-1.9.2-p318[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in
block (2 levels) in top_level' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:ineach’
/home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in
block in top_level' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:instandard_exception_handling’
/home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:88:in
top_level' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:66:inblock in run’
/home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in
standard_exception_handling' /home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:63:inrun’
/home/rca/.rvm/gems/[email protected]/gems/rake-0.9.2.2/bin/rake:33:in
<top (required)>' /home/rca/.rvm/gems/[email protected]/bin/rake:19:inload’
/home/rca/.rvm/gems/[email protected]/bin/rake:19:in `’
Tasks: TOP => gettext:find

The file it’s complaining about is:

https://github.com/zhdk/madek/blob/next/app/views/admin/contexts/_form.html.haml

It seems to be valid HAML, it works fine in our app.

Any ideas?

Cheers,

Ramn

Hi yet again,

Sorry for replying to my own post, but I found a workaround: It seems
that
ruby_parser cannot deal with Ruby 1.9 syntax yet, so if your HAML files
contain any Ruby 1.9 syntax in their Ruby, it will break gettext’s
gettext:find rake task (it relies on ruby_parser).

If ruby_parser ever starts supporting 1.9 syntax or if gettext starts
using
a different Ruby parser, this limitation could go away. So until then,
no
Ruby 1.9 in your HAML, even on Ruby 1.9.

Cheers,

Ramn

I love all of your recipes!

[image: Inline image 1]

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs