Advancing further and further, obstacles soon start to present themselves.
This is part 3 of my little adventures in Ruby C extension land.
If you haven't read part 1 and 2, you might want to go back there.
So this was the path I chose. Maybe not the wisest choice, but most certainly the a wild ride.
The first thing I wondered when walking down the
dark, moonlit alley was where to even begin with
putting my C files. I had vaguely heard of the
ext directory, but nothing specific
about the directory structure.
Nor did I know if my Ruby files would have to move as well and whether or not I needed some special setup to make the gems work.
So I was pretty lost. And that after only walking 5 steps. But that's what JustDoIt Alley is: one big maze.
After reviewing my steady companion (the broad band internet access, remember?), I came up with some answers:
But let me clarify:
You will be hosting all your C code here. But
beware: for each .so/.dll file you want to create
you must have a separate sub-directory. So if
you want to have
ext/cranberry and put all your C code there.
This is the high priest of Ruby C. It knows all and it rules all, yet it is simple and humble -- sort of like a buddhist monk.
It's the gate-keeper for the compilation process since it's used to create the Makefile. (If you don't know what a Makefile is: It's a configuration file for make)
(NOTE: You could also use mkrf, which will generate Rakefiles instead of Makefiles)
If you want complicated: Read the documentation. But most of the time, easy will totally suffice, so here is all you need to put in your extconf.rb:
require 'mkmf' extension_name = 'cranberry' dir_config(extension_name) create_makefile(extension_name)
Just replace the cranberry with the juicy name you gave the ext directory above.
And that's it! Well -- at least for extconf. Now while you contemplate on my brilliant metaphor of the buddhist monk, I'll prepare the next part of this fantastic story.