Sha256: b1a621aa568fdba004c1791d0d0fac7e0ac41afb7f2d6c236b941ee77bae0218
Contents?: true
Size: 1.87 KB
Versions: 4
Compression:
Stored size: 1.87 KB
Contents
require 'rails' # Refinement that returns engines method to Rails::Engine::Railties # so that we can access the engines deprecated in Rails 4.1 module Metasploit module Concern # Rails engine for Metasploit::Concern that sets up an initializer to load the concerns from app/concerns in other # Rails engines. class Engine < ::Rails::Engine # # `config` # # @see http://viget.com/extend/rails-engine-testing-with-rspec-capybara-and-factorygirl config.generators do |g| g.assets false g.helper false g.test_framework :rspec, fixture: false end # # `initializer`s # initializer 'metasploit_concern.load_concerns' do application = Rails.application engines = application.railties._all.select{|rt| rt.is_a? Rails::Engine} # application is an engine engines = [application, *engines] engines.each do |engine| concerns_path = engine.paths['app/concerns'] if concerns_path if concerns_path.eager_load? raise Metasploit::Concern::Error::EagerLoad, engine end unless concerns_path.autoload? raise Metasploit::Concern::Error::SkipAutoload, engine end ActiveSupport::Reloader.to_prepare do # wrap engine configs changes in to_prepare to ensure they get recreated if classes are reloaded by zeitwerk concerns_directories = concerns_path.existent_directories concerns_directories.each do |concerns_directory| concerns_pathname = Pathname.new(concerns_directory) loader = Metasploit::Concern::Loader.new(root: concerns_pathname) loader.register end end end end end isolate_namespace Metasploit::Concern end end end
Version data entries
4 entries across 4 versions & 1 rubygems