2010-08-30 29 views
4

這裏是堆棧:Sproutcore 1.0.1046。 Ruby 1.9.1,在RVM中。薄1.2.7。雷神0.13.8。機架1.2.1。 Eventmachine 0.12.10。 Erubis 2.6.6。爲什麼我的Sproutcore開發服務器會丟失具有「US-ASCII中無效字節序列」的連接?

當我的任何應用程序啓動sc-server,我到這個服務器第一個請求會產生這個在控制檯日誌:

ArgumentError: invalid byte sequence in US-ASCII 

...其次是this stack trace。 (我列出了出現在上面堆棧跟蹤中的寶石,但是在堆棧跟蹤的同一要點中有一個完整的gemset列表。)

對錯誤消息的研究指出,這是Ruby 1.9的常見問題,但堆棧跟蹤表明問題出現在某處的某個寶石中。

我:

  • ,以獲得最新的gcc蘋果提供升級我的操作系統(Mac OS X的10.5至10.6)。
  • 重新安裝了RVM。
  • 重新安裝Ruby。
  • 重新安裝了所有相關的寶石。

但我仍然有這個問題在一個系統上,但沒有在另一個。 (注意有幾個開發人員在處理這個代碼,我是唯一一個看到這個問題的人,我99%確定它不是我們的代碼)。我想我說的是我清理並重建了一個很多寶石試圖隔離或消除這個小故障,但我仍然沒有擺脫它。

我應該在哪裏看下?

回答

5

你在你的bash環境中設置了ruby使用US-ASCII的一些特殊設置,這發生在我身上試圖從遠程終端執行sc-server ......我不確定它是什麼,但它不使用UTF-8,那是在遇到麻煩時。

+0

通過在bash中運行'env'命令,可以查看環境變量中的內容。或者通過檢查Ruby中的ENV哈希。 – AboutRuby 2010-08-30 07:15:28

+2

謝謝。我檢查了兩個系統上的環境,並且工作的環境有幾個'en_US.UTF-8'設置,並且沒有多個'en_US.us-ascii'設置。 LC_CTYPE環境變量似乎是關鍵,因爲在我的.bash_profile中設置它似乎可以解決問題而不會改變任何其他問題。 – pjmorse 2010-08-30 15:03:26

2

可以或許也會改變Encoding.default_external

1

感謝這麼多的Encoding.default_external建議。儘管正確設置了魔法註釋和環境變量,但我遇到了同樣的問題。在Rails 2.3.9我在application_controller.rb加入此的before_filter,解決了這個問題:

def set_encoding 
    Encoding.default_external = 'UTF-8' 
end 
+0

我的Mac OS X Lion開發環境中存在這個問題。 – richardsun 2011-12-18 01:27:39

1

我有同樣的問題與RSS訂閱我是在Rails 2.3.8應用程序使用Ruby 1.9.2顯示。我的問題沒有通過這裏提到的application_controller.rb before_filter技術解決。此修復程序是把下列 「RAILS_ROOT /配置/初始化/ string_encodings.rb」:

Encoding.default_external = 'UTF-8'

這爲我工作的站點範圍內,而不是在控制器級別上。

+0

我敢肯定,這將適用於Rails應用程序,但我遇到這個問題不是一個Rails應用程序。 – pjmorse 2011-03-24 02:21:17

1

對我而言,ArgumentError發生在Capistrano部署調用期間,該調用包含了ruby的net-ssh(ruby 1.9.2p290,net-ssh 2.3.0)。前面提到的解決方案沒有一個能夠起作用,也沒有其他理由我讀到目前爲止:即「密鑰文件中的奇怪字符」等。

最後,我在ASCII編碼的〜/ .ssh/config文件的註釋(!)行中發現了一個沒有ASCII字符。答對了!

相關問題