ActiveAdminのアセットが影響しないように切り離す

ActiveAdminを使っていると、アセットの汚染が起こるときがあるみたいですね。

ということでActiveAdminのアセットが、admin以外のページのマニフェストでは読み込まれないようにしておきます。

以下の記事を参考にさせていただきました。

ActiveAdminを使用する場合はassetの汚染に注意 - yamotonalds's blog

1. assetsを退避

admin用のアセットを退避して、読み込まないようにします。

$ mkdir app/assets/stylesheets/admin
$ mv app/assets/stylesheets/active_admin.scss app/assets/stylesheets/admin/

$ mkdir app/assets/javascripts/admi
$ mv app/assets/javascripts/active_admin.js.coffee app/assets/javascripts/admin/

そしたら、アセットパイプラインを書き換えます。

ルートにそれぞれひとつずつマニフェストを用意しているなら、単にrequire_directory .とかにするのもいいかなと思います。例えば、CSS用のマニフェストなら、

# app/assets/stylesheets/application.css
# ...
 *= require_directory .
 *= require_self
# ...

みたいな感じで。

2. ActiveAdminのアセットの設定を変更

ActiveAdminの設定で、読み込むアセットを一旦全部リセットして、特定のものだけ登録するということをしておきます。

以下を追加すればokです。

# config/initializers/active_admin.rb
# ...
  config.clear_stylesheets!
  config.register_stylesheet "admin/active_admin.css"
  config.clear_javascripts!
  config.register_javascript "admin/active_admin.js"
# ...