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'
|
||||
gem:
|
||||
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
|
||||
sinatra:
|
||||
- version: '~> 1.0'
|
||||
|
|
@ -62,6 +68,16 @@ rails:
|
|||
- version: '~> 7.1.0'
|
||||
# 3.3 has a bug: https://bugs.ruby-lang.org/issues/20085
|
||||
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:
|
||||
- version: ['~> 1.0', '< 1.3']
|
||||
ruby: ['>= 2.0', '< 3.0']
|
||||
|
|
@ -85,3 +101,9 @@ grape:
|
|||
ruby: ['>= 2.6']
|
||||
gem:
|
||||
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
|
||||
require "bundler/inline"
|
||||
rescue LoadError => e
|
||||
|
|
@ -21,15 +23,17 @@ end.tap do |m|
|
|||
end.first
|
||||
server = ARGV[1] || 'thin'
|
||||
|
||||
gems = match.fetch('gem', {})
|
||||
gemfile(true) do
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby match['ruby']
|
||||
|
||||
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
|
||||
end
|
||||
end
|
||||
|
|
@ -59,6 +63,9 @@ class API < Grape::API
|
|||
end
|
||||
|
||||
App = Rack::Builder.new do
|
||||
use Datadog::Tracing::Contrib::Rack::TraceMiddleware
|
||||
use Datadog::AppSec::Contrib::Rack::RequestMiddleware
|
||||
|
||||
# precompile routes
|
||||
API.compile!
|
||||
|
||||
|
|
@ -69,5 +76,22 @@ App = Rack::Builder.new do
|
|||
# run Rack::Cascade.new [Web, API]
|
||||
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
|
||||
|
||||
|
|
|
|||
28
rack.rb
Normal file → Executable file
28
rack.rb
Normal file → Executable file
|
|
@ -1,3 +1,5 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
begin
|
||||
require "bundler/inline"
|
||||
rescue LoadError => e
|
||||
|
|
@ -21,15 +23,17 @@ end.tap do |m|
|
|||
end.first
|
||||
server = ARGV[1] || 'thin'
|
||||
|
||||
gems = match.fetch('gem', {})
|
||||
gemfile(true) do
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby match['ruby']
|
||||
ruby match['ruby'] if match['ruby']
|
||||
|
||||
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
|
||||
end
|
||||
end
|
||||
|
|
@ -37,7 +41,25 @@ end
|
|||
require 'rack'
|
||||
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
|
||||
use Datadog::Tracing::Contrib::Rack::TraceMiddleware
|
||||
use Datadog::AppSec::Contrib::Rack::RequestMiddleware
|
||||
|
||||
map "/hello/world" do
|
||||
run -> (env) { [200, { 'content-type' => 'application/json' }, [JSON.dump({ hello: :world })]] }
|
||||
end
|
||||
|
|
|
|||
23
rails.rb
Normal file → Executable file
23
rails.rb
Normal file → Executable file
|
|
@ -1,3 +1,5 @@
|
|||
#!/usr/bin/env ruby
|
||||
|
||||
begin
|
||||
require "bundler/inline"
|
||||
rescue LoadError => e
|
||||
|
|
@ -21,16 +23,17 @@ end.tap do |m|
|
|||
end.first
|
||||
server = ARGV[1] || 'thin'
|
||||
|
||||
gems = match.fetch('gem', {})
|
||||
gemfile(true) do
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby match['ruby']
|
||||
|
||||
gem 'rails', "~> #{version}.0"
|
||||
gem server
|
||||
gem 'ddtrace', path: '../../Datadog/dd-trace-rb', require: 'ddtrace/auto_instrument'
|
||||
gem server unless gems.key?(server)
|
||||
gem 'ddtrace'
|
||||
|
||||
match.fetch('gem', []).each do |name, requirement|
|
||||
gems.each do |name, requirement|
|
||||
gem name, requirement
|
||||
end
|
||||
end
|
||||
|
|
@ -163,6 +166,7 @@ class App < Rails::Application
|
|||
get "/hello/world" => "hello#world"
|
||||
get "/hello/:id" => "hello#world"
|
||||
|
||||
#mount SimpleEngine::Engine => "/"
|
||||
mount SimpleEngine::Engine => "/engine/simple"
|
||||
mount EndpointEngine::Engine => "/engine/endpoint"
|
||||
mount RackApp => "/rack"
|
||||
|
|
@ -193,13 +197,24 @@ class HelloController < action_controller_api_class
|
|||
end
|
||||
end
|
||||
|
||||
require 'ddtrace'
|
||||
|
||||
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.instrument :rack
|
||||
c.tracing.instrument :rails
|
||||
c.tracing.instrument :sinatra
|
||||
c.tracing.instrument :grape
|
||||
|
||||
c.appsec.enabled = true
|
||||
c.appsec.instrument :rack
|
||||
c.appsec.instrument :rails
|
||||
end
|
||||
|
||||
SimpleApp::App.initialize!
|
||||
|
|
|
|||
|
|
@ -13,6 +13,14 @@ in llvm.stdenv.mkDerivation {
|
|||
|
||||
# for psych >= 5.1 pulled by rails 7.1
|
||||
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
|
||||
require "bundler/inline"
|
||||
rescue LoadError => e
|
||||
|
|
@ -21,15 +23,17 @@ end.tap do |m|
|
|||
end.first
|
||||
server = ARGV[1] || 'thin'
|
||||
|
||||
gems = match.fetch('gem', {})
|
||||
gemfile(true) do
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby match['ruby'] if match['ruby']
|
||||
|
||||
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
|
||||
end
|
||||
end
|
||||
|
|
@ -37,11 +41,30 @@ end
|
|||
require 'sinatra/base'
|
||||
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
|
||||
get '/hello/world' do
|
||||
use Datadog::Tracing::Contrib::Rack::TraceMiddleware
|
||||
|
||||
get '/hello/:id' do
|
||||
status 200
|
||||
content_type :json
|
||||
body JSON.dump({ hello: :world })
|
||||
body JSON.dump({ hello: params[:id] || 'world' })
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue