2011-06-27 65 views
4

今天,我創建了一個工作應用的副本,該應用在Heroku上完美運行,並試圖將其部署到Heroku上,作爲新項目的起點。Heroku and Rails:如何將utf-8設置爲默認編碼

我添加了新的文件夾作爲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。

回答

10

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

+1

感謝Felix,我有兩個問題:1.在Rails 2.3.6中我沒有config/application.rb,我應該在哪裏放置config.encoding =「utf-8」? 2.我應該在哪裏放置「#編碼:UTF-8」?在每個文件的頂部? – Augusto

+0

哦,對於rails 2.3,您可以將它們添加到environment.rb,並且您必須將#encoding:utf-8添加到要存儲值的模型中。 – felix

+0

看看這裏:http://blog.kennejima.com/post/835166063/making-ruby-1-9-rails-2-3-to-play-nice-with-utf-8 –

1

我發現這個更簡單的解決方案:

只需在你的環境變量上加上ENV['RUBYOPT'] = "-Ku"即可。你可以用figaro gem做到這一點:

  1. 添加gem "figaro"Gemfile
  2. bundle install
  3. 插入這段代碼config/application.yml

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

另外,您可以嘗試magic_encoding gem,但我不喜歡這種方法。

相關問題