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.
Am 7. März 2009 um 17:11 Uhr
[...] 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 [...]