Hiccdown Development Notes
#325·Dennis HackethalOP revised over 1 year agoHiccdown methods should live in their own, separate modules. How about they are called ‘displays’?
rubymodule ProductsDisplaydef self.index vc, # …vc.some_helper_methodendendA benefit of this approach is that, when people start a new Rails app, they may end up putting whatever they’d otherwise put in a helper in a display, since displays have the benefit of having unambiguously resolvable method names.
Instance variables are not available inside the methods.
#325·Dennis HackethalOP revised over 1 year agoHiccdown methods should live in their own, separate modules. How about they are called ‘displays’?
rubymodule ProductsDisplaydef self.index vc, # …vc.some_helper_methodendendA benefit of this approach is that, when people start a new Rails app, they may end up putting whatever they’d otherwise put in a helper in a display, since displays have the benefit of having unambiguously resolvable method names.
I’m trying this now. Having to prepend every invocation of a helper method with vc. is getting really old really fast.
Hiccdown methods should live in their own, separate modules. How about they are called ‘renderers’?
module ProductsRendererdef self.index vc, # …vc.some_helper_methodendend
A benefit of this approach is that, when people start a new Rails app, they may end up putting whatever they’d otherwise put in a helper in a renderer, since renderers have the benefit of having unambiguously resolvable method names.
Hiccdown methods should live in their own, separate modules. How about they are called ‘displays’?
module ProductsDisplaydef self.index vc, # …vc.some_helper_methodendend
A benefit of this approach is that, when people start a new Rails app, they may end up putting whatever they’d otherwise put in a helper in a display, since displays have the benefit of having unambiguously resolvable method names.
Tested, it works.
Tested, it works. self does indeed point to the view_context in the helper. Verified by printing object_ids.
#315·Dennis HackethalOP, over 1 year agoI don’t think that’s something people would do a lot, but they still easily could:
ProductsRenderer.index(self)
Test this!
#319·Dennis HackethalOP, over 1 year agoI don’t like the term ‘renderer’ yet. It’s too loaded with meaning, what with Rails already having a
rendermethod in controllers and anotherrendermethod in views…
Maybe ‘Display’. ProductsDisplay
#316·Dennis HackethalOP revised over 1 year agoHiccdown methods should live in their own, separate modules. How about they are called ‘renderers’?
rubymodule ProductsRendererdef self.index vc, # …vc.some_helper_methodendendA benefit of this approach is that, when people start a new Rails app, they may end up putting whatever they’d otherwise put in a helper in a renderer, since renderers have the benefit of having unambiguously resolvable method names.
I don’t like the term ‘renderer’ yet. It’s too loaded with meaning, what with Rails already having a render method in controllers and another render method in views…
Then how would you call this from a helper method?
Then how would you call index from a helper method?
Hiccdown methods should live in their own, separate modules. How about they are called ‘renderers’?
module ProductsRendererdef self.index vc, # …vc.some_helper_methodendend
Hiccdown methods should live in their own, separate modules. How about they are called ‘renderers’?
module ProductsRendererdef self.index vc, # …vc.some_helper_methodendend
A benefit of this approach is that, when people start a new Rails app, they may end up putting whatever they’d otherwise put in a helper in a renderer, since renderers have the benefit of having unambiguously resolvable method names.
I don’t think that’s something people would do a lot, but they still easily could: ProductsRenderer.index(self)
#313·Dennis HackethalOP, over 1 year agoHiccdown methods should live in their own, separate modules. How about they are called ‘renderers’?
rubymodule ProductsRendererdef self.index vc, # …vc.some_helper_methodendend
Then how would you call this from a helper method?
Hiccdown methods should live in their own, separate modules. How about they are called ‘renderers’?
module ProductsRendererdef self.index vc, # …vc.some_helper_methodendend
#303·Dennis HackethalOP, over 1 year agoHiccdown methods should live in Rails helpers as class methods. That way, the problem described in #302 is solved – methods can be referenced unambiguously:
rubyProductsHelper.indexStoresHelper.index
That would be mixing class methods an instance methods in Rails helper modules, which typically only contain instance methods. Not idiomatic Rails usage.
If so, there might be a way to bind them to the view_context. Or I could definitely pass the view_context explicitly as the first parameter:
So instead of
@helper_module.instance_method(@action_name).bind_call(view_context)
I would do
@helper_module.send(@action_name, view_context)
And the parameter list of each Hiccdown method would start accordingly:
module ProductsHelperdef self.index vc #, …# …endend
If so, there might be a way to bind them to the view_context. Or I could definitely pass the view_context explicitly as the first parameter:
So instead of
@helper_module.instance_method(@action_name).bind_call(view_context)
I would do
@helper_module.send(@action_name, view_context)
And the parameter list of each Hiccdown method would start accordingly:
module ProductsHelperdef self.index vc #, …vc.some_helper_methodenddef some_helper_method# …endend
If so, there might be a way to bind them to the view_context. Or I could definitely pass the view_context explicitly as the first parameter.
If so, there might be a way to bind them to the view_context. Or I could definitely pass the view_context explicitly as the first parameter:
So instead of
@helper_module.instance_method(@action_name).bind_call(view_context)
I would do
@helper_module.send(@action_name, view_context)
And the parameter list of each Hiccdown method would start accordingly:
module ProductsHelperdef self.index vc #, …# …endend
#305·Dennis HackethalOP revised over 1 year agoDoes that mean they wouldn’t have access to the
view_context? If so, calling helper methods from inside these class methods wouldn’t be possible.
If so, there might be a way to bind them to the view_context. Or I could definitely pass the view_context explicitly as the first parameter.
Does that mean they wouldn’t have the view_context? If so, calling helper methods from inside these class methods wouldn’t be possible.
Does that mean they wouldn’t have access to the view_context? If so, calling helper methods from inside these class methods wouldn’t be possible.
#303·Dennis HackethalOP, over 1 year agoHiccdown methods should live in Rails helpers as class methods. That way, the problem described in #302 is solved – methods can be referenced unambiguously:
rubyProductsHelper.indexStoresHelper.index
Does that mean they wouldn’t have the view_context? If so, calling helper methods from inside these class methods wouldn’t be possible.
Hiccdown methods should live in Rails helpers as class methods. That way, the problem described in #302 is solved – methods can be referenced unambiguously:
ProductsHelper.indexStoresHelper.index
Hiccdown methods should live in Rails helpers.
Hiccdown methods should live in Rails helpers as instance methods.
That isn’t a good idea because Hiccdown methods often share the same conventional names (index, show, etc), which can and does lead to conflict.
Notes about developing the Ruby gem Hiccdown.
Hiccdown methods should live in Rails helpers.