Hi James,

thanks for your insightful response :)

Actually I have thought about it and will most probably adopt this  
approach ("explicitly opt in") as things become more visible during  
refactoring. Right now I have two acts_as_coffeemaking_controller-type  
macros which are included in several controllers. And for these I  
think it will make sense to have a common base controller which is not  
the ApplicationController.

But this stuff is moving quickly, design-wise, and I wouldn't want to  
generally exclude the ApplicationController as an option. You guys  
listed some drawbacks to consider and I totally agree that it's  
probably a bad idea in most situations. But there are also some  
benefits like that the mere filename and classname largely contribute  
to comprehensibility. (E.g. I generally don't like when clearly  
controller-related stuff is located *somewhere* in the lib/ dir and I  
keep searching for it because I overlooked a single line at the top of  
a controller ...)

So, for now I think I can live with the anticipation that Rails will  
change that filename (I think they really should!) and I will get the  
feature for free :)



Am 26.02.2008 um 11:58 schrieb James Adam:

> On 24/02/2008, Sven Fuchs <[EMAIL PROTECTED]> wrote:
>> Is there a reason not to allow this feature for the application
>> controller? I'd like to move quite some stuff from an application
>> controller that I'm splitting up into engines ... and there's just no
>> more comprehensible place to use than plugin_name/app/controllers/
>> application.rb. :)
>
> The code mixing stuff only exists to make it simpler to override
> methods within the application, but it sounds like you want to make
> methods available to all controllers in your plugin by having those
> methods automatically mixed into the ApplicationController.
>
> This seems distinct from wanting to add methods defined within a
> plugin to ApplicationController automatically.
>
>> In my usecase I can safely assume that all engines are designed to  
>> fit
>> together though and readability-wise it really makes most sense to  
>> use
>> ApplicationController here.
>
> Will this be the case for everyone?
>
> I fear that enabling this will lead to a variety of conflicts that are
> difficult to control. Plugins from multiple sources are all adding
> methods to the superclass of *all* application controllers in a way
> that isn't controllable by the application developer. Would it perhaps
> be better that application developers (plugin 'consumers') have to
> explicitly 'opt-in' to functionality that affects
> ApplicationController directly?
>
> I think the usecase Sven describes would be better solved by
> extracting the common functionality he needs into a
> non-ApplicationController class or module, and explicitly including it
> into the controllers that require it.
>
> .... to bring a counter-point to my own points above, if Rails ever
> adopts the 'application_controller.rb' name change proposal, this
> behaviour will be available by default. Even in this case, I'd still
> probably discourage defining application_controller files in any
> plugins that are likely to be used outwith a very controlled
> environment.
>
> -- 
> * J *
>  ~
> _______________________________________________
> Engine-Developers mailing list
> [email protected]
> http://lists.rails-engines.org/listinfo.cgi/engine-developers-rails-engines.org

--
sven fuchs                      [EMAIL PROTECTED]
artweb design           http://www.artweb-design.de
grünberger 65           + 49 (0) 30 - 47 98 69 96 (phone)
d-10245 berlin          + 49 (0) 171 - 35 20 38 4 (mobile)



_______________________________________________
Engine-Developers mailing list
[email protected]
http://lists.rails-engines.org/listinfo.cgi/engine-developers-rails-engines.org

Reply via email to