Class Camping::Server
In: lib/camping/server.rb
Parent: Rack::Server

Methods

Classes and Modules

Class Camping::Server::Options
Class Camping::Server::XSendfile

Public Class methods

[Source]

     # File lib/camping/server.rb, line 98
 98:     def initialize(*)
 99:       super
100:       @reloader = Camping::Reloader.new(options[:script]) do |app|
101:         if !app.options.has_key?(:dynamic_templates)
102:                       app.options[:dynamic_templates] = true
103:               end
104:               
105:         if !Camping::Models.autoload?(:Base) && options[:database]
106:           Camping::Models::Base.establish_connection(
107:             :adapter => 'sqlite3',
108:             :database => options[:database]
109:           )
110:         end
111:       end
112:     end

Public Instance methods

[Source]

     # File lib/camping/server.rb, line 151
151:     def app
152:       Rack::Cascade.new([Rack::File.new(public_dir), self], [404, 403])
153:     end

[Source]

     # File lib/camping/server.rb, line 164
164:     def call(env)
165:       app = current_app || raise("Could not find an app called `#{@reloader.name}`")
166:       app.call(env)
167:     end

[Source]

     # File lib/camping/server.rb, line 155
155:     def current_app
156:       @reloader.reload
157:       apps = @reloader.apps
158:       return apps.values.first if apps.size == 1
159:       if key = apps.keys.grep(/^#{@reloader.name}$/i)[0]
160:         apps[key]
161:       end
162:     end

[Source]

     # File lib/camping/server.rb, line 118
118:     def default_options
119:       super.merge({
120:         :Port => 3301,
121:         :database => Options::DB
122:       })
123:     end

[Source]

     # File lib/camping/server.rb, line 125
125:     def middleware
126:       h = super
127:       h["development"] << [XSendfile]
128:       h
129:     end

[Source]

     # File lib/camping/server.rb, line 114
114:     def opt_parser
115:       Options.new
116:     end

[Source]

     # File lib/camping/server.rb, line 147
147:     def public_dir
148:       File.expand_path('../public', @reloader.file)
149:     end

[Source]

     # File lib/camping/server.rb, line 131
131:     def start
132:       if options[:server] == "console"
133:         puts "** Starting console"
134:         @reloader.reload!
135:         r = @reloader
136:         eval("self", TOPLEVEL_BINDING).meta_def(:reload!) { r.reload!; nil }
137:         ARGV.clear
138:         IRB.start
139:         exit
140:       else
141:         name = server.name[/\w+$/]
142:         puts "** Starting #{name} on #{options[:Host]}:#{options[:Port]}"
143:         super
144:       end
145:     end

[Validate]