Class: RailsPwnerer::App::Scripts
- Inherits:
-
Object
- Object
- RailsPwnerer::App::Scripts
show all
- Includes:
- Base
- Defined in:
- lib/rails_pwnerer/app/scripts.rb
Overview
runs custom scripts on app events
Instance Method Summary
collapse
-
#control_all(action) ⇒ Object
-
#post_reset(app_name, instance_name) ⇒ Object
-
#post_start(app_name, instance_name) ⇒ Object
-
#post_stop(app_name, instance_name) ⇒ Object
-
#pre_reset(app_name, instance_name) ⇒ Object
-
#pre_start(app_name, instance_name) ⇒ Object
-
#pre_stop(app_name, instance_name) ⇒ Object
-
#remove(app_name, instance_name) ⇒ Object
-
#run_script(app_name, instance_name, script_name) ⇒ Object
-
#setup(app_name, instance_name) ⇒ Object
-
#update(app_name, instance_name) ⇒ Object
Methods included from Base
_setup_unix, _setup_windows, all_packages, all_packages_without_caching, #atomic_erase, #atomic_read, #atomic_write, #best_package_matching, #check_rails_root, #control_boot_script, #cpu_cores, #current_user, #gem_exists?, #gid_for_username, #group_for_username, #hook_boot_script, #install_gem, #install_gems, #install_package, #install_package_impl, #install_package_matching, #install_packages, #kill_tree, #os_distro, #path_to_boot_script, #path_to_boot_script_defaults, #path_to_gem, #process_info, #prompt_user_for_password, #remove_package, #remove_packages, #search_packages, #uid_for_username, #unroll_collection, #update_all_packages, #update_all_packages_impl, #update_gems, #update_package_metadata, #upgrade_gem, #upgrade_gems, #upgrade_package, #upgrade_package_impl, #upgrade_packages, #with_package_source, #with_temp_dir
Instance Method Details
#control_all(action) ⇒ Object
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 72
def control_all(action)
RailsPwnerer::Config.all_applications.each do |ai|
run_script ai[0], ai[1], (case action
when :pre_start then 'pre_start'
when :post_start then 'post_start'
when :pre_stop then 'pre_stop'
when :post_stop then 'post_stop'
when :pre_reset then 'pre_reset'
when :post_reset then 'post_reset'
end)
end
end
|
#post_reset(app_name, instance_name) ⇒ Object
68
69
70
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 68
def post_reset(app_name, instance_name)
run_script app_name, instance_name, 'post_reset'
end
|
#post_start(app_name, instance_name) ⇒ Object
56
57
58
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 56
def post_start(app_name, instance_name)
run_script app_name, instance_name, 'post_start'
end
|
#post_stop(app_name, instance_name) ⇒ Object
62
63
64
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 62
def post_stop(app_name, instance_name)
run_script app_name, instance_name, 'post_stop'
end
|
#pre_reset(app_name, instance_name) ⇒ Object
65
66
67
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 65
def pre_reset(app_name, instance_name)
run_script app_name, instance_name, 'pre_reset'
end
|
#pre_start(app_name, instance_name) ⇒ Object
53
54
55
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 53
def pre_start(app_name, instance_name)
run_script app_name, instance_name, 'pre_start'
end
|
#pre_stop(app_name, instance_name) ⇒ Object
59
60
61
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 59
def pre_stop(app_name, instance_name)
run_script app_name, instance_name, 'pre_stop'
end
|
#remove(app_name, instance_name) ⇒ Object
49
50
51
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 49
def remove(app_name, instance_name)
run_script app_name, instance_name, 'remove'
end
|
#run_script(app_name, instance_name, script_name) ⇒ Object
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
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 6
def run_script(app_name, instance_name, script_name)
app_config = RailsPwnerer::Config[app_name, instance_name]
pwnerer_user = app_config[:pwnerer_user]
pwnerer_uid = uid_for_username(pwnerer_user)
pwnerer_gid = gid_for_username(pwnerer_user)
return unless app_path = app_config[:app_path]
Dir.chdir app_path do
script_file = Dir.glob(File.join('script/rails_pwnerer', script_name + '*')).first
return if script_file.nil?
su_mode = (script_file =~ /\_su$/) || (script_file =~ /\_su\.[^.]*$/)
mode = File.stat(script_file).mode
File.chmod((mode | 0100) & 0777, script_file)
File.chown(pwnerer_uid, pwnerer_gid, script_file)
pid = Process.fork do
unless su_mode
Process.uid = pwnerer_uid
Process.gid = pwnerer_gid
Process.egid = pwnerer_gid
Process.euid = pwnerer_uid
end
Dir.chdir app_path do
script_prefix = (script_file[0] == ?/) ? '' : './'
Kernel.system %Q|#{script_prefix}#{script_file} "#{app_name}" "#{instance_name}"|
end
end
Process.wait pid
end
end
|
#setup(app_name, instance_name) ⇒ Object
41
42
43
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 41
def setup(app_name, instance_name)
run_script app_name, instance_name, 'setup'
end
|
#update(app_name, instance_name) ⇒ Object
45
46
47
|
# File 'lib/rails_pwnerer/app/scripts.rb', line 45
def update(app_name, instance_name)
run_script app_name, instance_name, 'update'
end
|