This should work:
"pdf = Prawn::Document.new; pdf.instance_eval do\n#{template.source}\nend"
This string will get eval'd into a method. Big difference between it
actually running. AV will create something like this for you:
def _pdf_app_views_docs_show
pdf = Prawn::Document.new
pdf.instance_eval do
# the actual template source will be here
text "Hello, World"
end
end
On Mon, Dec 15, 2008 at 5:45 AM, thorny_sun <[email protected]> wrote:
>
> Josh,
>
> ah ok-- I get it now -- thanks so much for helping me understand!
>
> follow up question: I also have an option where the user can specify
> a template to be run as if it were inside a pdf.instance_eval where
> pdf is just the Prawn::Document object. This makes the template more
> compact, since the user avoids having to type "pdf." all the time.
> (i.e. "pdf = Prawn::Document.new; pdf.instance_eval template.source;")
> Soooo-- I'm assuming that having the "pdf.instance_eval" in the eval'd
> string kinda defeats the benefits of using compile? Could I get
> around this by mimicking the compile paradigm and creating a method
> and calling that method within the string to be eval'd?
>
> thanks so much for the help!
> -thorny_sun
>
>
> On Dec 11, 10:36 am, Joshua Peek <[email protected]> wrote:
>> On Dec 11, 8:46 am, thorny_sun <[email protected]> wrote:
>>
>> > so are you saying now that ruby source is somehow getting run faster
>> > since it is getting "compiled". I'm very confused. What if we take
>> > the builder template as an example (since prawnto template handler
>> > works very similarly in that it is just ruby code) -- is there any
>> > speed gain expected by "compiling" it? Or did I just misunderstand?
>>
>> In most cases, you going to have to compile it no matter what. In your
>> prawnto template handler you directly call `[email protected]_eval
>> source, template.filename, 1`. While this works, you are rebuilding
>> and reevaling the template ever run. This is really slow. You could
>> make this optimizations internally, but ActionView can take care of
>> all this for you if you just return the source from the handler
>> instead.
>
> >
>
--
Joshua Peek
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Core" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---