imagemagick - mini_magick tmp文件错误Ruby on Rails

时间:2013-06-28 04:06:29

标签: ruby-on-rails imagemagick tmp minimagick

新手Rails编码器在这里....花了太多时间试图找出任何想法?

以下脚本适用于我的开发机器,但在生产中失败。在此脚本失败后 - 当我检查/ tmp文件夹时,“mini_magick20130627-17452-1k48fim.png”文件实际上就在那里。 ImageMagick转换和调整大小也可以从命令行按预期工作。

## resize screenshot
## wrapper for imagemagick
require 'mini_magick'

webthumb = MiniMagick::Image.open(thumbnail_image_path)
webthumb.crop('1024x768+0+0') # width, height, top, left
webthumb.resize('250x188') # width, height
# If you want to save this image use following
webthumb.write(thumbnail_image_path)

Errno ::在SitesController中的ENOENT #create

没有这样的文件或目录 - 识别-quiet -ping /tmp/mini_magick20130627-17452-1k48fim.png

4 个答案:

答案 0 :(得分:1)

这是另一个有效的答案。

编辑development.rb(如果要与乘客一起运行)和production.rb
添加到文件底部

  ENV['PATH'] = "/usr/local/bin:#{ENV['PATH']}"

Got it from this reference: Passenger + Carrierwave + Rails

答案 1 :(得分:0)

我会回答我自己的问题,因为其他人可能会看到此错误。这个问题与Phusion Passenger(在Apache下)处理环境变量的方式有关。我在这里使用Apache + Phusion Passenger服务器。

我通过将ImageMagick路径变量放入我的apache httpd-vhosts.conf文件来解决了这个问题:

<VirtualHost *:80>
...
SetEnv LD_LIBRARY_PATH /usr/local/lib
SetEnv MAGICK_HOME /usr/local/lib/ImageMagick-6.8.6
SetEnv DYLD_LIBRARY_PATH $MAGICK_HOME/lib
SetEnv PATH $MAGICK_HOME/bin:/usr/local/bin/:$PATH
...
</virtualhost>

此处提供更多信息 -

来自:http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/

但是等等,我已经在/ etc / bashrc或/ etc / profile中设置了环境变量。他们为什么不工作?

如果您在/ etc / bashrc或/ etc / profile中设置了环境变量,那么这些环境变量可以在shell中使用。但是,在大多数操作系统上,Apache不是从shell启动的,并且不加载bashrc / profile中定义的环境变量,这就是为什么在/ etc / bashrc和/ etc / profile中设置环境变量通常对Apache没有影响(和通过归纳,乘客和铁路流程)。

答案 2 :(得分:0)

您在configure.xml中设置了ImageMagick参数: http://imagemagick.org/script/resources.php

他们拥有的示例不包含tmp目录,但您使用MAGICK_TEMPORARY_PATH: http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=22311 (上一篇文章)

答案 3 :(得分:0)

我无法使用$PATH这样的内容设置我的SetEnv PATH "$PATH:...,但我找到了一种方法让它发挥作用。

在我的vhost配置文件中,我将/usr/local/bin添加到$PATH(这是图像magick的二进制文件所在的位置),但我还指定了所有其他$PATH,以便一切正常:

SetEnv PATH "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"