이미지를 Redis에 저장하려고합니다. 나중에 이미지를 가져 와서 Resque 작업에서 이미지 서버에 업로드합니다.Rails에서 redis gem을 사용하여 Redis에서 이미지를 올바르게 저장할 수 없습니다.
ImageHandle 클래스는 이미지를 가져옵니다. 지금은 레디스에서 이미지를 가져 오는 것에 만 관심이 있습니다.
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.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
I 무슨 일이 벌어지고 있는지 전혀 몰라.
내가 ("B"* 81500)를 설정하고 그것을 점점 시도
, 내가 다시 당신이 내게 줄 수있는 어떤 도움 81500.감사의 예상 길이를 얻었다.
나를 위해 작동합니다. 아래 표에 대한 설명이 없습니까? – typeoneerror