rmagick在服务器上找不到imagemagick

Jon*_*sco 6 ubuntu ruby-on-rails rmagick ruby-on-rails-3

我正在为ubuntu部署railsapp

rmagick通过"bundle install vendor"安装.它安装,应用程序运行 - 但这个错误被抛出:

uninitialized constant Image::Magick
Run Code Online (Sandbox Code Playgroud)

当试图阅读:

source_image = Magick::Image.read("#{Rails.root}/public/system/assets/#{self.id}/original/#{self.asset_file_name}").first
Run Code Online (Sandbox Code Playgroud)

我做了以下事情:

  • uninstsalled,然后重新安装,服务器上的ImageMagick
  • 卸载,然后重新安装,rmagick在服务器上
  • 卸载,然后重新安装,通过捆绑器rmagick
  • 仅运行捆绑器rmagick运行
  • 运行捆绑器和系统rmagick安装
  • 将nginx代理到rails-server以确保错误与乘客无关

我有点疯狂试图弄清楚我还能做些什么让rmagick看到imagemagick

Jon*_*sco 39

经过几个小时的战斗,并在不同的组合下重新编译imagemagick和rmagick,我幸运的是一线修复

的Gemfile

- gem 'rmagick'
+ gem 'rmagick', :require => 'RMagick'
Run Code Online (Sandbox Code Playgroud)

Bundler默认需要gem名称,

:require => 'rmagick'.

但是包含的文件实际上是'RMagick.rb'.对于不区分大小写的文件系统(如OS X),这将起作用,但对于区分大小写的文件系统(如Ubuntu),将无法找到该文件.

这可能是开发系统无法生成错误的原因之一,即使在生产模式下运行也是如此.