Sha256: 6c1231a930a85ec4adc18fe5a2c867b858b08e6f6805199ab9a8aa3526254586

Contents?: true

Size: 1.2 KB

Versions: 4

Compression:

Stored size: 1.2 KB

Contents

require "dry/web/roda/application"
require_relative "container"

module <%= config[:camel_cased_app_name] %>
  class Web < Dry::Web::Roda::Application
    configure do |config|
      config.container = Container
      config.routes = "web/routes".freeze
    end

    opts[:root] = Pathname(__FILE__).join("../..").realpath.dirname

    use Rack::Session::Cookie, key: "<%= config[:underscored_project_name] %>.session", secret: self["settings"].session_secret
    use Rack::MethodOverride

    plugin :csrf, raise: true
    plugin :dry_view
    plugin :error_handler
    plugin :flash
    plugin :multi_route
    plugin :all_verbs

    route do |r|
      # Enable this after writing your first web/routes/ file
      # r.multi_route

      r.root do
        r.view :welcome
      end
    end

    error do |e|
      self.class[:rack_monitor].instrument(:error, exception: e)
      raise e
    end

    # Request-specific options for dry-view context object
    def view_context_options
      {
        flash:        flash,
        csrf_token:   Rack::Csrf.token(request.env),
        csrf_metatag: Rack::Csrf.metatag(request.env),
        csrf_tag:     Rack::Csrf.tag(request.env),
      }
    end

    load_routes!
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dry-web-roda-0.14.0 lib/dry/web/roda/templates/flat_project/web.rb.tt
dry-web-roda-0.13.1 lib/dry/web/roda/templates/flat_project/web.rb.tt
dry-web-roda-0.13.0 lib/dry/web/roda/templates/flat_project/web.rb.tt
dry-web-roda-0.12.0 lib/dry/web/roda/templates/flat_project/web.rb.tt