-
Notifications
You must be signed in to change notification settings - Fork 275
Mounting Endpoints
Several Shrine plugins – upload_endpoint
, presign_endpoint
,
derivation_endpoint
, and download_endpoint
– come with [Rack] apps, which
can be "mounted" inside your router to handle incoming requests. Since these
apps are built on top of Rack, they can be used with any Rack-based Ruby web
framework.
Shrine.upload_endpoint(:cache)
Shrine.presign_endpoint(:cache)
Shrine.download_endpoint
Shrine.derivation_endpoint
However, different web frameworks offer a different API for mounting Rack apps. This document attempts to provide a comperhensive list of how this is done in all major Ruby web frameworks.
In Rails you can use #mount
in config/routes.rb
:
# config/routes.rb
Rails.application.routes.draw do
mount ImageUploader.derivation_endpoint => "derivations/image"
end
Sinatra doesn't offer an dedicated API, but you can still do it in your
config.ru
:
# config.ru
map "/derivations/image" do
run ImageUploader.derivation_endpoint
end
run YourMainApp
In Hanami you can use #mount
in config/environment.rb
:
Hanami.configure do
mount ImageUploader.derivation_endpoint, at: "/derivations/image"
end
In Grape you can use #mount
inside your app:
class MyApp < Grape::API
mount Shrine.derivation_endpoint => "/derivations/image"
end
In Roda you can use #run
inside a routing tree:
class MyApp < Roda
route do |r|
r.on "derivations/image" do
r.run ImageUploader.derivation_endpoint
end
end
end
In Cuba you can use #run
inside a routing tree:
class MyApp < Cuba
define do
on "derivations/image" do
run ImageUploader.derivation_endpoint
end
end
end