Sha256: 6c194ab88dd75879a918b2e0301171763a395d16dc5ff002e46c635c2c779a32

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

require "teaspoon/exceptions"

module Teaspoon
  module Environment
    def self.load(options = {})
      load_rails
      Teaspoon.abort("Rails environment not found.", 1) unless rails_loaded?

      require "teaspoon"
      require "teaspoon/server"
      require "teaspoon/runner"
      require "teaspoon/coverage"
      require "teaspoon/exporter"

      Teaspoon.configuration.override_from_options(options)
      Teaspoon::Engine::ExceptionHandling.add_rails_handling
    end

    def self.require_environment(override = nil)
      require_env(find_env(override))
    end

    def self.check_env!(override = nil)
      find_env(override)
    end

    private

    def self.find_env(override = nil)
      override ||= ENV["TEASPOON_ENV"]
      env_files = override ? [override] : standard_environments

      env_files.each do |filename|
        file = File.expand_path(filename, Dir.pwd)
        ENV["TEASPOON_ENV"] = file if override
        return file if File.exists?(file)
      end

      raise Teaspoon::EnvironmentNotFound.new(searched: env_files.join(", "))
    end

    def self.standard_environments
      ["spec/teaspoon_env.rb", "test/teaspoon_env.rb", "teaspoon_env.rb"]
    end

    def self.require_env(file)
      ::Kernel.load(file)
    end

    def self.rails_loaded?
      !!defined?(Rails)
    end

    def self.load_rails
      rails_env = ENV["TEASPOON_RAILS_ENV"] || File.expand_path("config/environment", Dir.pwd)
      require rails_env
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
teaspoon-1.0.2 lib/teaspoon/environment.rb
teaspoon-1.0.1 lib/teaspoon/environment.rb
teaspoon-1.0.0 lib/teaspoon/environment.rb