Does anyone know how to access a module namespace using a chained method?

EngineBlogPost == @blog.engine_blog_post Engine::BlogPost == ???

Thanks!

EngineBlogPost == @blog.engine_blog_post Engine::BlogPost == ???

You might want to elaborate - to me at least your question makes no sense.

Fred.

Okay, I'm chaining methods. I want access to my class. I can access SomeClass with a method like some_class. Now with engines in Rails 3.1, I can use modules to break apart my codebase. So now, SomeClass would be Engine::SomeClass. If I try to access Engine::SomeClass with a similar style method like engine_some_class, it returns with EngineSomeClass rather than Engine::SomeClass.

Any ideas on a chainable method for accessing this class now that it has the additional module namespace?

Thanks,

Steve

Okay, I’m chaining methods. I want access to my class.

Access your class as in: obj.class (or something else)?

I can access

SomeClass with a method like some_class.

Do you mean you can take a string “some_class” and call:

“some_class”.camelize.constantize => SomeClass

Or, are you talking about some weird #method_missing-based feature of rails that I don’t know about?

Now with engines in Rails

3.1, I can use modules to break apart my codebase.

Well, in general terms, with ruby you’ve always been able to “break apart” your codebase using modules…

So now, SomeClass

would be Engine::SomeClass. If I try to access Engine::SomeClass with

a similar style method like engine_some_class, it returns with

EngineSomeClass rather than Engine::SomeClass.

So, I think the real question is, what do you mean by “it” in “it returns with…”? What method are you calling?

If I had to guess, it looks to me like you’re not talking so much about calling a method #engine_some_class so much as passing this as a value (string or symbol) to some method. Am I on the right track?

Any ideas on a chainable method for accessing this class now that it

has the additional module namespace?

What do you mean by chainable here? Do you mean method chaining like:

obj.method_a.method_b.method_c(arg1, arg2).method_d

Okay, I'm chaining methods. I want access to my class. I can access SomeClass with a method like some_class. Now with engines in Rails 3.1, I can use modules to break apart my codebase. So now, SomeClass would beEngine::SomeClass. If I try to accessEngine::SomeClass with a similar style method like engine_some_class, it returns with EngineSomeClass rather thanEngine::SomeClass.

I think you are expecting magic where there is none. If your blog model has belogns_to :blog_post, ... then you'll always do Blog.first.blog_post, whether blog_post is a BlogPost, Engine::BlogPost or some other class altogether

Fred

If I call Engine::BlogPost everything is gravy,

If I call BlogPost then I get...

uninitialized constant BlogPost