class Marv::Server::Server

Attributes

config[RW]
context[RW]
database[RW]
host[RW]
name[RW]
path[RW]
port[RW]
task[RW]

Public Class Methods

new(task, dir) click to toggle source

Initialize server config

# File lib/marv/server/server.rb, line 13
def initialize(task, dir)
  @task = task
  @global = Marv::Global.new(task)
  @name = dir
  @path = server_path
  @config_file = config_file
  @options = {}
  @config = server_config
  @host = server_host
  @port = server_port
  @database = db_client
  @context = server_context

  @global.clean_broken_links(server_projects_paths)
end

Public Instance Methods

ask_database_details() click to toggle source

Database details

# File lib/marv/server/server.rb, line 127
def ask_database_details
  options = {}
  options[:db_user] = @task.ask_input "MySQL database username:", :default => @global.config[:db_user]
  options[:db_password] = @task.ask_input "MySQL database password:", :default => @global.config[:db_password]
  options[:db_host] = @task.ask_input "MySQL database host:", :default => @global.config[:db_host]
  options[:db_port] = @task.ask_input "MySQL database port:", :default => @global.config[:db_port]

  return options
end
ask_server_details() click to toggle source

Server details

# File lib/marv/server/server.rb, line 118
def ask_server_details
  options = {}
  options[:server_host] = @task.ask_input "Where do you want to run the server?", :default => @global.config[:server_host]
  options[:server_port] = @task.ask_input "Which port do you want to use?", :default => @global.config[:server_port]

  return options
end
ask_wordpress_details() click to toggle source

Wordpress details

# File lib/marv/server/server.rb, line 138
def ask_wordpress_details
  options = {}
  options[:wp_version] = @task.ask_input "WordPress version to install:", :default => @global.config[:wp_version]

  return options
end
config_file() click to toggle source

Config file

# File lib/marv/server/server.rb, line 40
def config_file
  ::File.join(server_path, 'config.rb')
end
create_database() click to toggle source

Create MySQL database

# File lib/marv/server/server.rb, line 181
def create_database
  begin
    db_client_create
    db_client_grant_all
    db_client_flush_priv
    @database.close
  rescue Exception => e
    @task.say_error "An error occured while creating the database:", e.message, false, true
  end
end
db_client() click to toggle source

Server database

# File lib/marv/server/server.rb, line 146
def db_client
  begin
    ::Mysql2::Client.new(:host => db_host, :port => db_port, :username => db_user, :password => db_password)
  rescue Mysql2::Error::ConnectionError
    @task.say_error "Not able to connect to the database.", "Start the database if it is not running.", false
    abort
  end
end
db_client_create() click to toggle source

MySQL create database

# File lib/marv/server/server.rb, line 156
def db_client_create
  @database.query("CREATE DATABASE IF NOT EXISTS #{db_name}")
end
db_client_drop() click to toggle source

MySQL create database

# File lib/marv/server/server.rb, line 161
def db_client_drop
  @database.query("DROP DATABASE IF EXISTS #{db_name}")
end
db_client_flush_priv() click to toggle source

MySQL flush privileges

# File lib/marv/server/server.rb, line 176
def db_client_flush_priv
  @database.query("FLUSH PRIVILEGES")
end
db_client_grant_all() click to toggle source

MySQL grant all privileges

# File lib/marv/server/server.rb, line 166
def db_client_grant_all
  @database.query("GRANT ALL PRIVILEGES ON #{db_name}.* TO '#{db_user}'@'#{db_host}'")
end
db_client_revoke_all() click to toggle source

MySQL revoke all privileges

# File lib/marv/server/server.rb, line 171
def db_client_revoke_all
  @database.query("REVOKE ALL PRIVILEGES ON #{db_name}.* FROM '#{db_user}'@'#{db_host}'")
end
db_host() click to toggle source

Database host

# File lib/marv/server/server.rb, line 60
def db_host
  @config[:db_host]
end
db_name() click to toggle source

Database name

# File lib/marv/server/server.rb, line 45
def db_name
  'marv_'+@name.gsub(/\W/, '_').downcase
end
db_password() click to toggle source

Database user password

# File lib/marv/server/server.rb, line 55
def db_password
  @config[:db_password]
end
db_port() click to toggle source

Database port

# File lib/marv/server/server.rb, line 65
def db_port
  @config[:db_port]
end
db_user() click to toggle source

Database username

# File lib/marv/server/server.rb, line 50
def db_user
  @config[:db_user]
end
exists?() click to toggle source

Server exists

# File lib/marv/server/server.rb, line 30
def exists?
  ::File.exists?(server_path)
end
remove_database() click to toggle source

Remove MySQL database

# File lib/marv/server/server.rb, line 193
def remove_database
  begin
    db_client_drop
    db_client_revoke_all
    db_client_flush_priv
    @database.close
  rescue Exception => e
    @task.say_error "An error occured while removing the database:", e.message, false, true
  end
end
server_config() click to toggle source

Server config file

# File lib/marv/server/server.rb, line 85
def server_config
  config = @global.config

  # Check for user options
  unless @options.nil?
    config.merge!(@options)
  end

  # Check for config.rb in server folder
  if ::File.exists?(@config_file)
    config.merge!(@global.load_ruby_config(@config_file))
  end

  return config
end
server_context() click to toggle source

Get server class context

# File lib/marv/server/server.rb, line 205
def server_context
  instance_eval('binding')
end
server_host() click to toggle source

Server host

# File lib/marv/server/server.rb, line 75
def server_host
  @config[:server_host]
end
server_options() click to toggle source

Ask for server options

# File lib/marv/server/server.rb, line 102
def server_options
  options = {}

  unless ::File.exists?(@config_file)
    @task.say_info "This will create a new development server."
    @task.say_warning "Please enter server settings below:"

    options.merge!(ask_server_details)
    options.merge!(ask_database_details)
    options.merge!(ask_wordpress_details)
  end

  return options
end
server_path() click to toggle source

Server path

# File lib/marv/server/server.rb, line 35
def server_path
  ::File.join(@global.servers_path, @name)
end
server_port() click to toggle source

Server port

# File lib/marv/server/server.rb, line 80
def server_port
  @config[:server_port]
end
server_projects_paths() click to toggle source

Server projects paths

# File lib/marv/server/server.rb, line 210
def server_projects_paths
  paths = ::Dir.glob(::File.join(server_path, 'wp-content', 'themes', '*'))
  paths = paths + ::Dir.glob(::File.join(server_path, 'wp-content', 'plugins', '*'))

  return paths
end
wp_version() click to toggle source

Wordpress version

# File lib/marv/server/server.rb, line 70
def wp_version
  @config[:wp_version]
end