lib/ruby_conversations/engine.rb



# frozen_string_literal: true

require 'strongmind/auth'

module RubyConversations
  # Defines the Rails engine for RubyConversations.
  class Engine < ::Rails::Engine
    config.generators do |g|
      g.test_framework :rspec
    end

    config.autoload_paths += Dir[
      root.join('app', 'models', 'concerns', '**', '*.rb'),
      root.join('app', 'models', '**', '*.rb')
    ]

    initializer 'ruby_conversations.zeitwerk' do |_app|
      Rails.autoloaders.main.push_dir(root.join('app', 'models', 'concerns'))
      Rails.autoloaders.main.push_dir(root.join('app', 'models'))
    end

    initializer 'ruby_conversations.assets' do |app|
      # Future UI components will be added here
    end

    config.to_prepare do
      Dir.glob(Engine.root.join('app', 'models', 'concerns', 'ruby_conversations', '*.rb')).each do |c|
        require_dependency(c)
      end

      Dir.glob(Engine.root.join('app', 'models', 'ruby_conversations', '*.rb')).each do |m|
        require_dependency(m)
      end
    end

    initializer 'ruby_conversations.factories', after: 'factory_bot.set_factory_paths' do
      if defined?(FactoryBot)
        factory_path = File.expand_path('../../spec/factories', __dir__)
        FactoryBot.definition_file_paths << factory_path unless FactoryBot.definition_file_paths.include?(factory_path)
      end
    end
  end
end