Heroku和Rails:如何将utf-8设置为默认编码

今天,我创建了一个工作应用程序的副本,它在Heroku上完美运行,并尝试将其部署在Heroku上作为新项目的起点。

我将新文件夹添加为git存储库,在GitHub上创建了一个新的远程存储库,编辑了配置文件并为数据库提供了新名称,创建了新数据库并尝试在Heroku上部署。

现在应用程序在启动时崩溃了,因为Heroku在我的源文件中发现了一些utf-8文本并且无法识别它们:

2011-06-27T14:23:10+00:00 app[web.1]: /app/app/controllers/home_controller.rb:118: invalid multibyte char (US-ASCII) 2011-06-27T14:23:10+00:00 app[web.1]: /app/app/controllers/home_controller.rb:118: syntax error, unexpected $end, expecting '}' 2011-06-27T14:23:10+00:00 app[web.1]: ...tue azioni, conquista la città!"} 

如何告诉Rails和Heroku我的所有源文件都是utf-8编码的? 我应该在每个文件中添加UTF-8 BOM吗? 这很疯狂,我在之前的应用程序中没有这样做,效果很好。

我正在使用Rails 2.3.6。

在你的config / application.rb中,

  config.encoding = "utf-8" 

在database.yml中,

  development: adapter: mysql2(whatever your db) host: localhost encoding: utf8 

你还必须添加(包括哈希)

 # encoding: UTF-8 

来源: http : //craiccomputing.blogspot.com/2011/02/rails-utf-8-and-heroku.html

我找到了这个更简单的解决方案:

只需将ENV['RUBYOPT'] = "-Ku"到Heroku上的环境变量中即可。 你可以用figaro gem做到这一点 :

  1. gem "figaro"添加到您的Gemfile
  2. bundle install
  3. config/application.yml插入此代码:

     production: RUBYOPT: "-Ku" 
  4. rake figaro:heroku

此外,您可以尝试使用magic_encoding gem ,但我不喜欢这种方法。