Hello,
I’m overriding the initialize method of a base class and I’m trying
to set a Base class variable in the overridden method and have it
register in the Base class (hope that makes sense).
Here’s my code:
in Rails::Generator::Base:
class Base
include Options
class_inheritable_accessor :spec
def initialize(runtime_args, runtime_options = {})
@args = runtime_args
parse!(@args, runtime_options)
# Derive source and destination paths.
@source_root = options[:source] || File.join(spec.path, 'templates')
end
end
class MediaModuleGenerator < Rails::Generator::Base
def initialize(runtime_args, runtime_options = {})
self.spec.path = File.dirname(__FILE__) +
'/generators/media_module'
super
end
end
I should mention that spec is a module w/in the Rails framework IE:
Rails::Generator::Spec
When I run my generator, I get this error:
You have a nil object when you didn’t expect it! (NoMethodError) The
error occurred while evaluating nil.path
So when I set the self.spec.path var to File.dirname(FILE) +
‘/generators/media_module’, it’s not registering in the base class.
Any ideas?
On Wed, Jun 3, 2009 at 7:39 PM, Clem R.
[email protected]wrote:
in Rails::Generator::Base:
Derive source and destination paths.
end
If you’re overriding the initialize method, then you should be
calling super before any other expression. This isn’t necessary
in regards to subclasses who parent is Object.
-Conrad
On Wed, Jun 3, 2009 at 7:58 PM, Conrad T. [email protected]
wrote:
@args = runtime_args
‘/generators/media_module’
super
end
end
If you’re overriding the initialize method, then you should be
calling super before any other expression. This isn’t necessary
in regards to subclasses who parent is Object.
You should have an expression like this in your subclass:
super( runtime_args, runtime_options )
If you need further details, please consult the PixAxe book.
-Conrad
On Wed, Jun 3, 2009 at 9:08 PM, Clem R.
[email protected]wrote:
my overidden initialize method now looks like this:
wrote:
calling super before any other expression. This isn’t necessary
What’s on line 107 that’s generating the error message?
-Conrad
I tried adding
super( runtime_args, runtime_options )
and still got this error:
rails_generator/base.rb:107:in `initialize’: You have a nil object when
you didn’t expect it!
my overidden initialize method now looks like this:
def initialize(runtime_args, runtime_options = {})
super( runtime_args, runtime_options )
end
Conrad T. wrote:
On Wed, Jun 3, 2009 at 7:58 PM, Conrad T. [email protected]
wrote:
@args = runtime_args
‘/generators/media_module’
super
end
end
If you’re overriding the initialize method, then you should be
calling super before any other expression. This isn’t necessary
in regards to subclasses who parent is Object.
You should have an expression like this in your subclass:
super( runtime_args, runtime_options )
If you need further details, please consult the PixAxe book.
-Conrad
this is line 107:
@source_root = options[:source] || File.join(spec.path, ‘templates’)
Conrad T. wrote:
On Wed, Jun 3, 2009 at 9:08 PM, Clem R.
[email protected]wrote:
my overidden initialize method now looks like this:
wrote:
calling super before any other expression. This isn’t necessary
What’s on line 107 that’s generating the error message?
-Conrad
spec.path is nil.path - that’s the whole problem - I’m trying to set the
spec.path = File.dirname(FILE) + ‘/generators/media_module’ in my
overidden initialize method and I can’t seem to send that value to the
Base class.
Conrad T. wrote:
What’s the value of spec.path?
On Wed, Jun 3, 2009 at 10:38 PM, Clem R.
<[email protected]
What’s the value of spec.path?
On Wed, Jun 3, 2009 at 10:38 PM, Clem R.
<[email protected]