Module: MonitrcHelper

Defined in:
lib/capistrano-monit/monit_config_helper.rb

Overview

This modules provides methods to create monitrc configuration files for various services

The methods are available through monitrc. in your deploy.rb

Currently you are required to manually modify your main monitrc file to include those generated by capistrano.

An example include directive:

  • include "/home/myapp/config/monit/*.monitrc"

Instance Method Summary collapse

Instance Method Details

#create(template, path, options = {}) ⇒ Object

Creates a monitrc file from a template, puts it on the server at the given path and sets file permissions to 0700.

  • template can be 'mongrel' or the name of a file or a string. 'mongrel' uses the standard mongrel templates provided with this package. See get_template below for a list of places searched for template files of your own.


27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/capistrano-monit/monit_config_helper.rb', line 27

def create(template, path, options = {})
  
  template = template.to_s
      
  options = add_default_options(options)

  if template == 'mongrel'
    config_data = mongrel_ports.collect {|port| render options.merge(:template => get_template(template), :port => port)}.join("\n\n")
  else
    config_data = render options.merge(:template => get_template(template))
  end
  put config_data, path, :mode => 0700

end

#get_template(template) ⇒ Object

Works out whether the given template is a file or string containing rhtml.

Checks:

  • current directory
  • monitrc_templates path (defaults to templates/monit)
  • capistrano-monit-tasks-templates dir where cappy-monit is installed (the standard templates are here)

If it can't find the file it assumes it's a one line string template and returns that



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/capistrano-monit/monit_config_helper.rb', line 52

def get_template(template)
  if template =~ /<%/ or template =~ /\n/
    template
  else
    [ ".",
      configuration.monitrc_template_path,
      File.join(File.dirname(__FILE__), 'templates')
    ].each do |dir|
      if File.file?(File.join(dir, template))
        return File.read(File.join(dir, template))
      elsif File.file?(File.join(dir, template + ".erb"))
        @file_template_full_path = File.join(dir, template + ".erb")
        return File.read(File.join(dir, template + ".erb"))
      end
    end
  end
  template
end