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 :page_version, -> { ASSETS_VERSION }
set :page_layout, :layout
share_props do
{ auth: { user: current_user }, flash: flash_payload }
end
get '/' do
render 'Todos/Index', 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.4'
Class Method Summary
collapse
Class Method Details
.always(value = nil, &block) ⇒ Object
73
|
# File 'lib/sinatra/inertia/deferred.rb', line 73
def always(value = nil, &block) = AlwaysProp.new(block: block, value: value)
|
.defer(group: 'default', &block) ⇒ Object
74
|
# File 'lib/sinatra/inertia/deferred.rb', line 74
def defer(group: 'default', &block) = DeferredProp.new(block: block, group: group)
|
.lazy(&block) ⇒ Object
76
|
# File 'lib/sinatra/inertia/deferred.rb', line 76
def lazy(&block) = LazyProp.new(block: block)
|
.merge(value = nil, &block) ⇒ Object
77
|
# File 'lib/sinatra/inertia/deferred.rb', line 77
def merge(value = nil, &block) = MergeProp.new(block: block, value: value)
|
.optional(&block) ⇒ Object
75
|
# File 'lib/sinatra/inertia/deferred.rb', line 75
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
61
62
63
64
65
66
67
68
69
70
71
72
|
# 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: lambda {
version = if app.settings.respond_to?(:page_version)
app.settings.page_version
else
app.settings.inertia_version
end
version.respond_to?(:call) ? version.call.to_s : version.to_s
}
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.define_singleton_method(:share_props) do |&block|
inertia_share(&block)
end
app.helpers Sinatra::Inertia::Helpers
end
|