- From: Daniel DeLeo <
>
- To: Lamont Granquist <
>
- Cc: Noah Kantrowitz <
>, Chef Dev <
>
- Subject: [chef-dev] Re: Re: 12.4 DSL in core providers
- Date: Mon, 29 Jun 2015 15:26:58 -0700
On Saturday, June 27, 2015 at 12:57 PM, Lamont Granquist wrote:
>
On 6/26/15 4:21 PM, Noah Kantrowitz wrote:
>
> Throwing this on the mailing list as a reminder since I think I've used
>
> up my quota of tickets lately: It would be nice to move towards adding
>
> the recipe DSL back to Chef::Provider. Currently there are unpleasant
>
> issues when you subclass a non-DSL-using provider and then mix in the DSL
>
> module. Several providers have methods with names matching DSL stuffs,
>
> (https://github.com/chef/chef/blob/master/lib/chef/provider/git.rb#L324,
>
> https://github.com/chef/chef/blob/master/lib/chef/provider/execute.rb#L30)
>
> so if you mix in the DSL such that it comes before the superclass in the
>
> MRO, stuff goes haywire. If the DSL was pulled in earlier in the MRO,
>
> then the "correct" methods would take priority. I can fix this one-off
>
> each time it comes up, but being unable to use the DSL when extending
>
> core classes is something I would love to see in the future (ex.
>
> https://github.com/poise/application_git/blob/master/lib/poise_application_git/resource.rb
>
> and
>
> https://github.com/poise/poise-ruby/blob/master/lib/poise_ruby/resources/ruby_execute.rb).
>
>
>
> --Noah
>
Yeah, in retrospect we shouldn't have pulled the Recipe DSL and should
>
have eliminated method_missing from the Recipe DSL instead. Since we're
>
going down the road of eliminating method_missing from the Recipe DSL,
>
it should probably go back into Chef::Provider.
I find having the DSL when I don’t want it pretty annoying actually.
method_missing is really annoying since you get absurd errors for any typo’d
method name, but the DSL also camps on a lot of domain words so you can also
invoke it “correctly” on accident as well.
Is there a compromise that doesn’t suck, like invoking the DSL only inside a
block or adding just the non-dynamic DSL methods (#declare_resource and
#build_resource) maybe?
--
Daniel DeLeo
Archive powered by MHonArc 2.6.16.