私たちのアプリケーションは、Rails 2.3.5 と ActiveScaffold を使用して開発されています。ActiveScaffold は、コントローラーで次のように宣言するだけで、実行時にかなりの魔法を追加します。
class SomeController < ApplicationController
active_scaffold :model
end
コントローラーにその 1 行を追加するだけで、ActiveScaffold のメタ プログラミングにより、すべての安らかなアクションとそれに対応するビューが利用可能になります。ほとんどのコードは実行時に追加されるため、開発モードでは class_caching がないためリクエストが少し遅くなるようです。
認証レイヤーを追加する必要があり、私のチームは、すべての認証ルールを宣言する init.rb ファイルを解析する Lockdown プラグインを選択しました。Lockdown が承認規則を保存する方法は、init.rb ファイルを解析し、init.rb ファイルで宣言されたコントローラーを評価することです。そのため、リクエストごとに Lockdown がすべてのコントローラーを評価し、それによって ActiveScaffold に多くのメタ プログラミングを追加するように強制し、その結果、db クエリを作成してすべてのモデルの列定義を見つけます。class_caching がないため、開発中のリクエストが大幅に遅くなります。リクエストに 30 ~ 45 秒ほどかかる場合があります。
ActiveScaffold に before_filter でその魔法を強制する方法はありますか? 次のようなもの:
class SomeController < ApplicationController
before_filter :init_active_scaffold
private
def init_active_scaffold
self.class_eval do
active_scaffold :model
end
end
end
class SomeController < ApplicationController
before_filter :init_active_scaffold
private
def init_active_scaffold
self.instance_eval do
active_scaffold :model
end
end
end
class SomeController < ApplicationController
before_filter :init_active_scaffold
private
def init_active_scaffold
self.class.class_eval do
active_scaffold :model
end
end
end
class SomeController < ApplicationController
before_filter :init_active_scaffold
private
def init_active_scaffold
self.class.instance_eval do
active_scaffold :model
end
end
end
上記の 4 つのオプションをすべて試しました。リクエストを行うと、ブラウザに読み込みインジケータが表示されているように見えますが、何も起こりません。
どんな助けでも大歓迎です。前もって感謝します。