我有一个小型Rails应用程序,它使用Nokogiri来解析另一个站点上的XML文件。在当地,一切正常。
然而,当我将应用程序部署到Heroku时,事情很快就会破裂 - 我不断收到错误no such file or directory - <my url>
基本上,我的代码中的行是
doc = Nokogiri::XML(open("http://www.w3schools.com/xml/note.xml"))
真正的网址是不同的,但我很困惑为什么本地运行没有问题,但Heroku无法处理它。
答案 0 :(得分:2)
open-uri
可能会根据您的请求创建Tempfile
(而不是String
)。 Heroku在访问文件系统时有一些限制,可能无法识别您的临时文件。尝试:
url_text = Net::HTTP.get(URI.parse "http://www.w3schools.com/xml/note.xml")
doc = Nokogiri::XML(url_text)
编辑:没关系,看起来Heroku与Tempfile
一起工作就好了。您可能只需要在Rails初始化过程中的某个地方require 'open-uri'
(例如application.rb
)。如果仍然无效,请尝试上面的代码行。