module RailsDrivers::Setup

Constants

DRIVER_PATHS

Public Instance Methods

setup_paths() click to toggle source

This allows Rails to find models, views, controllers, etc inside of drivers.

# File lib/rails_drivers/setup.rb, line 20
def setup_paths
  # This REPLACE_DEFAULT_PATH_WITH_DRIVER constant gets defined by bin/driver when we want
  # to run a command in the context of a driver instead of the main rails app.
  if defined?(REPLACE_DEFAULT_PATH_WITH_DRIVER)
    replace_rails_paths_with_driver(REPLACE_DEFAULT_PATH_WITH_DRIVER)
  else
    add_every_driver_to_rails_paths
  end
end

Private Instance Methods

add_every_driver_to_rails_paths() click to toggle source
# File lib/rails_drivers/setup.rb, line 47
def add_every_driver_to_rails_paths # rubocop:disable Metrics/AbcSize
  rails_config.autoload_paths << "#{rails_config.root}/drivers"

  Dir['drivers/*'].each do |driver|
    DRIVER_PATHS.each do |path|
      rails_config.paths[path] << "#{driver}/#{path}"
    end

    # We want to autoload driver/*/lib folders
    rails_config.autoload_paths += [
      "#{rails_config.root}/#{driver}/lib"
    ]
  end
end
rails_config() click to toggle source
# File lib/rails_drivers/setup.rb, line 32
def rails_config
  Rails.application.config
end
replace_rails_paths_with_driver(driver_name) click to toggle source
# File lib/rails_drivers/setup.rb, line 36
def replace_rails_paths_with_driver(driver_name)
  rails_config.autoload_paths << "#{rails_config.root}/drivers"

  DRIVER_PATHS.each do |path|
    rails_config.paths[path] = "drivers/#{driver_name}/#{path}"
    rails_config.autoload_paths += [
      "#{rails_config.root}/drivers/#{driver_name}/lib"
    ]
  end
end