既存のRails 3のアップグレードをRails 4にアップグレードしています。このアプリケーションのサルはActiveRecord::Base#assign_attributes
にパッチを当てています。 Rails 4では、パッチされたコードは決して呼び出されません。ActiveRecord :: Base#assign_attributes Rails 4のアップグレード後にmonkey patchが機能しない
私はlibディレクトリから猿のパッチを当てたコードを必要とするconfig初期化子を持っており、起動初期化プロセス中に一度実行されることがわかります。
これはlibディレクトリのmonkeyパッチファイルの簡略化されたバージョンです。
# encoding: UTF-8
module ActiveRecord
class Base
alias_method :default_assign_attributes, :assign_attributes
def assign_attributes(new_attributes)
# Do some custom stuff here
default_assign_attributes(new_attributes)
end
end
end
私はそれが 'ActiveRecord :: AttributeAssignment'に移ったことを理解します。これはモジュールですが、私はこれを猿のパッチにする明確な方法は見当たりません。私はまた、猿のパッチを当てるコアクラスは悪い考えであることに同意します。これは、これは、現在の機能を動作させることに関心があり、改善は一度に1つのステップで行くことができます。 – bigtunacan