我試圖將圖像保存到Redis,Redis會在Resque任務中將其提取並上傳到我們的圖像服務器。無法在Redis中使用Rails中的redis gem正確保存圖像
ImageHandle類將爲我們獲取圖像。目前,我只關心如何獲取Redis中的圖像。
class ImageHandle < ActiveRecord::Base
attr_accessible :uploaded, :image
after_save :save_image
def image_data
$redis.get(redis_key)
end
def image=(value)
@image = value
end
private
def redis_key
@redis_key ||= "image_handle:#{id}:image"
end
def save_image
$redis.set(redis_key, @image.read)
end
end
其中$ redis的是在初始化設置:
$redis = Redis.new
這是我的測試文件:
require 'test_helper'
class ImageHandleTest < ActiveSupport::TestCase
include ActionDispatch::TestProcess
setup do
clear_redis
end
test 'saves an image' do
image = fixture_file_upload('screaming-eagle.jpg', 'image/jpg')
# You can only read from a file fixture once
same_image = fixture_file_upload('screaming-eagle.jpg', 'image/jpg')
image_handle = ImageHandle.create(image: image)
expected = same_image.read
actual = image_handle.image_data
puts "length of expected: #{expected.length}"
puts "length of actual: #{actual.length}"
assert_equal expected, actual
end
end
而且結果是:
length of expected: 81500
length of actual: 78524
F
Finished tests in 0.270385s, 3.6984 tests/s, 3.6984 assertions/s.
1) Failure:
test_saves_an_image:23
我不知道發生了什麼事。
,當我試圖設置(「B」 * 81500),然後得到它,我把它背在81500.
感謝任何幫助,您可以給我預期的長。
適合我。沒有解釋的投票? – typeoneerror 2016-08-03 00:03:13