class HS::DevServer
Attributes
app[RW]
entry[RW]
Public Class Methods
create(config = {})
click to toggle source
# File lib/hs/devserver.rb, line 11 def create(config = {}) self.entry = config[:entry] self.app = initialize_application(config) set_root_route set_chapter_route set_module_route app end
Private Class Methods
create_application(public_folder, hs_public_folder, bind, port)
click to toggle source
# File lib/hs/devserver.rb, line 30 def create_application(public_folder, hs_public_folder, bind, port) Sinatra.new do set(:bind, bind) set(:port, port) set(:views, File.expand_path('../../app/views', __dir__)) set(:public_folder, public_folder) use(Rack::TryStatic, root: hs_public_folder, urls: %w[/]) end end
initialize_application(config)
click to toggle source
# File lib/hs/devserver.rb, line 22 def initialize_application(config) public_folder = config[:public_folder] || 'public' hs_public_folder = File.expand_path('../../app/public', __dir__) port = config[:port] || '8080' bind = config[:bind] || '0.0.0.0' create_application(public_folder, hs_public_folder, bind, port) end
set_chapter_route()
click to toggle source
# File lib/hs/devserver.rb, line 51 def set_chapter_route entry = self.entry app.get '/:chapter' do @course = HS::Course.load(entry) @chapter = @course.find_chapter(params[:chapter]) @title = @chapter.title erb :chapter end end
set_module_route()
click to toggle source
# File lib/hs/devserver.rb, line 63 def set_module_route entry = self.entry app.get '/:chapter/:module' do @course = HS::Course.load(entry) @chapter = @course.find_chapter(params[:chapter]) @module = @chapter.find_module(params[:module]) @title = @module.title erb :module end end
set_root_route()
click to toggle source
# File lib/hs/devserver.rb, line 40 def set_root_route entry = self.entry app.get '/' do @course = HS::Course.load(entry) @title = @course.title erb :course end end