zagadnienie nie bardzo railsowe - raczej czysty ruby;
eval("def a; puts 'jestesmy w metodzie o nazwie podanej'; end;")
eval("a")
Taki kod bez polskich znaków działa dobrze. Jeśli jednak dorzucimy do stringa polskie litery wywala błąd:
2.rb:1: invalid multibyte char
2.rb:1: invalid multibyte char
2.rb:1: syntax error, unexpected $end, expecting ‘)’
…w metodzie o nazwie podanej ółś’; end;")
Jestem na ubuntu 8.10, ruby1.9 - sprawa jest o tyleż ciekawsza że na macu taki kod działa bez zarzutu… (dzięki czak ). Czegoś tu nie rozumiem
Domyślnym kodowaniem, przy odczytywaniu plików *.rb przez interpreter, jest US-ASCII (przynajmniej w Ubuntu). Jeśli chcesz dodać jakiś inny znak, musisz umieścić tzw. “magic comment” z nazwą kodowania jakiego używasz:
#coding:UTF-8
eval("def a; puts 'jesteśmy w metodzie o nazwie podanej'; end;")
eval("a")
edit: możesz napisać w jaki sposób odpalasz kod? Która wersja Rubiego?
edit2: teraz dopiero zauważyłem, że odpalasz to z pliku “2.rb”.