Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
Selective runtime provision of instance methods
julian.kamil@gmail.com
3/17/2006 10:39:00 PM
I'd like to get some comments and suggestions from anyone who may have
an opinion on this or know of a better way to accomplish this.
I have an object with a lot of methods and variables some of which (but
not all) I'd like to make callable from another object that happens to
be evaluated by ERB. So I did this:
<code>
class LotsOfMethods
# to be made callable
def method1 ... end
def method2 ... end
...
# not callable
def methodX ... end
def delegate
d = OpenStruct.new({
:var1 => var1,
:var2 => var2,
...
})
my = self
d_singleton = class << d; self end
d_singleton.send(:define_method, :method1) { my.method1 }
d_singleton.send(:define_method, :method2) { my.method2 }
...
d
end
end
class Sandbox
def self.env(delegate)
Proc.new {}
end
end
sacred_object = LotsOfMethods.new
output = ERB.new(text).result(Sandbox.env(sacred_object.delegate))
</code>
The idea is that the embedded Ruby code in "text" will be able to
access the specified variables and methods in 'delegate' but not any
others. So, for example:
text = '<%= delegate.method1 %>'
will be allowed; but:
text = '<%= delegate.methodX %>'
will raise an exception.
Does anyone know of a better way to accomplish the same effect?
Best regards,
Julian I. Kamil <julian.kamil@gmail.com>
http://pandora.rub...
- Pandora Publisher
http://books.rub...
- The Ruby Bookshelf
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Selective runtime provision of instance methods
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password