Eval

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 :slight_smile: ). Czegoś tu nie rozumiem :frowning:

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”.

Przy wskazaniu kodowania działa ok, dzięki.