【问题标题】:Heroku and Rails: how to set utf-8 as the default encodingHeroku 和 Rails:如何将 utf-8 设置为默认编码
【发布时间】:2011-06-27 14:40:23
【问题描述】:

今天,我创建了一个可以在 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。

【问题讨论】:

    标签: ruby-on-rails heroku


    【解决方案1】:

    在你的 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

    【讨论】:

    • 谢谢 Felix,我有 2 个问题: 1. 在 Rails 2.3.6 中我没有 config/application.rb ,我应该把 config.encoding = "utf-8" 放在哪里? 2.我应该把“# encoding: UTF-8”放在哪里?在每个文件的顶部?
    • 哦,如果是 rails 2.3,您可以将它们添加到 environment.rb 中,并且您必须将 #encoding: utf-8 添加到要存储值的模型中。
    【解决方案2】:

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

    只需将 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,但我不喜欢这种方法。

    【讨论】:

      猜你喜欢
      • 2014-03-15
      • 2012-03-10
      • 2012-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 2010-10-17
      • 2015-04-14
      相关资源
      最近更新 更多