Problem with require 'RMagick'

First, pardon me if this is not the right forum.

I'm banging my head on the wall for a day now with a RMagick installation issue.

I installed ImageMagick and RMagick both from source. They compiled with problems. (I had some issues with fonts, but that's over)

In the ruby console, this works :
Loading development environment (Rails 2.3.5)

require 'RMagick'

=> []

However, in my controller file the following command

require 'RMagick'
produces :

MissingSourceFile in ImagesController#serve_image

no such file to load -- RMagick
RAILS_ROOT: /srv/d_prod/www/cobra

Application Trace | Framework Trace | Full Trace
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:521:in `new_constants_in'
/opt/ruby-enterprise-1.8.7-2010.01/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:156:in `require'
/srv/d_prod/www/cobra/lib/image_tools.rb:1
/srv/d_prod/www/cobra/app/models/image.rb:17:in `thumbnail!'
/srv/d_prod/www/cobra/app/controllers/images_controller.rb:6:in `serve_image'

This error occurred while loading the following files:
   RMagick

After googling around, I tried the following:
- Install RMagick as a gem = no change
- Uninstall RMagick as a gem = no change
- change the require 'RMagick' to 'rmagick' = no change (actually worse as the same command in console will fail)
- add require 'rubygems' = no change

Anyone has a clue ?

Thanks,

Christophe

Please, people
Not use rMagic
It fucking machine will be eat all your memory

  1. get a machine with more memory, it’s working fine for us. If not, put them in a queue to be processed and handle the generation in the background - or on first request and cached.

  2. there’s not really any need for that language, is there? We’re all adults, but still…

  3. don’t just say “don’t use X” without suggesting a capable replacement Y (e.g. something that will work with a few lines of code with Paperclip)

Regards,

Andy

In the ruby console, this works :

Loading development environment (Rails 2.3.5)

require ‘RMagick’

=> []

However, in my controller file the following command

require ‘RMagick’

produces :

MissingSourceFile in ImagesController#serve_image

Weird that one works but the other doesn’t…

After googling around, I tried the following:

  • Install RMagick as a gem = no change

Did you add the config.gem line for RMagick to your environment.rb file and restart your Apache/server:

config.gem “rmagick”, :lib => “RMagick2”

You then shouldn’t need the require line in your code, it should just be available.

Cheers,

Andy

  1. rmagic - is an old bastard whose time has long thrown out and entirely adequate ruby community to forget

paperclip

mini_magic

Thanks a million !!!

You saved my day…

Although I really don’t understand what this little command does and why it’s there.

Anyway, even if I heard that I shouldn’t use RMagick, I can go on my project.

Christophe

Hey Ivan

Without going into cursing or blind statements, let me show you that you are blatantly wrong.

1) rmagic - is an old bastard whose time has long thrown out and entirely adequate ruby community to forget

RMagick is being used quite a lot still, depending on the requirements. It's not thrown out, it's in active development, and although it does use quite a bit of memory, some graphic processing just REQUIRES RMagick if you want to get something done. See bullet number 2.

2) paperclip, mini_magic

Great, now tell me how you will do the following with MiniMagic:

- Proportionally scale an incoming image to certain boundaries (so far so good for MiniMagic)
- Overlay the image with a transparent png to simulate the texture of a book on it
- Compose an image with the glossy scaled image from above and add a book corner in the top left, a book corner in the top right. Then stretch a repeating pattern across the top to make it look like a book
- Generate a reflection of the resulting image on a repeating background

MiniMagic won't get you past step one. If you think this is not a real-life example, here's the quick-and-dirty proof-of-concept of the project: http://mozaiek.bronnenwijzer.be/
RMagick is used, it's fast, it uses some memory, but nothing that our server can't handle and it's stable. And to be honest, this is even peanuts compared to some other graphic composing and processing we've done with it, but I can't show those private projects.

You could just have made your point by saying:
"If scaling an image is the only thing you need to do, it might be a good idea to look other options for the graphic processing, like FreeImage or mini_magic. Their memory requirements are not as high as RMagick and they will get the job done equally well."

Everything else you said basically tells you picked up something from the mailing lists in the past and it grew into an pointless and incorrect claim in your mind.

Best regards

Peter De Berdt

Thank you so much for this answer