Module: BangBang::ClassMethods

Includes:
EnvMethods
Defined in:
lib/bang-bang.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from EnvMethods

#development?, #rack_env

Instance Attribute Details

#application_nameObject

Returns the value of attribute application_name.



21
22
23
# File 'lib/bang-bang.rb', line 21

def application_name
  @application_name
end

#named_routesObject Also known as: uris

Returns the value of attribute named_routes.



21
22
23
# File 'lib/bang-bang.rb', line 21

def named_routes
  @named_routes
end

#root_dirObject

Returns the value of attribute root_dir.



21
22
23
# File 'lib/bang-bang.rb', line 21

def root_dir
  @root_dir
end

#stderr_dirObject

Returns the value of attribute stderr_dir.



21
22
23
# File 'lib/bang-bang.rb', line 21

def stderr_dir
  @stderr_dir
end

#stdout_dirObject

Returns the value of attribute stdout_dir.



21
22
23
# File 'lib/bang-bang.rb', line 21

def stdout_dir
  @stdout_dir
end

#views_classObject

Returns the value of attribute views_class.



21
22
23
# File 'lib/bang-bang.rb', line 21

def views_class
  @views_class
end

Instance Method Details

#init(params = {}) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/bang-bang.rb', line 26

def init(params={})
  self.application_name   = params[:application_name] || raise(ArgumentError, "You must provide an :application_name param")
  self.root_dir          = params[:root_dir] || raise(ArgumentError, "You must provide a :root_dir param")
  self.named_routes       = params[:named_routes] || raise(ArgumentError, "You must provide a :named_routes param")
  self.views_class        = params[:views_class] || raise(ArgumentError, "You must provide a :views_class param")

  plugins.init
end

#lib_dirObject



82
83
84
# File 'lib/bang-bang.rb', line 82

def lib_dir
  File.join(root_dir, "lib")
end

#pluginsObject



78
79
80
# File 'lib/bang-bang.rb', line 78

def plugins
  @plugins ||= ::BangBang::Plugins::Set.new(self)
end

#register_controller(controller) ⇒ Object



35
36
37
# File 'lib/bang-bang.rb', line 35

def register_controller(controller)
  controller.config = self
end

#register_service(path, &block) ⇒ Object



39
40
41
42
43
44
45
# File 'lib/bang-bang.rb', line 39

def register_service(path, &block)
  unless service_dirs.include?(path)
    service = Service.new(path)
    services << service
    service.init(&block)
  end
end

#remove_generated_filesObject



113
114
115
116
117
118
# File 'lib/bang-bang.rb', line 113

def remove_generated_files
  Dir["#{root_dir}/**/public/**/*.generated"].each do |generated_path|
    FileUtils.rm_f(File.join(File.dirname(generated_path), File.basename(generated_path, ".generated")))
    FileUtils.rm_f(generated_path)
  end
end

#service_dirsObject



47
48
49
50
51
# File 'lib/bang-bang.rb', line 47

def service_dirs
  services.map do |service|
    service.root_dir
  end
end

#service_subdirectory_dirs(relative_directory) ⇒ Object



98
99
100
101
102
103
# File 'lib/bang-bang.rb', line 98

def service_subdirectory_dirs(relative_directory)
  service_dirs.flatten.map do |service_path|
    full_path = File.join(service_path, relative_directory)
    full_path if File.directory?(full_path)
  end.compact
end

#servicesObject



53
54
55
# File 'lib/bang-bang.rb', line 53

def services
  @services ||= []
end

#services_by_root_dirObject



63
64
65
66
67
68
# File 'lib/bang-bang.rb', line 63

def services_by_root_dir
  services.inject({}) do |memo, service|
    memo[service.root_dir] = service
    memo
  end
end

#services_by_url_prefixObject



57
58
59
60
61
# File 'lib/bang-bang.rb', line 57

def services_by_url_prefix
  services.group_by do |service|
    service.url_prefix
  end
end

#services_dirObject



94
95
96
# File 'lib/bang-bang.rb', line 94

def services_dir
  File.join(root_dir, "services")
end

#stderr_loggerObject



70
71
72
# File 'lib/bang-bang.rb', line 70

def stderr_logger
  @stderr_logger ||= Logger.new(stderr_dir)
end

#stdout_loggerObject



74
75
76
# File 'lib/bang-bang.rb', line 74

def stdout_logger
  @stdout_logger ||= Logger.new(stdout_dir)
end

#stylesheets_dirsObject



86
87
88
# File 'lib/bang-bang.rb', line 86

def stylesheets_dirs
  service_subdirectory_dirs "app/stylesheets"
end

#vendor_dirObject



90
91
92
# File 'lib/bang-bang.rb', line 90

def vendor_dir
  File.join(root_dir, "vendor")
end