class RailsPwnerer::App::Scripts
runs custom scripts on app events
Public Instance Methods
control_all(action)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 73 def control_all(action) 74 RailsPwnerer::Config.all_applications.each do |ai| 75 run_script ai[0], ai[1], (case action 76 when :pre_start then 'pre_start' 77 when :post_start then 'post_start' 78 when :pre_stop then 'pre_stop' 79 when :post_stop then 'post_stop' 80 when :pre_reset then 'pre_reset' 81 when :post_reset then 'post_reset' 82 end) 83 end 84 end
post_reset(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 69 def post_reset(app_name, instance_name) 70 run_script app_name, instance_name, 'post_reset' 71 end
post_start(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 57 def post_start(app_name, instance_name) 58 run_script app_name, instance_name, 'post_start' 59 end
post_stop(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 63 def post_stop(app_name, instance_name) 64 run_script app_name, instance_name, 'post_stop' 65 end
pre_reset(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 66 def pre_reset(app_name, instance_name) 67 run_script app_name, instance_name, 'pre_reset' 68 end
pre_start(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 54 def pre_start(app_name, instance_name) 55 run_script app_name, instance_name, 'pre_start' 56 end
pre_stop(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 60 def pre_stop(app_name, instance_name) 61 run_script app_name, instance_name, 'pre_stop' 62 end
remove(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 50 def remove(app_name, instance_name) 51 run_script app_name, instance_name, 'remove' 52 end
run_script(app_name, instance_name, script_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 6 def run_script(app_name, instance_name, script_name) 7 app_config = RailsPwnerer::Config[app_name, instance_name] 8 pwnerer_user = app_config[:pwnerer_user] 9 pwnerer_uid = uid_for_username(pwnerer_user) 10 pwnerer_gid = gid_for_username(pwnerer_user) 11 12 return unless app_path = app_config[:app_path] 13 14 return unless File.exist?(app_config[:app_path]) 15 Dir.chdir app_path do 16 script_file = Dir.glob(File.join('script/rails_pwnerer', script_name + '*')).first 17 return if script_file.nil? 18 # run as super-user if the script ends in _su or in _su.extension (e.g. _su.rb) 19 su_mode = (script_file =~ /\_su$/) || (script_file =~ /\_su\.[^.]*$/) 20 # make sure the script is executable 21 mode = File.stat(script_file).mode 22 File.chmod((mode | 0100) & 0777, script_file) 23 File.chown(pwnerer_uid, pwnerer_gid, script_file) 24 25 # run the script under the app's user 26 pid = Process.fork do 27 unless su_mode 28 Process.uid = pwnerer_uid 29 Process.gid = pwnerer_gid 30 Process.egid = pwnerer_gid 31 Process.euid = pwnerer_uid 32 end 33 Dir.chdir app_path do 34 script_prefix = (script_file[0] == ?/) ? '' : './' 35 Kernel.system %Q|#{script_prefix}#{script_file} "#{app_name}" "#{instance_name}"| 36 end 37 end 38 Process.wait pid 39 end 40 end
setup(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 42 def setup(app_name, instance_name) 43 run_script app_name, instance_name, 'setup' 44 end
update(app_name, instance_name)
click to toggle source
# File lib/rails_pwnerer/app/scripts.rb 46 def update(app_name, instance_name) 47 run_script app_name, instance_name, 'update' 48 end