我正在将 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
- 卸载,然后重新安装,通过 bundler rmagick
- 仅在安装了 bundler rmagick 的情况下运行
- 在安装了 bundler 和系统 rmagick 的情况下运行
- 将 nginx 代理到 rails-server 以确保错误与 passenger 无关
我有点疯狂地想弄清楚我还能做些什么来让 rmagick 看到 imagemagick
最佳答案
经过几个小时的斗争并在不同的组合下重新编译 imagemagick 和 rmagick,我幸运地修复了 1 行
gem 文件
- gem 'rmagick'
+ gem 'rmagick', :require => 'RMagick'
Bundler 默认需要 gem 名称,
即:require => 'rmagick'
。
但被包含的文件实际上是“RMagick.rb”。对于不区分大小写的文件系统,如 OS X,这将起作用,但对于 区分大小写 的文件系统,如 Ubuntu,将找不到该文件。
这可能是即使在生产模式下运行时也无法在开发系统上产生错误的原因之一。
关于ruby-on-rails - rmagick 不会在服务器上找到 imagemagick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4513684/