class Marv::Server::Create
Public Class Methods
new(server)
click to toggle source
Initialize server creator
# File lib/marv/server/create.rb, line 8 def initialize(server) @server = server @task = server.task @global = Marv::Global.new(server.task) @name = server.name @path = server.path @database = server.database @config = server.config create_server end
Public Instance Methods
add_config_files()
click to toggle source
Add configuration files
# File lib/marv/server/create.rb, line 100 def add_config_files layouts = ::File.join(Marv.root, 'layouts', 'config') @global.template ::File.join(layouts, 'server.rb'), ::File.join(@path, 'config.rb'), @server.context @global.template ::File.join(layouts, 'router.php'), ::File.join(@path, 'router.php'), @server.context @global.template ::File.join(layouts, 'wp-config.php'), ::File.join(@path, 'wp-config.php'), @server.context end
copy_wordpress_files()
click to toggle source
Copy WordPress files
# File lib/marv/server/create.rb, line 82 def copy_wordpress_files package = download_wordpress tmp_dir = ::File.expand_path "/tmp/wordpress-latest-#{Time.now.to_i}" @task.empty_directory tmp_dir unless ::File.directory?(tmp_dir) # Extract package to temporary dir ::Zip.on_exists_proc = true ::Zip::File.open(package) do |zip_file| zip_file.each do |entry| entry.extract(::File.join(tmp_dir, entry.to_s)) end end @task.directory ::File.join(tmp_dir, 'wordpress'), @path @task.remove_dir tmp_dir end
create_hotel_server()
click to toggle source
Create
hotel server
# File lib/marv/server/create.rb, line 109 def create_hotel_server @task.say_warning "Hotel package detected on your system.", false if @task.yes?("Would you like to create a hotel server?") begin `hotel add 'php -S 127.0.0.1:$PORT' --port #{@server.port} --dir #{@server.path}` @task.say_success "Hotel server created successfully!", false rescue Exception => e @task.say_error "There was an error while creating hotel server:", e.message, false end end end
create_server()
click to toggle source
Create
server
# File lib/marv/server/create.rb, line 21 def create_server if ::File.exists?(@server.config_file) @task.say_error "A server with the name #{@name} already exists!" abort end @config.merge! @server.server_options begin @task.shell.mute do create_server_dir copy_wordpress_files @server.create_database add_config_files end rescue Exception => e @task.say_error "Error while creating server:", e.message abort end @task.say_success "Server #{@name} created successfully!" if @task.exec_exixts?('hotel') create_hotel_server else start_server end end
create_server_dir()
click to toggle source
Creates a directory for a new server
# File lib/marv/server/create.rb, line 59 def create_server_dir @task.remove_dir @path @task.empty_directory @path end
download_wordpress()
click to toggle source
Downloads WordPress from wordpress.org
# File lib/marv/server/create.rb, line 65 def download_wordpress package = "/tmp/wordpress-#{@config[:wp_version]}.zip" # Download package file if ::File.exists?(package) @task.say_warning "WordPress is already downloaded...", false, true else ::File.exists?(package) @task.say_info "Downloading WordPress...", false, true @task.get "https://wordpress.org/wordpress-#{@config[:wp_version]}.zip" do |content| @task.create_file package, content end end # Return package file package end
start_server()
click to toggle source
Starts the new server
# File lib/marv/server/create.rb, line 51 def start_server if @task.said_yes?("Would you like to start #{@name} server?") action = Marv::Server::Actions.new(@server) action.start(false) end end