# Module inheritance and private methods

**URL:** <https://www.ruby-forum.com/t/module-inheritance-and-private-methods/158569>\
**Category:** Rails\
**Created:** [January 25, 2009, 12:44am UTC](https://www.ruby-forum.com/t/module-inheritance-and-private-methods/158569 "2009-01-25T00:44:00Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![folkbaroque](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/fbc32d/32.png) [@folkbaroque](https://www.ruby-forum.com/u/folkbaroque)\
**Post date:** [January 25, 2009, 12:44am UTC](https://www.ruby-forum.com/t/module-inheritance-and-private-methods/158569/1 "2009-01-25T00:44:00Z")

</div>

I’m puzzling through the nuances of Ruby’s module inclusion mechanism,  
both inside and outside of Rails.

Forgive the long text, but the behavior is truly strange and I don’t  
know what to make of it.

I wrote some software that uses a 3rd party library (midilib) to convert  
files from one format to another. I wrote maybe ten classes for my  
program, which I kept in a single directory, but I did not define a  
module for my classes. Everything works fine when I invoke my program  
from command line, so next I wanted to put this conversion utility  
online with Rails.

Putting this directory in /lib under rails and adding my dir to the  
rails load paths worked fine and I’m able to deliver the converted  
results via Rails.

Next I added a few user authentication methods and put them inside a  
module and included this module in my Applications controller. This  
worked fine but caused my conversion utility to stop working. Rails did  
not seem able to find the classes referenced anymore. So I bundled my  
classes into a module, and this fixed Rails, but now it no longer works  
on the command line – it complains that one of the classes in the 3rd  
party library I use is calling a one of its own private methods. But my  
code still works fine from Rails. And even at the command line, it  
mostly works because my checkpoint print statements are reached, but it  
just chokes right at the end. It’s the exact same code in both cases.

So my manipulating my module boundaries it seems I can make my code  
either work from Rails or from the command line, but not both. Any idea  
what’s going on?

Is there any scenario in which a module definition around the calling  
class might affect the behavior or visibility of a private method in the  
included class? I’ve literally spent days experimenting and trying to  
understand this, but am not any closer to an answer. My only conclusion  
so far is that Ruby’s scoping mechanisms are complex.

Any insights would be much appreciated. Thanks in advance!

---

<div class="post-metadata">

**Author:** ![folkbaroque](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/fbc32d/32.png) [@folkbaroque](https://www.ruby-forum.com/u/folkbaroque)\
**Post date:** [January 26, 2009, 6:58am UTC](https://www.ruby-forum.com/t/module-inheritance-and-private-methods/158569/2 "2009-01-26T06:58:55Z")

</div>

Embarrassed to admit that I solved my own problem, and it was not  
related to modules, just a dumb error calling the wrong method from the  
console version.

I suspected modules because prior to this I had spent several days  
getting the modules right to make rails happy, so when this turned up I  
thought it was still part of that original problem.

Thanks anyway…
