Ruby on rails 升级到ruby 2.0后的Carrierwave/RMagick NoMethodError
我将我的应用程序从ruby 1.9.3升级到ruby 2.0,保留了我的大部分精华,无需升级。 一切正常,但当我尝试上载图像时,出现以下错误: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
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行加上摘录?