RailsでERBハンドラを無効にする方法はありますか?RailsでERBハンドラを無効にする
これはばかげているかもしれませんが、私たちはSLIMに移行しており、 には、まだ怠け者の開発者がERBを使用していないようにしたいと考えています。
RailsでERBハンドラを無効にする方法はありますか?RailsでERBハンドラを無効にする
これはばかげているかもしれませんが、私たちはSLIMに移行しており、 には、まだ怠け者の開発者がERBを使用していないようにしたいと考えています。
私が見る限り、unregister
にはテンプレートハンドラがありません。
しかし、私たちはハックによってそれを行うことができます。
ActionView::Template::Handlers::ERB
には次の行があります。
self.class.erb_implementation.new(
erb,
:trim => (self.class.erb_trim_mode == "-")
).src
だから、楽しんでください。
私たちは、ERBを使用しようとする任意のビューが、私はこれが動作するはずだと思う
ActionView::Template::Error (ERB is not allowed):
エラーが発生しますconfig/initializers/no_erb_allowed.rb
class NoErbAllowed
def initialize(*args)
raise "ERB is not allowed"
end
end
ActionView::Template::Handlers::ERB.erb_implementation = NoErbAllowed
初期化子を追加します:
handlers = ActionView::Template::Handlers.class_variable_get :@@template_handlers
handlers.delete :erb
ActionView::Template::Handlers.class_variable_set :@@template_handlers, handlers
を
基本的にこれは@@template_handlers
ハッシュをから取得します0の場合は、:erb
キー(ERBハンドラを指す)を削除し、クラスに戻します。
これはおそらくinitializerになります。それは便利だという希望を(明らかに)ActionView::Template::Handlers
後にロードする必要があるが、私はそれがto_prepare
またはbefore_eager_load
初期化子に属し、例えば思いので、ハンドラ自体がロードされる前に:
module YourApp
class Application < Rails::Application
config.before_eager_load do
handlers = ActionView::Template::Handlers.class_variable_get :@@template_handlers
handlers.delete :erb
ActionView::Template::Handlers.class_variable_set :@@template_handlers, handlers
end
end
end
!
私はActionView :: Template :: Handlersでの作業を開始します。それがerbハンドラを登録するものです。一番簡単なのは、登録抹消と登録抹消をすることです。 –