forked from wrecked/shadow_rails
-
Notifications
You must be signed in to change notification settings - Fork 0
/
passenger.rb
76 lines (64 loc) · 2.03 KB
/
passenger.rb
1
2
3
4
5
6
7
8
9
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
module Passenger
def apache
package "apache2-mpm-worker", :ensure => :installed
package "apache2-threaded-dev", :ensure => :installed
service :apache2,
:require => [
package("apache2-mpm-worker"),
package("apache2-threaded-dev")
]
end
def passenger
package "passenger",
:ensure => :installed,
:provider => :gem,
:require => package(:rails)
path = path_for_gem(passenger)
ruby = `which ruby`.chomp
exec 'build-passenger',
:cwd => path,
:command => 'rake clean apache2',
:creates => "#{path}/ext/apache2/mod_passenger.so"
:require => [
package(:passenger),
service(:apache)
]
passenger_module = <<-EOF
LoadModule passenger_module #{path}/ext/apache2/mod_passenger.so
EOF
file '/etc/apache2/mods-available/passenger.load',
:ensure => :present,
:contents => passenger_module,
:require => exec('build-passenger')
passenger_conf = <<-EOF
PassengerRoot #{path}
PassengerRuby #{ruby}
EOF
file '/etc/apache2/mods-available/passenger.conf',
:ensure => :present,
:contents => passenger_conf,
:require => exec('build-passenger')
exec 'enable-passenger',
:command => 'a2enmod passenger',
:creates => '/etc/apache2/mods-enabled/passenger.load',
:require => [
file('/etc/apache2/mods-available/passenger.conf'),
file('/etc/apache2/mods-available/passenger.load')
],
:notify => service(:apache)
end
def rails
package "rails", :ensure => :installed, :provider => :gem
end
protected
def path_for_gem(gem)
begin
gemspec = Gem::SourceIndex.from_installed_gems.find_name(gem).last
gemspec_path = gemspec.loaded_from
rubygems_base = File.join(File.dirname(gemspec_path), '..', 'gems')
gem_path = File.join(rubygems_base, (gem+'-'+gemspec.version.to_s))
rescue
nil
end
end
end