has_image 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 2008-08-19 Norman Clarke <norman@randomba.org>
2
+ * Made storage work more correctly with tempfiles.
3
+
1
4
  2008-08-18 Norman Clarke <norman@randomba.org>
2
5
  * Fixed ability to set the path for storing image files.
3
6
 
@@ -31,7 +31,7 @@ module HasImage
31
31
  # names, and they end up being hard to manipulate on the command line.
32
32
  # This also helps prevent a possibly undesirable sitation where the
33
33
  # uploaded images have offensive names.
34
- def random_file_name
34
+ def generated_file_name
35
35
  Zlib.crc32(Time.now.to_s + rand(10e10).to_s).to_s(36).downcase
36
36
  end
37
37
 
@@ -51,7 +51,7 @@ module HasImage
51
51
  @temp_file = image_data
52
52
  else
53
53
  image_data.rewind
54
- @temp_file = Tempfile.new 'has_image_data_%s' % Storage.random_file_name
54
+ @temp_file = Tempfile.new 'has_image_data_%s' % Storage.generated_file_name
55
55
  @temp_file.write(image_data.read)
56
56
  end
57
57
  end
@@ -77,10 +77,10 @@ module HasImage
77
77
  # Invokes the processor to resize the image(s) and the installs them to
78
78
  # the appropriate directory.
79
79
  def install_images(id)
80
- random_name = Storage.random_file_name
81
- install_main_image(id, random_name)
82
- install_thumbnails(id, random_name) if !options[:thumbnails].empty?
83
- return random_name
80
+ generated_name = Storage.generated_file_name
81
+ install_main_image(id, generated_name)
82
+ install_thumbnails(id, generated_name) if !options[:thumbnails].empty?
83
+ return generated_name
84
84
  ensure
85
85
  @temp_file.close! if !@temp_file.closed?
86
86
  @temp_file = nil
@@ -137,7 +137,10 @@ module HasImage
137
137
  def install_main_image(id, name)
138
138
  FileUtils.mkdir_p path_for(id)
139
139
  main = processor.resize(@temp_file, @options[:resize_to])
140
- main.write(File.join(path_for(id), file_name_for(name)))
140
+ main.tempfile.close
141
+ file = File.open(File.join(path_for(id), file_name_for(name)), "w")
142
+ file.write(IO.read(main.tempfile.path))
143
+ file.close
141
144
  main.tempfile.close!
142
145
  end
143
146
 
@@ -148,7 +151,10 @@ module HasImage
148
151
  path = File.join(path_for(id), file_name_for(name))
149
152
  options[:thumbnails].each do |thumb_name, size|
150
153
  thumb = processor.resize(path, size)
151
- thumb.write(File.join(path_for(id), file_name_for(name, thumb_name)))
154
+ thumb.tempfile.close
155
+ file = File.open(File.join(path_for(id), file_name_for(name, thumb_name)), "w")
156
+ file.write(IO.read(thumb.tempfile.path))
157
+ file.close
152
158
  thumb.tempfile.close!
153
159
  end
154
160
  end
data/test/storage_test.rb CHANGED
@@ -25,8 +25,8 @@ class StorageTest < Test::Unit::TestCase
25
25
  HasImage::Storage.partitioned_path(867792731)
26
26
  end
27
27
 
28
- def test_random_file_name
29
- assert_match(/[a-z0-9]{4,6}/i, HasImage::Storage.random_file_name)
28
+ def test_generated_file_name
29
+ assert_match(/[a-z0-9]{4,6}/i, HasImage::Storage.generated_file_name)
30
30
  end
31
31
 
32
32
  def test_path_for
@@ -61,7 +61,8 @@ class StorageTest < Test::Unit::TestCase
61
61
  end
62
62
 
63
63
  def test_install_and_remove_images
64
- @storage = HasImage::Storage.new(default_options)
64
+ @storage = HasImage::Storage.new(default_options.merge(:thumbnails => {
65
+ :one => "100x100", :two => "200x200"}))
65
66
  @storage.image_data = temp_file("image.jpg")
66
67
  assert @storage.install_images(1)
67
68
  assert @storage.remove_images(1)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_image
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Norman Clarke
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-18 00:00:00 -03:00
12
+ date: 2008-08-19 00:00:00 -03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency