:: Magick在应用程序中无法理解(Rmagick)

时间:2014-09-19 17:54:05

标签: ruby-on-rails ruby imagemagick rmagick

我创建了一个独立的ruby文件并成功在控制台上运行以确保Rmagick正在工作。但是,当我尝试在我的rails应用程序中使用相同的代码时,它很遗憾无效

这是我的模特

 class Provider < ActiveRecord::Base
     def crop_photo(url, x, y, w, h)
       image =  Magick::Image.new
       urlimage = open(url)
       image.from_blob(urlimage.read)
       crop = image.crop(x,y,w,h)
       crop.write('pool_cropped.jpg')
     end
 end

控制器

 class ProvidersController < ProviderApplicationController

     def crop
       @provider = current_provider
       coordinates = params["cordinates"]
       image_path = params["path"]
       w = coordinates[0][0]
       h = coordinates[0][1]
       x = coordinates[0][2]
       y = coordinates[0][3]
       @provider.crop_photo(image_path, x, y, w, h)
       redirect_to root_path
     end
  end

我尝试过要求RMagick,但是rails会返回一个错误页面,说无法加载这样的文件

这是我尝试裁剪时得到的错误

    Completed 500 Internal Server Error in 4.9ms

    NameError (uninitialized constant Provider::Magick):
    app/models/provider.rb:43:in `crop_photo'
   app/controllers/providers_controller.rb:56:in `crop'

有什么建议吗?我正在使用Mac OSX,因此它不区分大小写

1 个答案:

答案 0 :(得分:0)

您需要将require放入您的提供者(模型)类中。

首先:检查您的Gemfile行:gem 'rmagick'

然后,捆绑安装

最后,

require 'RMagick'
class Provider < ActiveRecord::Base
     def crop_photo(url, x, y, w, h)
       image =  Magick::Image.new
       urlimage = open(url)
       image.from_blob(urlimage.read)
       crop = image.crop(x,y,w,h)
       crop.write('pool_cropped.jpg')
     end
end