Class: Spork::AppFramework

Inherits:
Object
  • Object
show all
Defined in:
lib/spork/app_framework.rb

Direct Known Subclasses

Rails, Unknown

Defined Under Namespace

Classes: Rails, Unknown

Constant Summary collapse

SUPPORTED_FRAMEWORKS =

A hash of procs where the key is the class name, and the proc takes no arguments and returns true if it detects that said application framework is being used in the project.

The key :Rails maps to Spork::AppFramework::Rails

This is used to reduce the amount of code needed to be loaded - only the detected application framework’s support code is loaded.

{
  :Rails => lambda {
    File.exist?("config/environment.rb") && File.read("config/environment.rb").include?('RAILS_GEM_VERSION')
  }
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.[](name) ⇒ Object

Initializes, stores, and returns a singleton instance of the named AppFramework.

Parameters

# name - A symbolic name of a AppFramework subclass

Example

Spork::AppFramework[:Rails]


42
43
44
# File 'lib/spork/app_framework.rb', line 42

def self.[](name)
  instances[name] ||= const_get(name).new
end

.detect_frameworkObject

Same as detect_framework_name, but returns an instance of the specific AppFramework class.



28
29
30
31
# File 'lib/spork/app_framework.rb', line 28

def self.detect_framework
  name = detect_framework_name
  self[name]
end

.detect_framework_nameObject

Iterates through all SUPPORTED_FRAMEWORKS and returns the symbolic name of the project application framework detected. Otherwise, returns :Unknown



20
21
22
23
24
25
# File 'lib/spork/app_framework.rb', line 20

def self.detect_framework_name
  SUPPORTED_FRAMEWORKS.each do |key, value|
    return key if value.call
  end
  :Unknown
end

.setup_autoloadObject



13
14
15
16
17
# File 'lib/spork/app_framework.rb', line 13

def self.setup_autoload
  ([:Unknown] + SUPPORTED_FRAMEWORKS.keys).each do |name|
    autoload name, File.join(File.dirname(__FILE__), "app_framework", name.to_s.downcase)
  end
end

.short_nameObject



46
47
48
# File 'lib/spork/app_framework.rb', line 46

def self.short_name
  name.gsub('Spork::AppFramework::', '')
end

Instance Method Details

#bootstrap_required?Boolean

If there is some stuff out of the box that the Spork can do to speed up tests without the test helper file being bootstrapped, this should return false.

Returns:

  • (Boolean)


51
52
53
# File 'lib/spork/app_framework.rb', line 51

def bootstrap_required?
  entry_point.nil?
end

#entry_pointObject

Abstract: The path to the file that loads the project environment, ie config/environment.rb. Returns nil if there is none.

Raises:

  • (NotImplementedError)


56
57
58
# File 'lib/spork/app_framework.rb', line 56

def entry_point
  raise NotImplementedError
end

#preload(&block) ⇒ Object



60
61
62
# File 'lib/spork/app_framework.rb', line 60

def preload(&block)
  yield
end

#short_nameObject



64
65
66
# File 'lib/spork/app_framework.rb', line 64

def short_name
  self.class.short_name
end