The answer is in the image.combine_options block:
begin
image = MiniMagick::Image.open(params[:avatar_file].path)
unless image.valid?
raise nil
end
rescue
return head :not_acceptable
end
image.format 'jpeg'
image.combine_options do |c|
c.resize '128x128^'
c.gravity 'center'
c.extent '128x128'
end
image.write dir.to_s + current_user.id.to_s + '_128x128.jpg'
ImageMagick variant:
convert stock.jpg -resize 128x128^ -gravity center -extent 128x128 result.jpg