2013-07-31 56 views
1

看起來Nokogiri在使用UTF-8轉換nbsp字符時出現問題。我收集到這是與LibXML2相關的問題。 Nokogiri建議將LibXML2升級到2.7.7,而不是在Heroku上運行的2.7.6。Nokogiri在解析Heroku時添加字符

任何人都知道我可以在Heroku上使用LibXML2 2.7.7(或更高版本)嗎?

的問題如下 -

doc = Nokogiri::HTML("<html><p>Hi Hello</p></html>") 
doc.inner_html 
=> "<html><body><p>Hi Hello</p></body></html>" 

doc.inner_html = "<p>Hello&nbsp;World</p>" 
=> "<p>Hello&nbsp;World</p>" 

doc.inner_html 
=> "<p>Hello World</p>" 

看起來這是相關的:https://github.com/sparklemotion/nokogiri/issues/306

這並不是我的本地機器上發生。 Rails將'utf-8'設置爲config.encoding,並且呈現的頁面具有utf-8字符集元標記。

在我的本地機器上,我用limxml2 2.8.0運行Nokogiri 1.6,在Heroku上運行Nokogiri 1.6和libxml2 2.7.6。

謝謝。

+0

由於引入nokogiri目前REV是V1.6,它看起來像你的意思是libxml2的應該是2.7.7。 –

回答

0

不幸的是,Heroku不支持安裝額外的庫或二進制文件到堆棧。最好的解決方法是將這些供應商供應到您的項目中。您需要使用64位Linux版本才能在Heroku上運行;靜態編譯還可以幫助確保包含所需的任何依賴項。同樣,對於依賴外部圖書館的寶石,我們建議靜態編譯寶石並將寶石銷售到您的項目中。

如果您確實希望嘗試供應您的二進制,庫或gem,那麼您可以使用Heroku作爲構建環境。 Herokus的一位工程師創建了一個構建服務器,允許您上傳源代碼,運行編譯步驟,然後下載生成的二進制文件。你可以在Github上以「Vulcan」的名字找到這個項目。

下面有一個鏈接,更多的指令... https://devcenter.heroku.com/articles/buildpack-binaries

+0

有一種解決方法,可以在執行像text_node.replace(mangle(text_node.text))時爲我工作:https://github.com/sparklemotion/nokogiri/issues/458#issuecomment-3136620 –