Skip to content

Instantly share code, notes, and snippets.

@TakahikoKawasaki
Last active October 19, 2023 14:38
Show Gist options
  • Save TakahikoKawasaki/aefb0b9e4306b6dfbcc5 to your computer and use it in GitHub Desktop.
Save TakahikoKawasaki/aefb0b9e4306b6dfbcc5 to your computer and use it in GitHub Desktop.
Sinatra + Thin + SSL
#!/usr/bin/env ruby
#
# This code snippet shows how to enable SSL in Sinatra+Thin.
#
require 'sinatra'
require 'thin'
class MyThinBackend < ::Thin::Backends::TcpServer
def initialize(host, port, options)
super(host, port)
@ssl = true
@ssl_options = options
end
end
configure do
set :environment, :production
set :bind, '0.0.0.0'
set :port, 443
set :server, "thin"
class << settings
def server_settings
{
:backend => MyThinBackend,
:private_key_file => File.dirname(__FILE__) + "/server.key",
:cert_chain_file => File.dirname(__FILE__) + "/server.crt",
:verify_peer => false
}
end
end
end
get '/' do
"Hello, SSL."
end
@luisantoniojr
Copy link

Anyone knows how to do the same thing with puma?

@muratseyhan
Copy link

Thanks for this!

@Frederick888
Copy link

How should I configure this if I've got more than one subclasses of Sinatra::Base and using config.ru?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment