class Radical::App
Public Class Methods
app()
click to toggle source
# File lib/radical/app.rb, line 80 def app router = @routes.router env = self.env assets = @assets serve_assets = @serve_assets security_headers = @security_headers || {} session = @session || self.session @app ||= Rack::Builder.app do use Rack::CommonLogger use Rack::ShowExceptions if env.development? use Rack::Runtime use Rack::MethodOverride use Rack::ContentLength use Rack::ETag use Rack::Deflater use Rack::Head use Rack::ConditionalGet use Rack::ContentType use Rack::Session::Cookie, session use Rack::Csrf, raise: env.development?, skip: router.routes.values.flatten.select { |a| a.is_a?(Class) }.uniq.map(&:skip_csrf_actions).flatten(1) use Flash use SecurityHeaders, security_headers if serve_assets || env.development? use Rack::Static, urls: ['/assets', '/public'], header_rules: [ [/\.(?:css\.gz)$/, { 'Content-Type' => 'text/css', 'Content-Encoding' => 'gzip' }], [/\.(?:js\.gz)$/, { 'Content-Type' => 'application/javascript', 'Content-Encoding' => 'gzip' }], [/\.(?:css\.br)$/, { 'Content-Type' => 'text/css', 'Content-Encoding' => 'br' }], [/\.(?:js\.br)$/, { 'Content-Type' => 'application/javascript', 'Content-Encoding' => 'br' }] ] end run lambda { |rack_env| begin router.route(Rack::Request.new(rack_env), options: { assets: assets }).finish rescue ModelNotFound raise unless env.production? Rack::Response.new('404 Not Found', 404).finish end } end end
assets(&block)
click to toggle source
# File lib/radical/app.rb, line 45 def assets(&block) @assets = Assets.new block.call(@assets) end
call(env)
click to toggle source
# File lib/radical/app.rb, line 126 def call(env) app.call(env) end
compile_assets()
click to toggle source
# File lib/radical/app.rb, line 51 def compile_assets @assets.compile end
env()
click to toggle source
# File lib/radical/app.rb, line 76 def env Env end
routes(route_class)
click to toggle source
# File lib/radical/app.rb, line 41 def routes(route_class) @routes = route_class end
security_headers(headers = {})
click to toggle source
# File lib/radical/app.rb, line 59 def security_headers(headers = {}) @security_headers = headers end
serve_assets()
click to toggle source
# File lib/radical/app.rb, line 55 def serve_assets @serve_assets = true end
session(options = {})
click to toggle source
# File lib/radical/app.rb, line 63 def session(options = {}) defaults = { path: '/', secret: session_secret, http_only: true, same_site: :lax, secure: env.production?, expire_after: 2_592_000 # 30 days } @session = defaults.merge(options) end
Private Class Methods
session_secret()
click to toggle source
# File lib/radical/app.rb, line 132 def session_secret @session_secret ||= (ENV['SESSION_SECRET'] || SecureRandom.hex(32)) end