Module: Sinatra::Inertia
- Defined in:
- lib/sinatra/inertia.rb,
lib/sinatra/inertia/errors.rb,
lib/sinatra/inertia/helpers.rb,
lib/sinatra/inertia/version.rb,
lib/sinatra/inertia/deferred.rb,
lib/sinatra/inertia/response.rb,
lib/sinatra/inertia/middleware.rb,
lib/sinatra/inertia/csrf_middleware.rb
Overview
Inertia.js v2 protocol adapter for Sinatra.
class App < Sinatra::Base
register Sinatra::Inertia
set :inertia_version, -> { ASSETS_VERSION }
set :inertia_layout, :layout
inertia_share do
{ auth: { user: current_user }, flash: flash_payload }
end
get '/' do
inertia 'Todos/Index', props: { todos: -> { Todo.all } }
end
end
See README.md for the full feature matrix.
Defined Under Namespace
Modules: Helpers
Classes: AlwaysProp, CSRFMiddleware, DeferredProp, LazyProp, MergeProp, Middleware, OptionalProp, Prop, Response
Constant Summary
collapse
- Error =
Class.new(StandardError)
- InvalidProtocol =
Class.new(Error)
- VERSION =
'0.1.2'
Class Method Summary
collapse
Class Method Details
.always(value = nil, &block) ⇒ Object
76
|
# File 'lib/sinatra/inertia/deferred.rb', line 76
def always(value = nil, &block) = AlwaysProp.new(block: block, value: value)
|
.defer(group: 'default', &block) ⇒ Object
77
|
# File 'lib/sinatra/inertia/deferred.rb', line 77
def defer(group: 'default', &block) = DeferredProp.new(block: block, group: group)
|
.lazy(&block) ⇒ Object
79
|
# File 'lib/sinatra/inertia/deferred.rb', line 79
def lazy(&block) = LazyProp.new(block: block)
|
.merge(value = nil, &block) ⇒ Object
80
|
# File 'lib/sinatra/inertia/deferred.rb', line 80
def merge(value = nil, &block) = MergeProp.new(block: block, value: value)
|
.optional(&block) ⇒ Object
78
|
# File 'lib/sinatra/inertia/deferred.rb', line 78
def optional(&block) = OptionalProp.new(block: block)
|
.registered(app) ⇒ Object
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/sinatra/inertia.rb', line 33
def self.registered(app)
app.set :inertia_version, '1' unless app.respond_to?(:inertia_version)
app.set :inertia_layout, :layout unless app.respond_to?(:inertia_layout)
app.set :inertia_encrypt_history, false unless app.respond_to?(:inertia_encrypt_history)
app.set :inertia_csrf_protection, true unless app.respond_to?(:inertia_csrf_protection)
app.set :inertia_share_blocks, []
if app.settings.inertia_csrf_protection
app.use Sinatra::Inertia::CSRFMiddleware
end
app.use Sinatra::Inertia::Middleware, version: -> { app.settings.inertia_version }
app.define_singleton_method(:inertia_share) do |&block|
raise ArgumentError, 'inertia_share requires a block' unless block
settings.inertia_share_blocks = settings.inertia_share_blocks + [block]
end
app.helpers Sinatra::Inertia::Helpers
end
|