Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: modules/discourse/files/init-discourse

Issue 9422170: Run Discourse via Thin rather than FGCI (Closed)
Patch Set: Created Feb. 27, 2013, 1:34 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 import sys, os, pwd, subprocess 3 import sys, os, pwd, subprocess
4 4
5 app_dir = '/opt/discourse' 5 app_dir = '/opt/discourse'
6 secret = os.environ.get('DISCOURSE_SECRET', None) 6 secret = os.environ.get('DISCOURSE_SECRET', None)
7 airbrake_key = os.environ.get('AIRBRAKE_KEY', None) 7 airbrake_key = os.environ.get('AIRBRAKE_KEY', None)
8 8
9 # HOME environment variable isn't reliable when called via sudo 9 # HOME environment variable isn't reliable when called via sudo
10 home_dir = os.path.expanduser('~' + pwd.getpwuid(os.getuid()).pw_name) 10 home_dir = os.path.expanduser('~' + pwd.getpwuid(os.getuid()).pw_name)
11 11
12 env = dict(os.environ) 12 env = dict(os.environ)
13 env['GEM_HOME'] = os.path.join(home_dir, '.gems') 13 env['GEM_HOME'] = os.path.join(home_dir, '.gems')
14 env['RAILS_ENV'] = 'production' 14 env['RAILS_ENV'] = 'production'
15 15
16 def preprocessFiles(): 16 def preprocessFiles():
17 gemfile_path = os.path.join(app_dir, 'Gemfile')
18 handle = open(gemfile_path, 'rb')
19 if "gem 'fcgi'" not in map(str.strip, handle.readlines()):
20 handle.close()
21 handle = open(gemfile_path, 'ab')
22 print >>handle, "gem 'fcgi'"
23 print >>sys.stderr, 'Added fcgi gem to Gemfile'
24 handle.close()
25
26 secret_path = os.path.join(app_dir, 'config', 'initializers', 'secret_token.rb ') 17 secret_path = os.path.join(app_dir, 'config', 'initializers', 'secret_token.rb ')
27 handle = open(secret_path, 'rb') 18 handle = open(secret_path, 'rb')
28 if handle.read().find('SET_SECRET_HERE') >= 0: 19 if handle.read().find('SET_SECRET_HERE') >= 0:
29 if secret != None: 20 if secret != None:
30 handle.close() 21 handle.close()
31 handle = open(secret_path, 'wb') 22 handle = open(secret_path, 'wb')
32 print >>handle, 'Discourse::Application.config.secret_token = "%s"' % secr et 23 print >>handle, 'Discourse::Application.config.secret_token = "%s"' % secr et
33 print >>sys.stderr, 'Defined our secret in config/initializers/secret_toke n.rb' 24 print >>sys.stderr, 'Defined our secret in config/initializers/secret_toke n.rb'
34 else: 25 else:
35 print >>sys.stderr, 'Skipping defining secret in config/initializers/secre t_token.rb, please set DISCOURSE_SECRET environment variable' 26 print >>sys.stderr, 'Skipping defining secret in config/initializers/secre t_token.rb, please set DISCOURSE_SECRET environment variable'
(...skipping 13 matching lines...) Expand all
49 handle.close() 40 handle.close()
50 41
51 if data.find(airbrake_key) >= 0: 42 if data.find(airbrake_key) >= 0:
52 return 43 return
53 else: 44 else:
54 os.remove(path) 45 os.remove(path)
55 callRailsCommand([os.path.join(app_dir, 'script', 'rails'), 'generate', 'airbr ake', '--api-key', airbrake_key]) 46 callRailsCommand([os.path.join(app_dir, 'script', 'rails'), 'generate', 'airbr ake', '--api-key', airbrake_key])
56 47
57 def runInitCommands(): 48 def runInitCommands():
58 rake_path = os.path.join(env['GEM_HOME'], 'bin', 'rake') 49 rake_path = os.path.join(env['GEM_HOME'], 'bin', 'rake')
59 spawn_path = '/etc/init.d/spawn-fcgi' 50 service_path = '/etc/init.d/discourse-thin'
60 51
61 callRailsCommand(['bundle', 'install']) 52 callRailsCommand(['bundle', 'install'])
62 initAirBrake() 53 initAirBrake()
63 callRailsCommand([rake_path, 'assets:precompile']) 54 callRailsCommand([rake_path, 'assets:precompile'])
64 55
65 if os.path.exists(spawn_path): 56 if os.path.exists(service_path):
66 subprocess.call(['sudo', spawn_path, 'stop']) 57 subprocess.call(['sudo', service_path, 'stop'])
67 58
68 callRailsCommand([rake_path, 'db:migrate']) 59 callRailsCommand([rake_path, 'db:migrate'])
69 60
70 if os.path.exists(spawn_path): 61 if os.path.exists(service_path):
71 subprocess.call(['sudo', spawn_path, 'start']) 62 subprocess.call(['sudo', service_path, 'start'])
72 63
73 if __name__ == '__main__': 64 if __name__ == '__main__':
74 preprocessFiles() 65 preprocessFiles()
75 runInitCommands() 66 runInitCommands()
OLDNEW

Powered by Google App Engine
This is Rietveld