我正在开发一个使用Sitespec的项目,这是一个使用RSpec的静态站点生成器,并使用任何Rack应用程序。我选择Padrino作为Sitespec的Rack应用程序。
然后,当我rspec
类型的某些网址Content-type: image/png
时,我收到以下错误。
Failures:
1) Sitespec GET public/images/simple-image1.png Generate a static image public/images/simple-image1.png
Failure/Error: pathname.write(response.body)
Encoding::UndefinedConversionError:
"\x89" from ASCII-8BIT to UTF-8
Pathname.write(response.body)
将尝试将其转换为UTF-8。
但是当我使用Sinatra而不是Padrino时,错误不会发生。
我制作了简单的样本项目进行比较:
问题:为什么Padrino项目失败,如何修复错误?
顺便说一句,做猴子补丁
module Sitespec
class Artifact
def generate_file
pathname.binwrite(response.body)
end
end
end
消除了错误。 (将Pathname#write
替换为Pathname#binwrite
。)