Class: Warbler::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/warbler/config.rb

Overview

Warbler assembly configuration.

Constant Summary collapse

TOP_DIRS =
%w(app config lib log vendor)
FILE =
"config/warble.rb"
BUILD_GEMS =
%w(warbler rake rcov)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(warbler_home = WARBLER_HOME) {|_self| ... } ⇒ Config

Returns a new instance of Config.

Yields:

  • (_self)

Yield Parameters:



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/warbler/config.rb', line 98

def initialize(warbler_home = WARBLER_HOME)
  @staging_dir = File.join("tmp", "war")
  @dirs        = TOP_DIRS.select {|d| File.directory?(d)}
  @includes    = FileList[]
  @excludes    = FileList[]
  @java_libs   = FileList[]
  @jruby_complete_jar = default_jruby_complete_jar
  @java_classes = FileList[]
  @gems        = Warbler::Gems.new
  @gem_dependencies = true
  @exclude_logs = true
  @public_html = FileList["public/**/*"]
  @pathmaps    = default_pathmaps
  @webxml      = default_webxml_config
  @rails_root  = File.expand_path(defined?(RAILS_ROOT) ? RAILS_ROOT : Dir.getwd)
  @war_name    = File.basename(@rails_root)
  auto_detect_frameworks
  yield self if block_given?

  unless File.file?(@jruby_complete_jar)
  
  raise %{
Couldn't find #{@jruby_complete_jar} 
Please do one of the following:

* Set config.jruby_complete_jar in your config/warble.rb
* Download a jruby-complete.jar and put it in your JRuby's lib dir (without version number)
* If you are running warble with a non-JRuby interpreter - set JRUBY_HOME
  }
  end
  @java_libs += FileList[@jruby_complete_jar,"#{warbler_home}/lib/*.jar"]
  @excludes += warbler_vendor_excludes(warbler_home)
  @excludes += FileList["**/*.log"] if @exclude_logs
  @excludes << @staging_dir
end

Instance Attribute Details

#autodeploy_dirObject

Directory where the war file will be written. Can be used to direct Warbler to place your war file directly in your application server’s autodeploy directory. Defaults to the root of the Rails directory.



27
28
29
# File 'lib/warbler/config.rb', line 27

def autodeploy_dir
  @autodeploy_dir
end

#dirsObject

Top-level directories to be copied into WEB-INF. Defaults to names in TOP_DIRS



31
32
33
# File 'lib/warbler/config.rb', line 31

def dirs
  @dirs
end

#exclude_logsObject

Whether to exclude */.log files (default is true)



53
54
55
# File 'lib/warbler/config.rb', line 53

def exclude_logs
  @exclude_logs
end

#excludesObject

Files to exclude from the WEB-INF directory



38
39
40
# File 'lib/warbler/config.rb', line 38

def excludes
  @excludes
end

#gem_dependenciesObject

Whether to include dependent gems (default true)



50
51
52
# File 'lib/warbler/config.rb', line 50

def gem_dependencies
  @gem_dependencies
end

#gemsObject

Rubygems to install into the webapp at WEB-INF/gems



47
48
49
# File 'lib/warbler/config.rb', line 47

def gems
  @gems
end

#includesObject

Additional files beyond the top-level directories to include in the WEB-INF directory



35
36
37
# File 'lib/warbler/config.rb', line 35

def includes
  @includes
end

#java_classesObject

Java classes and other files to copy to WEB-INF/classes



41
42
43
# File 'lib/warbler/config.rb', line 41

def java_classes
  @java_classes
end

#java_libsObject

Java libraries to copy to WEB-INF/lib



44
45
46
# File 'lib/warbler/config.rb', line 44

def java_libs
  @java_libs
end

#jruby_complete_jarObject

The jruby-complete.jar to package with the war. Defaults to jruby-complete.jar inside current JRuby if it exists.



22
23
24
# File 'lib/warbler/config.rb', line 22

def jruby_complete_jar
  @jruby_complete_jar
end

#manifest_fileObject

Name of the MANIFEST.MF template. Defaults to the MANIFEST.MF normally generated by jar -cf.…



69
70
71
# File 'lib/warbler/config.rb', line 69

def manifest_file
  @manifest_file
end

#pathmapsObject

Container of pathmaps used for specifying source-to-destination transformations under various situations (public_html and java_classes are two entries in this structure).



61
62
63
# File 'lib/warbler/config.rb', line 61

def pathmaps
  @pathmaps
end

#public_htmlObject

Public HTML directory file list, to be copied into the root of the war



56
57
58
# File 'lib/warbler/config.rb', line 56

def public_html
  @public_html
end

#staging_dirObject

Directory where files will be staged, defaults to tmp/war



18
19
20
# File 'lib/warbler/config.rb', line 18

def staging_dir
  @staging_dir
end

#war_nameObject

Name of war file (without the .war), defaults to the directory name containing the Rails application



65
66
67
# File 'lib/warbler/config.rb', line 65

def war_name
  @war_name
end

#webxmlObject

Extra configuration for web.xml. Controls how the dynamically-generated web.xml file is generated.

  • webxml.jndi – the name of one or more JNDI data sources name to be available to the application. Places appropriate &lt;resource-ref&gt; entries in the file.

  • webxml.ignored – array of key names that will be not used to generate a context param. Defaults to [‘jndi’, ‘booter’]

Any other key/value pair placed in the open structure will be dumped as a context parameter in the web.xml file. Some of the recognized values are:

  • webxml.rails.env – the Rails environment to use for the running application, usually either development or production (the default).

  • webxml.jruby.min.runtimes – minimum number of pooled runtimes to keep around during idle time

  • webxml.jruby.max.runtimes – maximum number of pooled Rails application runtimes

Note that if you attempt to access webxml configuration keys in a conditional, you might not obtain the result you want. For example:

<%= webxml.maybe.present.key || 'default' %>

doesn’t yield the right result. Instead, you need to generate the context parameters:

<%= webxml.context_params['maybe.present.key'] || 'default' %>


96
97
98
# File 'lib/warbler/config.rb', line 96

def webxml
  @webxml
end