Class: Marv::Server::Actions
- Inherits:
-
Object
- Object
- Marv::Server::Actions
- Defined in:
- lib/marv/server/actions.rb
Instance Method Summary collapse
-
#abort_noexist ⇒ Object
Abort if not exists.
-
#abort_noexist_cmd(exec_name, text = nil) ⇒ Object
Abort if command does no exist.
-
#change_server_port ⇒ Object
Change server port.
-
#initialize(server, debug = false) ⇒ Actions
constructor
Initialize actions.
-
#is_port_available?(host = @server.host, port = @server.port) ⇒ Boolean
Check if port is available.
-
#is_server_running?(server = @server) ⇒ Boolean
Check if port is available.
-
#remove ⇒ Object
Remove server.
-
#remove_hotel_server ⇒ Object
Remove hotel server if it exists.
-
#restart ⇒ Object
Initialize server restart.
-
#run_server(from_command = true) ⇒ Object
Run server.
-
#start(from_command = true) ⇒ Object
Initialize server start.
-
#stop(message = true) ⇒ Object
Initialize server stop.
Constructor Details
#initialize(server, debug = false) ⇒ Actions
Initialize actions
9 10 11 12 13 14 15 |
# File 'lib/marv/server/actions.rb', line 9 def initialize(server, debug=false) @server = server @task = server.task @path = server.path @name = server.name @debug = debug end |
Instance Method Details
#abort_noexist ⇒ Object
Abort if not exists
106 107 108 109 110 111 |
# File 'lib/marv/server/actions.rb', line 106 def abort_noexist unless @server.exists? @task.say_error("Server #{@name} does not exist!") abort end end |
#abort_noexist_cmd(exec_name, text = nil) ⇒ Object
Abort if command does no exist
114 115 116 117 118 119 120 121 |
# File 'lib/marv/server/actions.rb', line 114 def abort_noexist_cmd(exec_name, text=nil) unless @task.exec_exixts?(exec_name) text ||= exec_name.upcase @task.say_error("#{text} is not installed on your system!") abort end end |
#change_server_port ⇒ Object
Change server port
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/marv/server/actions.rb', line 135 def change_server_port @task.say_info "Use another port to run the server.", true port = @task.ask_input "Which port would you like to use?" # Check if port available if is_port_available?(@server.host, port) # Write port to server config @task.shell.mute do @task.gsub_file @server.config_file, "#{@server.port}", "#{port}" end @server.port = port else change_server_port end end |
#is_port_available?(host = @server.host, port = @server.port) ⇒ Boolean
Check if port is available
169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/marv/server/actions.rb', line 169 def is_port_available?(host=@server.host, port=@server.port) begin url = URI.parse("http://#{host}:#{port}/") req = Net::HTTP.new(url.host, url.port) req.request_head(url) return false rescue return true end end |
#is_server_running?(server = @server) ⇒ Boolean
Check if port is available
153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/marv/server/actions.rb', line 153 def is_server_running?(server=@server) begin pid_file = ::File.join(server.path, 'php.pid') if ::File.exists?(pid_file) pid = ::File.read(pid_file).to_i return ::Process.kill(0, pid) == 1 end return false rescue return false end end |
#remove ⇒ Object
Remove server
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/marv/server/actions.rb', line 58 def remove abort_noexist @task.say_warning("This will remove server #{@name} and all data will be lost.") if @task.said_yes?("Are you sure you want to remove server?") begin @server.remove_database @task.shell.mute do stop(false) remove_hotel_server @task.remove_dir @path end rescue Exception => e @task.say_error "Error while removing server:", e. abort end @task.say_success "Server successfully removed.", false, true end end |
#remove_hotel_server ⇒ Object
Remove hotel server if it exists
124 125 126 127 128 129 130 131 132 |
# File 'lib/marv/server/actions.rb', line 124 def remove_hotel_server if @task.exec_exixts?('hotel') begin `cd #{@path} && hotel rm` rescue ExceptionName return true end end end |
#restart ⇒ Object
Initialize server restart
50 51 52 53 54 55 |
# File 'lib/marv/server/actions.rb', line 50 def restart stop(false) @task.say_info "Restarting server #{@name}...", true sleep 3 start end |
#run_server(from_command = true) ⇒ Object
Run server
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/marv/server/actions.rb', line 81 def run_server(from_command=true) abort_noexist_cmd('php') ::Dir.chdir @path unless @debug @php = ChildProcess.build 'php', '-S', "#{@server.host}:#{@server.port}", 'router.php' @php.start # Write PHP proccess id to file @task.shell.mute do @task.create_file ::File.join(@path, 'php.pid'), @php.pid, :force => true end end @task.say_success "Server #{@server.name} is running.", false, !from_command @task. "✔ http://#{@server.host}:#{@server.port}", false, false # Start server in debug mode if @debug @task.say_empty system "php -S #{@server.host}:#{@server.port} router.php" end end |
#start(from_command = true) ⇒ Object
Initialize server start
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/marv/server/actions.rb', line 18 def start(from_command=true) if is_server_running? @task.say_warning "Server is already running.", false abort end unless is_port_available?(@server.host, @server.port) @task.say_warning "Port is not available!", false, true change_server_port end run_server(from_command) end |
#stop(message = true) ⇒ Object
Initialize server stop
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/marv/server/actions.rb', line 33 def stop(=true) abort_noexist pid_file = ::File.join(@path, 'php.pid') begin if ::File.exists?(pid_file) pid = ::File.read(pid_file).to_i ::Process.kill('KILL', pid) @task.say_warning("Server #{@name} stopped.", false) if end rescue @task.say_warning("Server #{@name} is not running.", false) if end end |