yoolk/themes_on_rails

View on GitHub
lib/themes_on_rails/engine.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'rails/generators'

module ThemesOnRails
  class Engine < ::Rails::Engine
    initializer 'themes_on_rails.action_controller' do |app|
      ActiveSupport.on_load :action_controller do
        include ThemesOnRails::ControllerAdditions
      end
    end

    initializer 'themes_on_rails.load_locales' do |app|
      app.config.i18n.load_path += Dir[Rails.root.join('app/themes/*', 'locales', '**', '*.yml').to_s]
    end

    initializer 'themes_on_rails.assets_path' do |app|
      Dir.glob("#{Rails.root}/app/themes/*/assets/*").each do |dir|
        app.config.assets.paths << dir
      end
    end

    initializer 'themes_on_rails.precompile' do |app|
      app.config.assets.precompile << Proc.new do |path, fn|
        if fn =~ /app\/themes/
          basename = path.split('/').last
          if !%w(.js .css).include?(File.extname(path))
            true
          elsif path =~ /^[^\/]+\/all((_|-).+)?\.(js|css)$/
            # 1. don't allow nested: theme_a/responsive/all.js
            # 2. allow start_with all_ or all-
            # 3. allow all.js and all.css
            true
          else
            false
          end
        end
      end
    end
  end
end