Class: Trinidad::WebApp

Inherits:
Object
  • Object
show all
Defined in:
lib/trinidad/web_app.rb

Direct Known Subclasses

RackupWebApp, RailsWebApp, WarWebApp

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, app_config, servlet_class = 'org.jruby.rack.RackServlet', servlet_name = 'RackServlet') ⇒ WebApp

Returns a new instance of WebApp.



18
19
20
21
22
23
24
25
# File 'lib/trinidad/web_app.rb', line 18

def initialize(config, app_config, servlet_class = 'org.jruby.rack.RackServlet', servlet_name = 'RackServlet')
  @config = config
  @app_config = app_config

  @class_loader = org.jruby.util.JRubyClassLoader.new(JRuby.runtime.jruby_class_loader)

  configure_rack_servlet(servlet_class, servlet_name) unless rack_servlet_configured?
end

Instance Attribute Details

#app_configObject (readonly)

Returns the value of attribute app_config.



3
4
5
# File 'lib/trinidad/web_app.rb', line 3

def app_config
  @app_config
end

#class_loaderObject (readonly)

Returns the value of attribute class_loader.



3
4
5
# File 'lib/trinidad/web_app.rb', line 3

def class_loader
  @class_loader
end

#configObject (readonly)

Returns the value of attribute config.



3
4
5
# File 'lib/trinidad/web_app.rb', line 3

def config
  @config
end

#servletObject (readonly)

Returns the value of attribute servlet.



3
4
5
# File 'lib/trinidad/web_app.rb', line 3

def servlet
  @servlet
end

Class Method Details

.create(config, app_config) ⇒ Object



5
6
7
8
# File 'lib/trinidad/web_app.rb', line 5

def self.create(config, app_config)
  war?(app_config) ? WarWebApp.new(config, app_config) :
    rackup?(app_config) ? RackupWebApp.new(config, app_config) : RailsWebApp.new(config, app_config)
end

.rackup?(app_config) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/trinidad/web_app.rb', line 10

def self.rackup?(app_config)
  app_config.has_key?(:rackup) || !Dir['WEB-INF/**/config.ru'].empty?
end

.war?(app_config) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/trinidad/web_app.rb', line 14

def self.war?(app_config)
  app_config[:context_path] =~ /\.war$/
end

Instance Method Details

#default_deployment_descriptorObject



41
42
43
44
45
46
# File 'lib/trinidad/web_app.rb', line 41

def default_deployment_descriptor
  @deployment_descriptor ||= if default_web_xml
    file = File.expand_path(File.join(work_dir, default_web_xml))
    File.exist?(file) ? file : nil
  end
end

#environmentObject



84
# File 'lib/trinidad/web_app.rb', line 84

def environment; @app_config[:environment] || @config[:environment] || 'development'; end

#extensionsObject



74
75
76
77
78
79
80
# File 'lib/trinidad/web_app.rb', line 74

def extensions
  @extensions ||= begin
    extensions = @config[:extensions] || {}
    extensions.merge!(@app_config[:extensions]) if @app_config[:extensions]
    extensions
  end
end

#init_paramsObject



31
32
33
34
35
36
37
38
39
# File 'lib/trinidad/web_app.rb', line 31

def init_params
  @params ||= {}
  add_parameter_unless_exist 'jruby.min.runtimes', jruby_min_runtimes.to_s
  add_parameter_unless_exist 'jruby.max.runtimes', jruby_max_runtimes.to_s
  add_parameter_unless_exist 'jruby.initial.runtimes', jruby_min_runtimes.to_s
  add_parameter_unless_exist 'public.root', File.join('/', public_root)
  add_parameter_unless_exist 'jruby.compat.version', RUBY_VERSION
  @params
end

#monitorObject



94
95
96
97
# File 'lib/trinidad/web_app.rb', line 94

def monitor
  m_file = @app_config[:monitor] || @config[:monitor] || 'tmp/restart.txt'
  File.expand_path(m_file, work_dir)
end

#public_rootObject



62
63
64
# File 'lib/trinidad/web_app.rb', line 62

def public_root
  @app_config[:public]  || @config[:public] || 'public'
end

#rack_listenerObject



27
28
29
# File 'lib/trinidad/web_app.rb', line 27

def rack_listener
  context_listener unless rack_listener_configured?
end

#rack_listener_configured?Boolean

Returns:

  • (Boolean)


56
57
58
59
60
# File 'lib/trinidad/web_app.rb', line 56

def rack_listener_configured?
  !!( web_xml &&
      web_xml.root.elements["/web-app/listener[contains(listener-class, '#{context_listener}')]"]
  )
end

#rack_servlet_configured?Boolean

Returns:

  • (Boolean)


48
49
50
51
52
53
54
# File 'lib/trinidad/web_app.rb', line 48

def rack_servlet_configured?
  !!( web_xml && (
      web_xml.root.elements["/web-app/servlet[contains(servlet-class, 'org.jruby.rack.RackServlet')]"] ||
      web_xml.root.elements["/web-app/filter[contains(filter-class, 'org.jruby.rack.RackFilter')]"]
    )
  )
end

#solo?Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/trinidad/web_app.rb', line 86

def solo?
  !self.is_a?(WarWebApp) && @app_config[:solo]
end

#threadsafe?Boolean

Returns:

  • (Boolean)


90
91
92
# File 'lib/trinidad/web_app.rb', line 90

def threadsafe?
  jruby_min_runtimes.to_i == 1 && jruby_max_runtimes.to_i == 1
end

#war?Boolean

Returns:

  • (Boolean)


82
# File 'lib/trinidad/web_app.rb', line 82

def war?; WebApp.war?(app_config); end

#work_dirObject



83
# File 'lib/trinidad/web_app.rb', line 83

def work_dir; web_app_dir; end