Thoughts on Technology, Methodology and Programming.

acts_as_attachment on $^@#$ windows

Posted by Marcus Wyatt on 16 August 2007

Why would you use windows to do this man?

Because I haven’t bought that nice shiny MacBook Pro yet… But enough of that… So I’m building this Rails app that needs to display images. So where do I look first, of course techno-weenie and the great tutorial from Mike Clark on File Upload Fu. So the long and short of this is the following:

I tried to get the local file system upload to work, but firstly I run into problems to install the ImageScience library. I not only using window operating system, but I’m running XP x64. So I even had issues finding make/nmake for 64 bit. So I decided to use RMagick.

Next, I installed RMagick and with a tweak to the rmagick_processor.rb file and by commenting the validates_as_attachment in my model class I was able to create the images on the file system. I’ve added the bang(!) operator to line 8. i.e. image.resize!(cols, rows)

   1: # Performs the actual resizing operation for a thumbnail
   2: def resize_image(img, size)
   3:   size = size.first if size.is_a?(Array) && size.length == 1 && !size.first.is_a?(Fixnum)
   4:   if size.is_a?(Fixnum) || (size.is_a?(Array) && size.first.is_a?(Fixnum))
   5:     size = [size, size] if size.is_a?(Fixnum)
   6:     img.thumbnail!(*size)
   7:   else
   8:     img.change_geometry(size.to_s) { |cols, rows, image| image.resize!(cols, rows) }
   9:   end
  10:   self.temp_path = write_to_temp_file(img.to_blob)
  11: end

Now I was on the hunt to solve the validation issue “Size is not included in the list”. Firstly I found this and this solutions, but neither solved the issue. Then I found this solution and great my issues is solved. Whoa!

Then I tried to change my storage to Amazon S3 and although the images are resized and uploaded, there was something wrong with them. Some images where mangled and other had no image. So now I was worried!

It turns out that there is a problem with the tempfile.rb within Ruby. So I found this solution and now I have a working solution. Awesome!

Damn windows…


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: