| Index: modules/discourse/files/init-discourse |
| =================================================================== |
| --- a/modules/discourse/files/init-discourse |
| +++ b/modules/discourse/files/init-discourse |
| @@ -1,69 +1,58 @@ |
| #!/usr/bin/env python |
| import sys, os, pwd, subprocess |
| app_dir = '/opt/discourse' |
| -secret = os.environ.get('DISCOURSE_SECRET', None) |
| airbrake_key = os.environ.get('AIRBRAKE_KEY', None) |
| # HOME environment variable isn't reliable when called via sudo |
| home_dir = os.path.expanduser('~' + pwd.getpwuid(os.getuid()).pw_name) |
| env = dict(os.environ) |
| -env['GEM_HOME'] = os.path.join(home_dir, '.gems') |
| env['RAILS_ENV'] = 'production' |
| # See http://meta.discourse.org/t/tuning-ruby-and-rails-for-discourse/4126 |
| env['RUBY_GC_MALLOC_LIMIT'] = '90000000' |
| -def preprocessFiles(): |
| - secret_path = os.path.join(app_dir, 'config', 'initializers', 'secret_token.rb') |
| - handle = open(secret_path, 'rb') |
| - if handle.read().find('SET_SECRET_HERE') >= 0: |
| - if secret != None: |
| - handle.close() |
| - handle = open(secret_path, 'wb') |
| - print >>handle, 'Discourse::Application.config.secret_token = "%s"' % secret |
| - print >>sys.stderr, 'Defined our secret in config/initializers/secret_token.rb' |
| - else: |
| - print >>sys.stderr, 'Skipping defining secret in config/initializers/secret_token.rb, please set DISCOURSE_SECRET environment variable' |
| - handle.close() |
| - |
| def callRailsCommand(command): |
| - subprocess.call(command, env=env, cwd=app_dir) |
| + subprocess.check_call(command, env=env, cwd=app_dir) |
| def initAirBrake(): |
| if airbrake_key == None: |
| return |
| path = os.path.join(app_dir, 'config', 'initializers', 'airbrake.rb') |
| if os.path.exists(path): |
| - handle = open(path, 'rb') |
| - data = handle.read() |
| - handle.close() |
| + with open(path, 'rb') as handle: |
| + data = handle.read() |
| if data.find(airbrake_key) >= 0: |
| return |
| else: |
| os.remove(path) |
| callRailsCommand([os.path.join(app_dir, 'script', 'rails'), 'generate', 'airbrake', '--api-key', airbrake_key]) |
| + with open(path, 'rb+') as handle: |
| + # Prepend file with require 'airbrake', won't happen by default |
| + data = handle.read() |
| + handle.seek(0) |
| + print >>handle, "require 'airbrake'" |
| + handle.write(data) |
| + |
| def runInitCommands(): |
| - rake_path = os.path.join(env['GEM_HOME'], 'bin', 'rake') |
| service_path = '/etc/init.d/discourse-thin' |
| - callRailsCommand(['bundle', 'install']) |
| + callRailsCommand(['bundle', 'install', '--deployment', '--without', 'test', '--without', 'development']) |
| initAirBrake() |
| - callRailsCommand([rake_path, 'assets:precompile']) |
| + callRailsCommand(['bundle', 'exec', 'rake', 'assets:precompile']) |
| if os.path.exists(service_path): |
| - subprocess.call(['sudo', service_path, 'stop']) |
| + subprocess.check_call(['sudo', service_path, 'stop']) |
| - callRailsCommand([rake_path, 'db:migrate']) |
| + callRailsCommand(['bundle', 'exec', 'rake', 'db:migrate']) |
| if os.path.exists(service_path): |
| - subprocess.call(['sudo', service_path, 'start']) |
| + subprocess.check_call(['sudo', service_path, 'start']) |
| if __name__ == '__main__': |
| - preprocessFiles() |
| runInitCommands() |