6

我正在将 railsapp 部署到 ubuntu

rmagick 是通过“bundle install vendor”安装的。它安装,应用程序运行 - 但这个错误被抛出:

uninitialized constant Image::Magick

尝试阅读时:

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

我做了以下事情:

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

我有点疯狂地想弄清楚我还能做些什么来让 rmagick 看到 imagemagick

4

2 回答 2

39

经过数小时的战斗和重新编译不同组合下的 imagemagick 和 rmagick 后,我幸运地修复了 1 行

宝石文件

- gem 'rmagick'
+ gem 'rmagick', :require => 'RMagick'

Bundler 默认需要 gem 名称,

:require => 'rmagick'

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

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

于 2010-12-30T19:17:32.043 回答
0

以特权gem install rmagick用户身份为我解决了这个问题。

不是一个真正有用的解决方案,但我想在我的情况下,我实际上并没有正确安装 RMagick,即使 bundler 认为我这样做了。

于 2014-01-16T16:27:30.220 回答