Project

General

Profile

Actions

Feature #8846

closed

Publicize Module#include

Added by matsuda (Akira Matsuda) over 10 years ago. Updated over 10 years ago.

Status:
Closed
Assignee:
-
Target version:
[ruby-core:56911]

Description

I propose changing Module#include to a public method.

  • Background
    Module#include is currently a private method.
    However, the method is actually quite often used (particularly by gem library authors) for appending some features from outside of the target module, such as:

    ActiveRecord::Base.send :include, MyPagination

  • Use case
    % cd rails
    % git grep "send[ (]:include," | wc -l
    45


Files

public_include.pdf (37.3 KB) public_include.pdf matsuda (Akira Matsuda), 08/31/2013 02:17 PM

Related issues 2 (0 open2 closed)

Related to Ruby master - Feature #6539: public and private for core methodsClosednobu (Nobuyoshi Nakada)Actions
Related to Ruby master - Feature #12697: Why shouldn't Module meta programming methods be public?Closedmatz (Yukihiro Matsumoto)Actions
Actions #1

Updated by matsuda (Akira Matsuda) over 10 years ago

  • File deleted (public_include.pdf)

Updated by matz (Yukihiro Matsumoto) over 10 years ago

The basic motivation behind #include (and #prepend) being private is we didn't assume that kind of coding style.
As it turned out, that coding style became popular, I'd accept make them public.

Matz.

Updated by marcandre (Marc-Andre Lafortune) over 10 years ago

Great :-)

Taking Rails as an example, I find that the next in line are define_method, remove_const, alias_method and attr_*

As I stated in #6539, I believe these should be public also.

Updated by matsuda (Akira Matsuda) over 10 years ago

  • Status changed from Open to Closed

Implemented in r42809.

Updated by duerst (Martin Dürst) over 10 years ago

Hello Marc-Andre,

On 2013/09/01 4:20, marcandre (Marc-Andre Lafortune) wrote:

Issue #8846 has been updated by marcandre (Marc-Andre Lafortune).

Great :-)

Taking Rails as an example, I find that the next in line are define_method, remove_const, alias_method and attr_*

As I stated in #6539, I believe these should be public also.

#6539 is marked closed. Best to open a new issue. Regards, Martin.


Feature #8846: Publicize Module#include
https://bugs.ruby-lang.org/issues/8846#change-41506

Author: matsuda (Akira Matsuda)
Status: Open
Priority: Low
Assignee:
Category: core
Target version: current: 2.1.0

I propose changing Module#include to a public method.

  • Background
    Module#include is currently a private method.
    However, the method is actually quite often used (particularly by gem library authors) for appending some features from outside of the target module, such as:

    ActiveRecord::Base.send :include, MyPagination

  • Use case
    % cd rails
    % git grep "send[ (]:include," | wc -l
    45

Actions #7

Updated by mrkn (Kenta Murata) over 7 years ago

  • Related to Feature #12697: Why shouldn't Module meta programming methods be public? added
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0