[katello-devel] T²-Pain generator
Petr Chalupa
pchalupa at redhat.com
Thu Nov 15 17:07:45 UTC 2012
Sorry I was too vague. I meant to create a helper class (TwoPane) where
its instance would directly render the TwoPane html code not the Ruby
code. I would use a class because this too complex to be done just with
simple helper methods.
I do not really know how to describe it so I try an example:
module TwoPaneHelper
def twopane(options, &block)
TwoPane.new(self, options, &block).render
end
class TwoPane
attr_reader :template, :options
def initialize(template, options = { }, &block)
@template, @options = template, options
# eval block whit dsl for complex options
instance_eval &block
end
# dsl example method
def ajax(options = { })
self.options[:ajax_load] = options[:load] || 'a default'
self.options[:ajax_scroll] = options[:scroll] || 'a default'
end
def left_side(options)
# ...
end
def render
# stuff like
template.content_tag :div
template.render :partial => 'some template', :locals => options
end
end
end
# usage in template
include TwoPaneHelper
twopane(:title => 'A Title') do
ajax :load => 'whatever', :scroll => 'whatever'
left_side do
# some more configuration
end
end
In case of two-pane I guess there would be a few classes (left, right
side etc.) which could be overridden and interchanged if needed.
If I failed to make it more understandable please ask.
Petr
On 15.11.12 14:32, David Davis wrote:
> Do you have an example? I'm not sure I've ever seen Ruby source code generated with Ruby objects and meta-programming.
>
> One reason I prefer to use Rails generators is that I could tie into existing generators. Using Rails generators, I could reuse the existing generators for routes, models, migrations, etc. I could that with Ruby objects or some meta-programming but it wouldn't be as easy as calling hook_for or invoke from a new Rails generator.
>
> David
>
> ----- Original Message -----
>> From: "Petr Chalupa" <pchalupa at redhat.com>
>> To: katello-devel at redhat.com
>> Sent: Thursday, November 15, 2012 8:17:36 AM
>> Subject: Re: [katello-devel] T²-Pain generator
>>
>> Hi,
>>
>> I this case I would suggest not to use Rails generator. I would use
>> pure
>> Ruby objects and some meta-programing.
>>
>> My Reason: Once code for tupane is generated and specific changes are
>> introduces into the generated code it is hard to keep the code
>> up-to-date with generator as the generator is being updated and
>> improved. Also erb files for generating Ruby tend to look horrible
>> and
>> unintelligible.
>>
>> Petr
>>
>> On 14.11.12 14:47, David Davis wrote:
>>> Not sure if I understand your question but the rails generator will
>>> generate a bunch of code for your when you call it. I haven't
>>> looked at the tupane code a lot yet but if there is a lot of
>>> javascript, we might be able to generate it. Basically, we'd be
>>> building on top of the "rails generate scaffold" command to
>>> generate a tupane layout instead of the typical Rails
>>> index/create/edit/show views.
>>>
>>> Here's more information:
>>>
>>> https://fedorahosted.org/katello/wiki/RailsGeneratorDesign
>>>
>>> David
>>>
>>> ----- Original Message -----
>>>> From: "Lukas Zapletal" <lzap at redhat.com>
>>>> To: katello-devel at redhat.com
>>>> Sent: Wednesday, November 14, 2012 8:40:41 AM
>>>> Subject: Re: [katello-devel] T²-Pain generator
>>>>
>>>> Does that Rails Generator thing bring less JavaScript and more
>>>> Ruby?
>>>>
>>>> I mean, writing more code in Ruby and having most of the
>>>> JavaScript
>>>> stuff generated?
>>>>
>>>> Or is it something different?
>>>>
>>>> LZ
>>>>
>>>> On Wed, Nov 14, 2012 at 08:18:01AM -0500, David Davis wrote:
>>>>> So I'm working on some Rails generators and one of them is a
>>>>> T²-Pain generator. Originally we wanted to call it 2pane but I
>>>>> have found out that it won't work as module/class names in Ruby
>>>>> can't start with a number and you have to a module/class for the
>>>>> generator. Thus, I'm wondering which version of tUpay'n I should
>>>>> use.
>>>>>
>>>>> - tupane
>>>>> - twopane
>>>>> - two_pane
>>>>>
>>>>> My concern with the first one is that it's not self evident what
>>>>> it's referring to. Also, are there any other names that might
>>>>> work
>>>>> other than tu/two/2pane?
>>>>>
>>>>> Thanks.
>>>>>
>>>>> David
>>>>>
>>>>> _______________________________________________
>>>>> katello-devel mailing list
>>>>> katello-devel at redhat.com
>>>>> https://www.redhat.com/mailman/listinfo/katello-devel
>>>>
>>>> --
>>>> Later,
>>>>
>>>> Lukas "lzap" Zapletal
>>>> #katello #systemengine
>>>>
>>>> _______________________________________________
>>>> katello-devel mailing list
>>>> katello-devel at redhat.com
>>>> https://www.redhat.com/mailman/listinfo/katello-devel
>>>>
>>>
>>> _______________________________________________
>>> katello-devel mailing list
>>> katello-devel at redhat.com
>>> https://www.redhat.com/mailman/listinfo/katello-devel
>>>
>>
>> _______________________________________________
>> katello-devel mailing list
>> katello-devel at redhat.com
>> https://www.redhat.com/mailman/listinfo/katello-devel
More information about the katello-devel
mailing list