Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 升级到ruby 2.0后的Carrierwave/RMagick NoMethodError_Ruby On Rails_Ruby_Carrierwave_Rmagick_Ruby 2.0 - Fatal编程技术网

Ruby on rails 升级到ruby 2.0后的Carrierwave/RMagick NoMethodError

Ruby on rails 升级到ruby 2.0后的Carrierwave/RMagick NoMethodError,ruby-on-rails,ruby,carrierwave,rmagick,ruby-2.0,Ruby On Rails,Ruby,Carrierwave,Rmagick,Ruby 2.0,我将我的应用程序从ruby 1.9.3升级到ruby 2.0,保留了我的大部分精华,无需升级。 一切正常,但当我尝试上载图像时,出现以下错误: NoMethodError - undefined method `[]=' for nil:NilClass: app/uploaders/image_uploader.rb:91:in `block in optimize' /home/stefpe/.rvm/gems/ruby-2.0.0-p195@Lefkada/bundler/gems

我将我的应用程序从ruby 1.9.3升级到ruby 2.0,保留了我的大部分精华,无需升级。 一切正常,但当我尝试上载图像时,出现以下错误:

NoMethodError - undefined method `[]=' for nil:NilClass:
  app/uploaders/image_uploader.rb:91:in `block in optimize'
  /home/stefpe/.rvm/gems/ruby-2.0.0-p195@Lefkada/bundler/gems/carrierwave-5ee108128b40/lib/carrierwave/processing/rmagick.rb:263:in `manipulate!'
  app/uploaders/image_uploader.rb:90:in `optimize'
  /home/stefpe/.rvm/gems/ruby-2.0.0-p195@Lefkada/bundler/gems/carrierwave-5ee108128b40/lib/carrierwave/uploader/processing.rb:85:in `block in process!'
  /home/stefpe/.rvm/gems/ruby-2.0.0-p195@Lefkada/bundler/gems/carrierwave-5ee108128b40/lib/carrierwave/uploader/processing.rb:81:in `each'
  /home/stefpe/.rvm/gems/ruby-2.0.0-p195@Lefkada/bundler/gems/carrierwave-5ee108128b40/lib/carrierwave/uploader/processing.rb:81:in `process!'
  /home/stefpe/.rvm/gems/ruby-2.0.0-p195@Lefkada/bundler/gems/carrierwave-5ee108128b40/lib/carrierwave/uploader/callbacks.rb:18:in `block in with_callbacks'
  /home/stefpe/.rvm/gems/ruby-2.0.0-p195@Lefkada/bundler/gems/carrierwave-5ee108128b40/lib/carrierwave/uploader/callbacks.rb:18:in `each'
  /home/stefpe/.rvm/gems/ruby-2.0.0-p195@Lefkada/bundler/gems/carrierwave-5ee108128b40/lib/carrierwave/uploader/callbacks.rb:18:in `with_callbacks'
image_uploader.rb基于/carrierwave/processing/rmagick.rb示例
操纵
函数:

  def optimize
    manipulate! do |img, index, options|
      options[:write] = {
    :quality => 50,
    :depth => 8,
    :interlace => "Magick::PlaneInterlace"
      }
      img.strip!
    end
  end
配置: 服务器:heroku,本地开发人员:linux

ruby 1.9.3->2.0

轨道3.2.13

carrierwave 0.6.2

rmagick 2.13.1

雾1.3.1

你知道为什么ruby-2.0.0不兼容吗

提前谢谢你

我做到了: sudo apt get安装libmagickwand dev

然后 gem安装rmagick

成功了。 见:

您应该尝试更新一些gems carrierwave在2012年4月可能与ruby 2不完全兼容


进一步的激励:Carrierwave甚至将选项传递到传递给
Operate的块中直到。

对我有效的方法是在操作结束时返回图像! 就你而言:

def optimize
  manipulate! do |img, index, options|
    options[:write] = {
      :quality => 50,
      :depth => 8,
      :interlace => "Magick::PlaneInterlace"
    }
    img.strip!
    img
  end
end

你们能不能像错误消息所说的那个样,在第91行加上摘录?