Rubyスクリプトでモジュールのrm\_rf
メソッドを無効にしたい。FileUtils
含まれている場合foo.rb
:
FileUtils.rm_rf(file)
次のユーザーは実行しないでください。
Daemons.run("foo.rb", some_options)
代わりにエラーメッセージを表示する必要があります。
これはDaemons
できますか?または、他のいくつかのライブラリがこれを簡単かつ効果的に実行できますか?
これがあなたがやりたいことの大まかな概要です。
alias_method
古いメソッドを他の何かに定義しない限り、使用することはおそらく良い考えではありません。ここではメソッドが定義されています。このアプローチの危険性は、内部の動作が予想される方法で影響を受ける可能性があることです。たとえば、許可されたメソッドは、許可されていないメソッドを内部で使用します。
以下はシングルトン(クラス)メソッドの場合で、同じロジックをインスタンスメソッドに使用できます。これを実装する方法はいくつかありますが、これはガイドとしての1つにすぎません。
> FileUtils.pwd
=> "/home/dave"
> FileUtils.cp '.bashrc', 'tmpbashrc'
=> nil
> class Object
* def deimplement_singleton_methods *methods
* methods.each do |msym|
* define_singleton_method msym do |*args|
* raise NotImplementedError.new "#{msym} not implemented"
* end
* end
* end
* end
> FileUtils.deimplement_singleton_methods :cp
> FileUtils.pwd
=> "/home/dave"
> FileUtils.cp '.bashrc', 'tmpbashrc'
NotImplementedError: cp not implemented
from (pry):10:in `block (2 levels) in deimplement_singleton_methods'
Module::undef_methodとModule::remove_methodもあります。これらは、必要な動作を提供する場合と提供しない場合があります(何をする必要があるかわからない)。