# File lib/staticmatic/server.rb, line 3 def initialize(staticmatic, default = nil) @files = default || Rack::File.new(staticmatic.site_dir) @staticmatic = staticmatic end
Starts the StaticMatic preview server
# File lib/staticmatic/server.rb, line 45 def self.start(staticmatic) [ 'INT', 'TERM' ].each do |signal| Signal.trap(signal) do puts puts "Exiting" exit!(0) end end port = staticmatic.configuration.preview_server_port || 3000 host = staticmatic.configuration.preview_server_host || "" app = Rack::Builder.new do use Rack::ShowExceptions run StaticMatic::Server.new(staticmatic) end Rack::Handler::WEBrick.run(app, :Port => port, :Host => host) end
# File lib/staticmatic/server.rb, line 10 def call(env) @staticmatic.load_helpers path_info = env["PATH_INFO"] file_dir, file_name, file_ext = expand_path(path_info) # remove stylesheets/ directory if applicable file_dir.gsub!(/^\/stylesheets\/?/, "") file_dir = CGI::unescape(file_dir) file_name = CGI::unescape(file_name) unless file_ext && ["html", "css"].include?(file_ext) && @staticmatic.template_exists?(file_name, file_dir) && File.basename(file_name) !~ /^\_/ return @files.call(env) end res = Rack::Response.new res.header["Content-Type"] = "text/#{file_ext}" begin if file_ext == "css" res.write @staticmatic.generate_css(file_name, file_dir) else res.write @staticmatic.generate_html_with_layout(file_name, file_dir) end rescue StaticMatic::Error => e res.write e.message end res.finish end
Generated with the Darkfish Rdoc Generator 2.