Friday, January 19, 2007

ковыряя Ruby on Rails

Интересный сюжет - рубин на рельсах (почти Анна Каренина :)

пока что мало разобрался, но достаточно, чтобы понять, что это хорошо.
я себе делал php классы, в некоторой степени похожие по идеям на скафолдинг.
Конечно у меня масштаб не тот, но sapienti sat (было до некоторой поры :)

Спешу поделиться тем, что заставил близко общаться ror и mysql на юникоде (utf8)
необходимость была: русские и немецкие буковки хотелось вместе увидеть.
И вообще, unicode - это по-нашему по-косматополитичному, все прочие народы и языки - отстой.


Rails 1.x +
mysql 4.1 +
Если кратко, сделать надо следующее:
Редактируем файлы проекта
1. config/database.yml
добавить строчку в настройке баз что база utf
encoding: utf8

2. app/controller/application.rb
добавить в класс ApplicationController
before_filter :set_charset
def set_charset
suppress(ActiveRecord::StatementInvalid) do
ActiveRecord::Base.connection.execute 'SET NAMES UTF8'
ActiveRecord::Base.connection.execute 'set character_set_client=\'utf8\''
ActiveRecord::Base.connection.execute 'set character_set_results=\'utf8\''
ActiveRecord::Base.connection.execute 'set character_set_connection=\'utf8\''
ActiveRecord::Base.connection.execute 'set collation_connection=\'utf8_general_ci\''
end

if request.xhr?
@headers['Content-Type'] = 'text/javascript; charset=utf-8'
else
@headers['Content-Type'] = 'text/html; charset=utf-8'
end
end

Вот, теперь ror и mysql любят друг друга.

остальное тоже нужно юникодить.
как? смотреть здесь:
http://ruby.org.ee/wiki/Unicode_in_Ruby/Rails
http://wiki.rubyonrails.com/rails/pages/HowToUseUnicodeStrings
http://www.dotmana.com/index.php/?p=95 (en français :)