Ruby on Rails auf Open Solaris – invalid encoding (“ascii//ignore//translit”, “utf-8″)

 Nachdem Ruby on Rails auf OpenSolaris installiert wurde, kam es beim Anlegen eines Rails-Projekts zu folgender Fehlermeldung

jfischer@opensolaris2:~/rails$ rails test1
/usr/ruby/1.8/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/inflector.rb:275:in `iconv': invalid encoding ("ascii//ignore//translit", "utf-8") (Iconv::InvalidEncoding)
from /usr/ruby/1.8/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/inflector.rb:275:in `transliterate'
from /usr/ruby/1.8/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/inflector.rb:280
from /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/ruby/1.8/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support.rb:26
from /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/ruby/1.8/lib/ruby/gems/1.8/gems/rails-2.2.2/bin/../lib/rails_generator.rb:28
from /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
from /usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
from /usr/ruby/1.8/lib/ruby/gems/1.8/gems/rails-2.2.2/bin/rails:13
from /usr/ruby/1.8/bin/rails:19:in `load'
from /usr/ruby/1.8/bin/rails:19

Scheinbar ein Bug im Rails-Code, der durch eine Eigenheit der IConv Version verursacht wird, die mit Solaris ausgeliefert wird. Ursache ist dabei die fehlende Unterstützung des “ascii//ignore//translit“-Encodings.

Um überhaupt ein Rails-Projekt anlegen zu können, ist folgendes Provisorium möglich:

vi /usr/ruby/1.8/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/inflector.rb

Dort in der Zeile 275 ergänzt man ein begin-rescue um die folgende Zeile:
Iconv.iconv('ascii//ignore//translit', 'utf-8', string).to_s

So dass es dann wie folgt aussieht:

begin
Iconv.iconv('ascii//ignore//translit', 'utf-8', string).to_s
rescue Iconv::InvalidEncoding
end

Danach kann das Rails-Kommando ohne Unterbrechung ausgeführt werden. Es bleibt abzuwarten, ob sich der Fehler in irgendeiner Weise fortpflanzt.

Eine Reaktion zu “Ruby on Rails auf Open Solaris – invalid encoding (“ascii//ignore//translit”, “utf-8″)”

  1. THE COLORFUL WAYS » Blog Archive » Running Rails on OpenSolaris

    [...] some search on Google, I found solution over here, here, here, and here. Put in summary, to fix this bug – you just need to run following [...]