mirror of
https://github.com/lloeki/minimal-rack/
synced 2025-12-06 05:04:40 +01:00
Make apps uniform
This commit is contained in:
parent
de989153e4
commit
cfba5211d0
6 changed files with 127 additions and 13 deletions
|
|
@ -7,6 +7,12 @@ rack:
|
||||||
ruby: '>= 2.4.0'
|
ruby: '>= 2.4.0'
|
||||||
gem:
|
gem:
|
||||||
rackup: '>= 0'
|
rackup: '>= 0'
|
||||||
|
# thin is not (yet) compatible with rack 3
|
||||||
|
# TODO: don't bring in an unneeded server (e.g wiht this puma brings in thin)
|
||||||
|
thin:
|
||||||
|
github: 'lloeki/thin'
|
||||||
|
branch: 'rack-3'
|
||||||
|
# TODO: add blanket incompatibility declaration via e.g
|
||||||
# thin: false
|
# thin: false
|
||||||
sinatra:
|
sinatra:
|
||||||
- version: '~> 1.0'
|
- version: '~> 1.0'
|
||||||
|
|
@ -62,6 +68,16 @@ rails:
|
||||||
- version: '~> 7.1.0'
|
- version: '~> 7.1.0'
|
||||||
# 3.3 has a bug: https://bugs.ruby-lang.org/issues/20085
|
# 3.3 has a bug: https://bugs.ruby-lang.org/issues/20085
|
||||||
ruby: ['>= 2.7', '< 3.3']
|
ruby: ['>= 2.7', '< 3.3']
|
||||||
|
gem:
|
||||||
|
sinatra: '>= 0.a'
|
||||||
|
grape: '>= 0.a'
|
||||||
|
pry: '> 0'
|
||||||
|
# thin is not (yet) compatible with rack 3
|
||||||
|
thin:
|
||||||
|
github: 'lloeki/thin'
|
||||||
|
branch: 'rack-3'
|
||||||
|
# TODO: add blanket incompatibility declaration via e.g
|
||||||
|
# thin: false
|
||||||
grape:
|
grape:
|
||||||
- version: ['~> 1.0', '< 1.3']
|
- version: ['~> 1.0', '< 1.3']
|
||||||
ruby: ['>= 2.0', '< 3.0']
|
ruby: ['>= 2.0', '< 3.0']
|
||||||
|
|
@ -85,3 +101,9 @@ grape:
|
||||||
ruby: ['>= 2.6']
|
ruby: ['>= 2.6']
|
||||||
gem:
|
gem:
|
||||||
rackup: '>= 0'
|
rackup: '>= 0'
|
||||||
|
# thin is not (yet) compatible with rack 3
|
||||||
|
thin:
|
||||||
|
github: 'lloeki/thin'
|
||||||
|
branch: 'rack-3'
|
||||||
|
# TODO: add blanket incompatibility declaration via e.g
|
||||||
|
# thin: false
|
||||||
|
|
|
||||||
28
grape.rb
Normal file → Executable file
28
grape.rb
Normal file → Executable file
|
|
@ -1,3 +1,5 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require "bundler/inline"
|
require "bundler/inline"
|
||||||
rescue LoadError => e
|
rescue LoadError => e
|
||||||
|
|
@ -21,15 +23,17 @@ end.tap do |m|
|
||||||
end.first
|
end.first
|
||||||
server = ARGV[1] || 'thin'
|
server = ARGV[1] || 'thin'
|
||||||
|
|
||||||
|
gems = match.fetch('gem', {})
|
||||||
gemfile(true) do
|
gemfile(true) do
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
ruby match['ruby']
|
ruby match['ruby']
|
||||||
|
|
||||||
gem 'grape', "~> #{version}.0"
|
gem 'grape', "~> #{version}.0"
|
||||||
gem server
|
gem server unless gems.key?(server)
|
||||||
|
gem 'ddtrace'
|
||||||
|
|
||||||
match.fetch('gem', []).each do |name, requirement|
|
gems.each do |name, requirement|
|
||||||
gem name, requirement
|
gem name, requirement
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -59,6 +63,9 @@ class API < Grape::API
|
||||||
end
|
end
|
||||||
|
|
||||||
App = Rack::Builder.new do
|
App = Rack::Builder.new do
|
||||||
|
use Datadog::Tracing::Contrib::Rack::TraceMiddleware
|
||||||
|
use Datadog::AppSec::Contrib::Rack::RequestMiddleware
|
||||||
|
|
||||||
# precompile routes
|
# precompile routes
|
||||||
API.compile!
|
API.compile!
|
||||||
|
|
||||||
|
|
@ -69,5 +76,22 @@ App = Rack::Builder.new do
|
||||||
# run Rack::Cascade.new [Web, API]
|
# run Rack::Cascade.new [Web, API]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
require 'ddtrace'
|
||||||
|
|
||||||
|
Datadog.configure do |c|
|
||||||
|
c.diagnostics.debug = true
|
||||||
|
|
||||||
|
c.telemetry.enabled = true
|
||||||
|
|
||||||
|
c.remote.enabled = true
|
||||||
|
|
||||||
|
c.tracing.enabled = true
|
||||||
|
c.tracing.instrument :rack
|
||||||
|
c.tracing.instrument :grape
|
||||||
|
|
||||||
|
c.appsec.enabled = true
|
||||||
|
c.appsec.instrument :rack
|
||||||
|
end
|
||||||
|
|
||||||
Rack::Server.new(app: App, Host: '0.0.0.0', Port: 3000).start
|
Rack::Server.new(app: App, Host: '0.0.0.0', Port: 3000).start
|
||||||
|
|
||||||
|
|
|
||||||
28
rack.rb
Normal file → Executable file
28
rack.rb
Normal file → Executable file
|
|
@ -1,3 +1,5 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require "bundler/inline"
|
require "bundler/inline"
|
||||||
rescue LoadError => e
|
rescue LoadError => e
|
||||||
|
|
@ -21,15 +23,17 @@ end.tap do |m|
|
||||||
end.first
|
end.first
|
||||||
server = ARGV[1] || 'thin'
|
server = ARGV[1] || 'thin'
|
||||||
|
|
||||||
|
gems = match.fetch('gem', {})
|
||||||
gemfile(true) do
|
gemfile(true) do
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
ruby match['ruby']
|
ruby match['ruby'] if match['ruby']
|
||||||
|
|
||||||
gem 'rack', "~> #{version}.0"
|
gem 'rack', "~> #{version}.0"
|
||||||
gem server
|
gem server unless gems.key?(server)
|
||||||
|
gem 'ddtrace'
|
||||||
|
|
||||||
match.fetch('gem', []).each do |name, requirement|
|
gems.each do |name, requirement|
|
||||||
gem name, requirement
|
gem name, requirement
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -37,7 +41,25 @@ end
|
||||||
require 'rack'
|
require 'rack'
|
||||||
require 'json'
|
require 'json'
|
||||||
|
|
||||||
|
require 'ddtrace'
|
||||||
|
Datadog.configure do |c|
|
||||||
|
c.diagnostics.debug = true
|
||||||
|
|
||||||
|
c.telemetry.enabled = true
|
||||||
|
|
||||||
|
c.remote.enabled = true
|
||||||
|
|
||||||
|
c.tracing.enabled = true
|
||||||
|
c.tracing.instrument :rack
|
||||||
|
|
||||||
|
c.appsec.enabled = true
|
||||||
|
c.appsec.instrument :rack
|
||||||
|
end
|
||||||
|
|
||||||
App = Rack::Builder.new do
|
App = Rack::Builder.new do
|
||||||
|
use Datadog::Tracing::Contrib::Rack::TraceMiddleware
|
||||||
|
use Datadog::AppSec::Contrib::Rack::RequestMiddleware
|
||||||
|
|
||||||
map "/hello/world" do
|
map "/hello/world" do
|
||||||
run -> (env) { [200, { 'content-type' => 'application/json' }, [JSON.dump({ hello: :world })]] }
|
run -> (env) { [200, { 'content-type' => 'application/json' }, [JSON.dump({ hello: :world })]] }
|
||||||
end
|
end
|
||||||
|
|
|
||||||
23
rails.rb
Normal file → Executable file
23
rails.rb
Normal file → Executable file
|
|
@ -1,3 +1,5 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require "bundler/inline"
|
require "bundler/inline"
|
||||||
rescue LoadError => e
|
rescue LoadError => e
|
||||||
|
|
@ -21,16 +23,17 @@ end.tap do |m|
|
||||||
end.first
|
end.first
|
||||||
server = ARGV[1] || 'thin'
|
server = ARGV[1] || 'thin'
|
||||||
|
|
||||||
|
gems = match.fetch('gem', {})
|
||||||
gemfile(true) do
|
gemfile(true) do
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
ruby match['ruby']
|
ruby match['ruby']
|
||||||
|
|
||||||
gem 'rails', "~> #{version}.0"
|
gem 'rails', "~> #{version}.0"
|
||||||
gem server
|
gem server unless gems.key?(server)
|
||||||
gem 'ddtrace', path: '../../Datadog/dd-trace-rb', require: 'ddtrace/auto_instrument'
|
gem 'ddtrace'
|
||||||
|
|
||||||
match.fetch('gem', []).each do |name, requirement|
|
gems.each do |name, requirement|
|
||||||
gem name, requirement
|
gem name, requirement
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -163,6 +166,7 @@ class App < Rails::Application
|
||||||
get "/hello/world" => "hello#world"
|
get "/hello/world" => "hello#world"
|
||||||
get "/hello/:id" => "hello#world"
|
get "/hello/:id" => "hello#world"
|
||||||
|
|
||||||
|
#mount SimpleEngine::Engine => "/"
|
||||||
mount SimpleEngine::Engine => "/engine/simple"
|
mount SimpleEngine::Engine => "/engine/simple"
|
||||||
mount EndpointEngine::Engine => "/engine/endpoint"
|
mount EndpointEngine::Engine => "/engine/endpoint"
|
||||||
mount RackApp => "/rack"
|
mount RackApp => "/rack"
|
||||||
|
|
@ -193,13 +197,24 @@ class HelloController < action_controller_api_class
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
require 'ddtrace'
|
||||||
|
|
||||||
Datadog.configure do |c|
|
Datadog.configure do |c|
|
||||||
c.diagnostics.debug = ['true', '1'].include?(ENV['DD_DIAGNOSTICS'])
|
c.diagnostics.debug = true
|
||||||
|
|
||||||
|
c.telemetry.enabled = true
|
||||||
|
|
||||||
|
c.remote.enabled = true
|
||||||
|
|
||||||
c.tracing.enabled = true
|
c.tracing.enabled = true
|
||||||
c.tracing.instrument :rack
|
c.tracing.instrument :rack
|
||||||
c.tracing.instrument :rails
|
c.tracing.instrument :rails
|
||||||
c.tracing.instrument :sinatra
|
c.tracing.instrument :sinatra
|
||||||
c.tracing.instrument :grape
|
c.tracing.instrument :grape
|
||||||
|
|
||||||
|
c.appsec.enabled = true
|
||||||
|
c.appsec.instrument :rack
|
||||||
|
c.appsec.instrument :rails
|
||||||
end
|
end
|
||||||
|
|
||||||
SimpleApp::App.initialize!
|
SimpleApp::App.initialize!
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,14 @@ in llvm.stdenv.mkDerivation {
|
||||||
|
|
||||||
# for psych >= 5.1 pulled by rails 7.1
|
# for psych >= 5.1 pulled by rails 7.1
|
||||||
pkgs.libyaml.dev
|
pkgs.libyaml.dev
|
||||||
|
|
||||||
|
# some packages want gcc/g++
|
||||||
|
gcc
|
||||||
|
|
||||||
|
# tools
|
||||||
|
pkgs.vegeta
|
||||||
|
pkgs.graphviz
|
||||||
|
pkgs.gnuplot
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
31
sinatra.rb
Normal file → Executable file
31
sinatra.rb
Normal file → Executable file
|
|
@ -1,3 +1,5 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require "bundler/inline"
|
require "bundler/inline"
|
||||||
rescue LoadError => e
|
rescue LoadError => e
|
||||||
|
|
@ -21,15 +23,17 @@ end.tap do |m|
|
||||||
end.first
|
end.first
|
||||||
server = ARGV[1] || 'thin'
|
server = ARGV[1] || 'thin'
|
||||||
|
|
||||||
|
gems = match.fetch('gem', {})
|
||||||
gemfile(true) do
|
gemfile(true) do
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
ruby match['ruby'] if match['ruby']
|
ruby match['ruby'] if match['ruby']
|
||||||
|
|
||||||
gem 'sinatra', "~> #{version}.0"
|
gem 'sinatra', "~> #{version}.0"
|
||||||
gem server
|
gem server unless gems.key?(server)
|
||||||
|
gem 'ddtrace'
|
||||||
|
|
||||||
match.fetch('gem', []).each do |name, requirement|
|
gems.each do |name, requirement|
|
||||||
gem name, requirement
|
gem name, requirement
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
@ -37,11 +41,30 @@ end
|
||||||
require 'sinatra/base'
|
require 'sinatra/base'
|
||||||
require 'json'
|
require 'json'
|
||||||
|
|
||||||
|
require 'ddtrace'
|
||||||
|
Datadog.configure do |c|
|
||||||
|
c.diagnostics.debug = true
|
||||||
|
|
||||||
|
c.telemetry.enabled = true
|
||||||
|
|
||||||
|
c.remote.enabled = true
|
||||||
|
|
||||||
|
c.tracing.enabled = true
|
||||||
|
c.tracing.instrument :rack, service_name: 'minimal-rack'
|
||||||
|
c.tracing.instrument :sinatra, service_name: 'minimal-sinatra'
|
||||||
|
|
||||||
|
c.appsec.enabled = true
|
||||||
|
c.appsec.instrument :rack
|
||||||
|
c.appsec.instrument :sinatra
|
||||||
|
end
|
||||||
|
|
||||||
class App < Sinatra::Base
|
class App < Sinatra::Base
|
||||||
get '/hello/world' do
|
use Datadog::Tracing::Contrib::Rack::TraceMiddleware
|
||||||
|
|
||||||
|
get '/hello/:id' do
|
||||||
status 200
|
status 200
|
||||||
content_type :json
|
content_type :json
|
||||||
body JSON.dump({ hello: :world })
|
body JSON.dump({ hello: params[:id] || 'world' })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue