Module Moonshine::Manifest::Rails::Passenger

  1. lib/moonshine/manifest/rails/passenger.rb (view online)

Public instance methods

passenger_apache_module ()

Build, install, and enable the passenger apache module. Please see the passenger.conf.erb template for passenger configuration options.

[show source]
    # File lib/moonshine/manifest/rails/passenger.rb, line 10
10:   def passenger_apache_module
11:     # Install Apache2 developer library
12:     package "apache2-threaded-dev", :ensure => :installed
13: 
14:     file "/usr/local/src", :ensure => :directory
15: 
16:     exec "symlink_passenger",
17:       :command => 'ln -nfs `passenger-config --root` /usr/local/src/passenger',
18:       :unless => 'ls -al /usr/local/src/passenger | grep `passenger-config --root`',
19:       :require => [
20:         package("passenger"),
21:         file("/usr/local/src")
22:       ]
23: 
24:     # Build Passenger from source
25:     exec "build_passenger",
26:       :cwd => configuration[:passenger][:path],
27:       :command => '/usr/bin/ruby -S rake clean apache2',
28:       :unless => "ls `passenger-config --root`/ext/apache2/mod_passenger.so",
29:       :require => [
30:         package("passenger"),
31:         package("apache2-mpm-worker"),
32:         package("apache2-threaded-dev"),
33:         exec('symlink_passenger')
34:       ]
35: 
36:     load_template = "LoadModule passenger_module #{configuration[:passenger][:path]}/ext/apache2/mod_passenger.so"
37: 
38:     file '/etc/apache2/mods-available/passenger.load',
39:       :ensure => :present,
40:       :content => load_template,
41:       :require => [exec("build_passenger")],
42:       :notify => service("apache2"),
43:       :alias => "passenger_load"
44: 
45:     file '/etc/apache2/mods-available/passenger.conf',
46:       :ensure => :present,
47:       :content => template(File.join(File.dirname(__FILE__), 'templates', 'passenger.conf.erb')),
48:       :require => [exec("build_passenger")],
49:       :notify => service("apache2"),
50:       :alias => "passenger_conf"
51: 
52:     a2enmod 'passenger', :require => [exec("build_passenger"), file("passenger_conf"), file("passenger_load")]
53:   end
passenger_configure_gem_path ()
[show source]
    # File lib/moonshine/manifest/rails/passenger.rb, line 69
69:   def passenger_configure_gem_path
70:     configure(:passenger => {})
71:     return configuration[:passenger][:path] if configuration[:passenger][:path]
72:     version = begin
73:       configuration[:passenger][:version] || Gem::SourceIndex.from_installed_gems.find_name("passenger").last.version.to_s
74:     rescue
75:       `gem install passenger --no-ri --no-rdoc`
76:       `passenger-config --version`.chomp
77:     end
78:     configure(:passenger => { :path => "#{Gem.dir}/gems/passenger-#{version}" })
79:   end
passenger_gem ()

Install the passenger gem

[show source]
   # File lib/moonshine/manifest/rails/passenger.rb, line 3
3:   def passenger_gem
4:     configure(:passenger => {})
5:     package "passenger", :ensure => (configuration[:passenger][:version] || :latest), :provider => :gem
6:   end
passenger_site ()

Creates and enables a vhost configuration named after your application. Also ensures that the 000-default vhost is disabled.

[show source]
    # File lib/moonshine/manifest/rails/passenger.rb, line 57
57:   def passenger_site
58:     file "/etc/apache2/sites-available/#{configuration[:application]}",
59:       :ensure => :present,
60:       :content => template(File.join(File.dirname(__FILE__), 'templates', 'passenger.vhost.erb')),
61:       :notify => service("apache2"),
62:       :alias => "passenger_vhost",
63:       :require => exec("a2enmod passenger")
64: 
65:     a2dissite '000-default', :require => file("passenger_vhost")
66:     a2ensite configuration[:application], :require => file("passenger_vhost")
67:   end