Skip to content

Commit

Permalink
ensure selected version of passenger is installed and loaded by apache
Browse files Browse the repository at this point in the history
  • Loading branch information
jnewland committed Jun 7, 2011
1 parent ce3dc0e commit b5c9ef7
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 52 deletions.
23 changes: 11 additions & 12 deletions lib/moonshine/manifest/rails/passenger.rb
@@ -1,21 +1,23 @@
module Moonshine::Manifest::Rails::Passenger module Moonshine::Manifest::Rails::Passenger

BLESSED_VERSION = '3.0.7'

# Install the passenger gem # Install the passenger gem
def passenger_gem def passenger_gem
blessed_version = '3.0.7'
configure(:passenger => {}) configure(:passenger => {})
if configuration[:passenger][:version] && configuration[:passenger][:version] < "3.0" if configuration[:passenger][:version] && configuration[:passenger][:version] < "3.0"
package "passenger", package "passenger",
:ensure => configuration[:passenger][:version], :ensure => configuration[:passenger][:version],
:provider => :gem :provider => :gem
elsif configuration[:passenger][:version] == :latest elsif configuration[:passenger][:version].nil? || configuration[:passenger][:version] == :latest
package "passenger", package "passenger",
:ensure => blessed_version, :ensure => BLESSED_VERSION,
:provider => :gem, :provider => :gem,
:require => [ package('libcurl4-openssl-dev') ] :require => [ package('libcurl4-openssl-dev') ]
package 'libcurl4-openssl-dev', :ensure => :installed package 'libcurl4-openssl-dev', :ensure => :installed
else elsif configuration[:passenger][:version]
package "passenger", package "passenger",
:ensure => (configuration[:passenger][:version] || blessed_version), :ensure => (configuration[:passenger][:version]),
:provider => :gem, :provider => :gem,
:require => [ package('libcurl4-openssl-dev') ] :require => [ package('libcurl4-openssl-dev') ]
package 'libcurl4-openssl-dev', :ensure => :installed package 'libcurl4-openssl-dev', :ensure => :installed
Expand Down Expand Up @@ -92,14 +94,11 @@ def passenger_site


def passenger_configure_gem_path def passenger_configure_gem_path
configure(:passenger => {}) configure(:passenger => {})
return configuration[:passenger][:path] if configuration[:passenger][:path] if configuration[:passenger][:version].nil? || configuration[:passenger][:version] == :latest
version = begin configure(:passenger => { :path => "#{Gem.dir}/gems/passenger-#{BLESSED_VERSION}" })
configuration[:passenger][:version] || Gem::SourceIndex.from_installed_gems.find_name("passenger").last.version.to_s elsif configuration[:passenger][:version]
rescue configure(:passenger => { :path => "#{Gem.dir}/gems/passenger-#{configuration[:passenger][:version]}" })
`gem install passenger --no-ri --no-rdoc`
`passenger-config --version`.chomp
end end
configure(:passenger => { :path => "#{Gem.dir}/gems/passenger-#{version}" })
end end


private private
Expand Down
65 changes: 65 additions & 0 deletions spec/moonshine/manifest/passenger_spec.rb
@@ -0,0 +1,65 @@
require 'spec_helper'

describe Moonshine::Manifest::Rails::Passenger do
before do
@manifest = Moonshine::Manifest::Rails.new
end

context 'without a version configured' do
before do
@manifest.configure(:passenger => { :version => nil })
@manifest.passenger_gem
@manifest.passenger_configure_gem_path
@manifest.passenger_apache_module
end

it "installs #{Moonshine::Manifest::Rails::Passenger::BLESSED_VERSION} by default" do
@manifest.should have_package('passenger').version(Moonshine::Manifest::Rails::Passenger::BLESSED_VERSION)
end

it "loads #{Moonshine::Manifest::Rails::Passenger::BLESSED_VERSION} into apache" do
@manifest.should have_file('/etc/apache2/mods-available/passenger.load').with_content(
/#{Moonshine::Manifest::Rails::Passenger::BLESSED_VERSION}/
)
end

it 'configures and builds the apache module' do
@manifest.should have_package('apache2-threaded-dev')
@manifest.should have_file('/etc/apache2/mods-available/passenger.conf').with_content(
/PassengerUseGlobalQueue On/
)
@manifest.should exec_command('/usr/sbin/a2enmod passenger')
@manifest.should exec_command('sudo /usr/bin/ruby -S rake clean apache2')
end

it "allows setting booleans configurations to false" do
@manifest.configure(:passenger => { :use_global_queue => false })
@manifest.passenger_configure_gem_path
@manifest.passenger_apache_module

@manifest.should have_file('/etc/apache2/mods-available/passenger.conf').with_content(
/PassengerUseGlobalQueue Off/
)
end
end

context 'with a version configured' do
before do
@manifest.configure(:passenger => { :version => '2.2.2' })
@manifest.passenger_gem
@manifest.passenger_configure_gem_path
@manifest.passenger_apache_module
end

it 'installs the configured version' do
@manifest.should have_package('passenger').version('2.2.2')
end

it "loads the configured version into apache" do
@manifest.should have_file('/etc/apache2/mods-available/passenger.load').with_content(
/2.2.2/
)
end
end

end
40 changes: 0 additions & 40 deletions spec/moonshine/manifest/rails_spec.rb
Expand Up @@ -148,46 +148,6 @@ def search(gem_pattern, platform_only = false)
end end


describe "passenger support" do describe "passenger support" do
it "installs 3.0.7 by default " do
@manifest.configure(:passenger => { :version => nil })

@manifest.passenger_configure_gem_path
@manifest.passenger_gem

@manifest.should have_package('passenger').version('3.0.7')
end

it "can be pinned to a specific version" do
@manifest.configure(:passenger => { :version => '2.2.2' })
@manifest.passenger_configure_gem_path
@manifest.passenger_gem

@manifest.should have_package('passenger').version('2.2.2')
end

it "installs passenger apache module" do
@manifest.passenger_configure_gem_path
@manifest.passenger_apache_module

@manifest.should have_package('apache2-threaded-dev')
@manifest.should have_file('/etc/apache2/mods-available/passenger.load')
@manifest.should have_file('/etc/apache2/mods-available/passenger.conf').with_content(
/PassengerUseGlobalQueue On/
)
@manifest.should exec_command('/usr/sbin/a2enmod passenger')
@manifest.should exec_command('sudo /usr/bin/ruby -S rake clean apache2')
end

it "allows setting booleans configurations to false" do
@manifest.configure(:passenger => { :use_global_queue => false })
@manifest.passenger_configure_gem_path
@manifest.passenger_apache_module

@manifest.should have_file('/etc/apache2/mods-available/passenger.conf').with_content(
/PassengerUseGlobalQueue Off/
)
end



describe "passenger_site" do describe "passenger_site" do
it "enables passenger vhost, disables default vhost, and configures mod_rewrite" do it "enables passenger vhost, disables default vhost, and configures mod_rewrite" do
Expand Down

0 comments on commit b5c9ef7

Please sign in to comment.