我在我的 Ruby on Rails 应用程序中使用带有 RMagick 的 Carrierwave。在开发中一切正常,但在我的暂存环境中,我遇到了一些问题。
我将其追踪到 RMagick 似乎存在问题,丢失了传递给它的部分文件路径。这是我的 rails 控制台的一些输出
require 'RMagick'
=> true
# Prove the file exists
File.open('/tmp/logo.png')
=> #<File:/tmp/logo.png>
# Cant find it with RMagick
Magick::Image::read('/tmp/logo.png').first
=> Magick::ImageMagickError: unable to open file `o.png' @ error/png.c/ReadPNGImage/3698
# Unless I add some characters at the start of my filepath (anything will do)
Magick::Image::read('12345678/tmp/logo.png').first
=> 0x200=>200x100 4634766966517661696x200+100+0 DirectClass 8-bit 6kb
我曾尝试深入研究 RMagick 的源代码,但没有取得多大成功。我希望有人可以建议可能出了什么问题。
我曾尝试重新编译 ImageMagick 并多次重新部署代码。
我们使用 rvm、Ruby 1.9.2、Rails 3.2.11 并使用 Capistrano 进行部署。