Module: Moonshadow::Manifest::Rails::Passenger
- Included in:
- Moonshadow::Manifest::Rails
- Defined in:
- lib/moonshine/manifest/rails/passenger.rb
Instance Method Summary collapse
-
#passenger_apache_module ⇒ Object
Build, install, and enable the passenger apache module.
- #passenger_configure_gem_path ⇒ Object
-
#passenger_gem ⇒ Object
Install the passenger gem.
-
#passenger_site ⇒ Object
Creates and enables a vhost configuration named after your application.
Instance Method Details
#passenger_apache_module ⇒ Object
Build, install, and enable the passenger apache module. Please see the passenger.conf.erb
template for passenger configuration options.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/moonshine/manifest/rails/passenger.rb', line 10 def passenger_apache_module # Install Apache2 developer library package "apache2-threaded-dev", :ensure => :installed file "/usr/local/src", :ensure => :directory exec "symlink_passenger", :command => 'ln -nfs `passenger-config --root` /usr/local/src/passenger', :unless => 'ls -al /usr/local/src/passenger | grep `passenger-config --root`', :require => [ package("passenger"), file("/usr/local/src") ] # Build Passenger from source exec "build_passenger", :cwd => configuration[:passenger][:path], :command => '/usr/bin/ruby -S rake clean apache2', :unless => "ls `passenger-config --root`/ext/apache2/mod_passenger.so", :require => [ package("passenger"), package("apache2-mpm-worker"), package("apache2-threaded-dev"), exec('symlink_passenger') ] load_template = "LoadModule passenger_module #{configuration[:passenger][:path]}/ext/apache2/mod_passenger.so" file '/etc/apache2/mods-available/passenger.load', :ensure => :present, :content => load_template, :require => [exec("build_passenger")], :notify => service("apache2"), :alias => "passenger_load" file '/etc/apache2/mods-available/passenger.conf', :ensure => :present, :content => template(File.join(File.dirname(__FILE__), 'templates', 'passenger.conf.erb')), :require => [exec("build_passenger")], :notify => service("apache2"), :alias => "passenger_conf" a2enmod 'passenger', :require => [exec("build_passenger"), file("passenger_conf"), file("passenger_load")] end |
#passenger_configure_gem_path ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/moonshine/manifest/rails/passenger.rb', line 69 def passenger_configure_gem_path configure(:passenger => {}) return configuration[:passenger][:path] if configuration[:passenger][:path] version = begin configuration[:passenger][:version] || Gem::SourceIndex.from_installed_gems.find_name("passenger").last.version.to_s rescue `gem install passenger --no-ri --no-rdoc` `passenger-config --version`.chomp end configure(:passenger => { :path => "#{Gem.dir}/gems/passenger-#{version}" }) end |
#passenger_gem ⇒ Object
Install the passenger gem
3 4 5 6 |
# File 'lib/moonshine/manifest/rails/passenger.rb', line 3 def passenger_gem configure(:passenger => {}) package "passenger", :ensure => (configuration[:passenger][:version] || :latest), :provider => :gem end |
#passenger_site ⇒ Object
Creates and enables a vhost configuration named after your application. Also ensures that the 000-default
vhost is disabled.
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/moonshine/manifest/rails/passenger.rb', line 57 def passenger_site file "/etc/apache2/sites-available/#{configuration[:application]}", :ensure => :present, :content => template(File.join(File.dirname(__FILE__), 'templates', 'passenger.vhost.erb')), :notify => service("apache2"), :alias => "passenger_vhost", :require => exec("a2enmod passenger") a2dissite '000-default', :require => file("passenger_vhost") a2ensite configuration[:application], :require => file("passenger_vhost") end |