无法在Rails Admin(1.2.0)中加载UTF8Handler的Unicode表

时间:2018-01-15 09:40:37

标签: mongodb unicode rails-admin ruby-on-rails-5.1

我想将rails 3升级到rails 5.我使用mongodb作为数据库。我正在使用rails admin 1.2.0。我使用的是jruby-9.1.7.0。我是rails api唯一的应用程序。我的申请宝石如下。

gem 'rails', '~> 5.1.4'
gem 'awesome_print', '~> 1.8.0'
gem 'devise', github: 'plataformatec/devise', :branch => 'master', :ref => "463351922fdafb96c50ba2496c7d0adaa3223283"
gem "doorkeeper-mongodb", github: "doorkeeper-gem/doorkeeper-mongodb"
gem 'cancan', github: 'DevAVIJIT7/cancan', :branch => 'master', :ref => "aa3729bd79d92a993c5186f983eccd2fd496c2d3"
gem 'puma','~> 3.11.0'
gem 'mongoid', '6.2.1'
gem 'mongoid-tree', '~> 2.1.0'
gem 'rails_admin', '~> 1.2'

在我的路线中,rails admin mount path和initializer file看起来像

mount RailsAdmin::Engine => '/admin', :as => 'rails_admin'


RailsAdmin.config do |config|
  RAILS_ADMIN_BASE_PATH = 'godview' 

  config.main_app_name = Proc.new do |controller| 
    [ "Admin", "#{controller.params[:action].try(:titleize)}" ] 
  end

  config.authenticate_with do
    authenticate_or_request_with_http_basic('Login required') do |username, password|
      user = User.where(username: username).first
      if user && user.valid_password?(password) && user.role_names.include?("Super Admin")
        user
      else
        nil
      end  
    end
  end
end

当我在浏览器上运行http://localhost:3000/admin时,我收到错误消息。 enter image description here

在控制台中我正在

Started GET "/godview" for 0:0:0:0:0:0:0:1 at 2018-01-15 14:54:12 

+0530
Processing by RailsAdmin::MainController#dashboard as HTML
Completed 401 Unauthorized in 263ms



IOError (Couldn't load the Unicode tables for UTF8Handler (undefined method 

`call' for nil:NilClass
Did you mean?  caller), ActiveSupport::Multibyte is unusable):

我浏览了Rails: Couldn't load the Unicode tables for UTF8Handler链接但没有得到任何回复。

*注意:我在我的应用中使用/ admin作为/ godview。 感谢

1 个答案:

答案 0 :(得分:0)

我们在CentOS上使用Docker作为我们的rails项目,我们最近遇到了这个错误,我们通过在docker文件中明确指定C.UTF8编码来修复它,如下所示:

ENV LANG C.UTF-8

<强>编码
默认情况下,Ruby继承运行它的环境的语言环境。对于大多数在桌面系统上运行Ruby的用户来说,这意味着它可能会使用* .UTF-8(en_US.UTF-8等)的某些变体。但是,在Docker中,默认语言环境是C,可能会产生意外结果。如果您的应用程序需要与UTF-8交互,建议您通过-e LANG = C.UTF-8或ENV LANG C.UTF-8

显式调整图像/容器的区域设置。

<强>参考文献:
https://hub.docker.com/_/ruby/
https://oncletom.io/2015/docker-encoding/