私はRubyv1.9.2とRubyonRailsv3.2.2gemを使用しています。私は次のモジュールを持っていました
module MyModule
extend ActiveSupport::Concern
included do
def self.my_method(arg1, arg2)
...
end
end
end
そして、クラスメソッド のエイリアスを作成したかったのmy_method
です。だから、私は次の(動作していない)コードを述べました:
module MyModule
extend ActiveSupport::Concern
included do
def self.my_method(arg1, arg2)
...
end
# Note: the following code doesn't work (it raises "NameError: undefined
# local variable or method `new_name' for #<Class:0x00000101412b00>").
def self.alias_class_method(new_name, old_name)
class << self
alias_method new_name, old_name
end
end
alias_class_method :my_new_method, :my_method
end
end
つまり、全体で使用できるメソッドModule
を追加するために、クラスを何らかの方法で拡張することを考えました。ただし、それを機能させ、すべてのRubyonRailsアプリケーションで使用できるようにしたいと思います。alias_class_method
MyModule
Module
クラスのRubyコア拡張子に関連するファイルをどこに置くべきですか?たぶんRubyonRailslib
ディレクトリにありますか?Module
コア拡張ファイルのクラスを適切に「拡張」するにはどうすればよいですか?- 続行するのは正しい方法ですか?つまり、たとえば、別のクラス(、、、、 ...)ではなく「拡張」する必要が
Object
ありBasicObject
ますKernel
かModule
?または、前述のコア拡張機能の実装をまったく避ける必要がありますか?
しかし、もっと重要なのは、クラスを拡張する必要がないように、私が達成しようとしていることを実現するRuby機能がありますか?