I've got a string, and I want to find out if there's a class with that
name. So something like
class_exists? "Foo"
and then I can eval it if it does, I guess. Or is there a better way
than eval in that case? At any rate, I just want to be able to take a
string and find out if there's a class with that name or not.
Although in some methods that I have seen in the rails source there has been
string_name.camelize.constantize
This will return a class object specified by name.
eg
def do_somthing( class_name )
obj = class_name.to_s.camelize.constantize
obj.new
end
Hope this works for you
···
On 6/8/06, Pat Maddox <pergesu@gmail.com> wrote:
I've got a string, and I want to find out if there's a class with that
name. So something like
class_exists? "Foo"
and then I can eval it if it does, I guess. Or is there a better way
than eval in that case? At any rate, I just want to be able to take a
string and find out if there's a class with that name or not.
I've got a string, and I want to find out if there's a class with that
name. So something like
class_exists? "Foo"
and then I can eval it if it does, I guess. Or is there a better way
than eval in that case? At any rate, I just want to be able to take a
string and find out if there's a class with that name or not.
} I've got a string, and I want to find out if there's a class with that
} name. So something like
}
} class_exists? "Foo"
}
} and then I can eval it if it does, I guess. Or is there a better way
} than eval in that case? At any rate, I just want to be able to take a
} string and find out if there's a class with that name or not.
I've got a string, and I want to find out if there's a class with that
name. So something like
class_exists? "Foo"
and then I can eval it if it does, I guess. Or is there a better way
than eval in that case? At any rate, I just want to be able to take a
string and find out if there's a class with that name or not.
module.const_get "Foo"
# or just
const_get "Foo"
You'll get an exception if Foo isn't defined.
And not every constant refers to a class you can instantiate:
class Bar ; end
kls = Object.const_get "Bar"
c = kls.new() # OK
Foo = 12
kls = Object.const_get "Foo"
c = kls.new() # Not so OK
Quick version:
def class_exists? kls
begin
kls = Object.const_get kls
kls.kind_of? Class
rescue Exception
false
end
end
[...]
} Although in some methods that I have seen in the rails source there has been
}
} string_name.camelize.constantize
}
} This will return a class object specified by name.
} eg
}
} def do_somthing( class_name )
} obj = class_name.to_s.camelize.constantize
} obj.new
} end
Both #camelize and #constantize are Rails extensions.
} Hope this works for you
--Greg
···
On Thu, Jun 08, 2006 at 11:38:42AM +0900, Daniel N wrote:
} On 6/8/06, Pat Maddox <pergesu@gmail.com> wrote:
} >I've got a string, and I want to find out if there's a class with that
} >name. So something like
} >
} >class_exists? "Foo"
} >
} >and then I can eval it if it does, I guess. Or is there a better way
} >than eval in that case? At any rate, I just want to be able to take a
} >string and find out if there's a class with that name or not.
} >
} >Thanks,
} >Pat
} >
} >
}
}