Can't store UTF-8 in RDS despite setting up new Parameter Group using Rails on Heroku

前端 未结 2 1410
广开言路
广开言路 2021-02-10 14:46

I\'m setting up a new instance of a Rails(2.3.5) app on Heroku using Amazon RDS as the database. I\'d like to use UTF-8 for everything. Since RDS isn\'t UTF-8 by default, I set

2条回答
  •  长情又很酷
    2021-02-10 14:54

    Ultimately I solved my problem by adding the following in the Rails::Initializer.run block in the environment.rb

    class Rails::Configuration
      def database_configuration
        # Heroku overwrites the database.yml file without setting any encoding when deploying to outside server (like Amazon RDS)      
        require 'erb'
        YAML::load(ERB.new(IO.read(database_configuration_file)).result).each_value {|env| env.merge!({"encoding" => "utf8", "collation" => "utf8_general_ci"}) }
      end
    end
    

    Heroku overwrites the database.yml file and doesn't include any encoding or coalition settings. By hacking it thusly, the correct settings are always merged in before the database connection is made.

提交回复
热议问题