рельсы сессионного магазина и UTF8 - PullRequest
2 голосов
/ 12 сентября 2011

У меня проблема с магазином сессий rails и UTF8. Кажется, когда я сохраняю некоторую переменную из Omniauth в моем сеансе, я получаю ASCII-8BIT впоследствии.

У меня установлен файл UTF8 в моем файле application.rb, и UFT8 отлично работает везде.

application.rb

config.encoding = "utf-8"

session_store.rb

Wombieapp::Application.config.session_store :cookie_store, :key => '_wombieapp_session'

в дикой природе

last_name.encoding.name
"UTF-8"

Использование Rails 3.0.10.

Возвращение ASCII-8BIT из сеанса

omniauth: {"provider"=>"google_apps", "uid"=>"https://www.google.com/accounts/o8/id?
id=AItOawlx217kz5Tkid0sq5_jIzHGQKupMDI6COc", 
"user_info"=>{"email"=>"someemail@gmail.com", "first_name"=>"Joe", 
"last_name"=>"Mc\xC3\x99isnean", "name"=>"Joe Mc\xC3\x99isnean"}}

Должно быть (оригинал до сессии):

"omniauth"=>
  {"user_info"=>
    {"name"=>"Joe McÙisnean",
     "last_name"=>"McÙisnean",
     "first_name"=>"Joe",
     "email"=>"someemail@gmail.com"},
   "uid"=>
    "https://www.google.com/accounts/o8/id?id=AItOawnQmfdfsdfsdfdsfsdhGWmuLTiX2Id40k",
   "provider"=>"google_apps"}

Gemfile

#core
gem 'rails', '3.0.10'
gem 'pg', '0.11.0'
gem 'simple_form'
gem 'client_side_validations'

#authorization
#gem 'devise', '1.4.2'
gem 'devise', '1.2'
gem 'omniauth', '0.2.6'
gem 'rails_admin', :git => 'git://github.com/sferik/rails_admin.git', :branch => 'rails-3.0'

#heroku
gem 'heroku'
gem 'redcarpet'
gem 'resque', '~> 1.17.1', :require => 'resque/server'
gem 'resque-meta', '1.0.3'
gem 'resque-async_deliver'
gem 'resque-heroku-autoscaler', '~> 0.2.3'

Также попытался добавить кодировку в environment.rb

environment.rb

Encoding.default_internal = 'UTF-8'
Encoding.default_external = 'UTF-8'

# Initialize the rails application
Wombieapp::Application.initialize!

Я также пытался вставить его в сеанс вручную

session[:omniauth] = {"user_info"=> {"name"=>"Joe McÙisnean", "last_name"=>"McÙisnean", "first_name"=>"Joe", "email"=>"someemail@gmail.com"}}

и получил ошибку ASCII

SyntaxError in Users::OmniauthCallbacksController#google_apps

/Users/holden/Code/wombie/app/controllers/users/omniauth_callbacks_controller.rb:30: invalid multibyte char (US-ASCII)
/Users/holden/Code/wombie/app/controllers/users/omniauth_callbacks_controller.rb:30: invalid multibyte char (US-ASCII)
/Users/holden/Code/wombie/app/controllers/users/omniauth_callbacks_controller.rb:30: syntax error, unexpected $end, expecting '}'
...user_info"=> {"name"=>"Joe McÙisnean", "last_name"=>"McÙis..
...