class Rphp::Server

this file is about the PHP server class

Attributes

input[RW]
output[RW]
port[RW]

Public Class Methods

new(port = 4321) click to toggle source
# File lib/rphp/server.rb, line 10
def initialize(port = 4321)
        @port = port
        @input = 'ruby'
        @output = 'public_html'
end

Public Instance Methods

generate_initial_files() click to toggle source
# File lib/rphp/server.rb, line 16
def generate_initial_files
        Dir.mkdir @input unless Dir.exist?(@input)
        Dir.mkdir @output unless Dir.exist?(@output)
        File.write(
                "#{@input}/index.php.erb", 
                "<h1>Generated by RPHP</h1>"
                ) unless File.exist?("#{@input}/index.php.erb")
end
listen() click to toggle source
# File lib/rphp/server.rb, line 64
def listen
        FileUtils.rm_rf(@output)
        generate_initial_files
        parse_folder "./#{@input}/*"
        listener = Listen.to(@input) do |modified, added, removed|
                parse_folder "./#{@input}/*"
        end
        listener.start # not blocking
        sleep
end
parse_file(input,output) click to toggle source
# File lib/rphp/server.rb, line 25
def parse_file (input,output)
        if output.split('/') == 3
                output = output.split('/')[1..-1]
                        .join('/')
                        .split('.')[0..-2]
                        .join('.')
        end
                
        if Tilt.templates_for(input).any?
                content = Tilt.new(input).render
        else
                content = File.read(input)
        end
        File.write(output,content)
end
parse_folder(folder_name) click to toggle source
# File lib/rphp/server.rb, line 47
def parse_folder folder_name
        Dir["#{folder_name}"].each do |file|
                filename = file.split('/')[2..-1].join('/')
                if File.directory? file      
                        file = "./#{@input}/#{filename}"
                        out  = "./#{@output}/#{filename}"
                        FileUtils.rm_rf(out)
                        Dir.mkdir out unless Dir.exist? out
                        parse_folder "#{file}/*"
                else
                        file = "./#{@input}/#{filename}"
                        out  = "./#{@output}/#{filename}"
                        parse_file(file, out)
                end
        end
end
start() click to toggle source
# File lib/rphp/server.rb, line 41
def start
        puts "PHP development server started at port #{@port}"
        `nohup php -S localhost:#{@port} -t #{@output} >/dev/null 2>&1 &`
        listen
end