L E S S
B R I T T A N Y M A R T I N
W N B . R B
ENGINEERING
LEAD @
TEXTUS
HOST OF THE
5BY5
RUBY ON RAILS
PODCAST
O p e n
I n v i t e
W N B . r b
C H A L L E N G E
T H E
& A B A C K S T O R Y
C R E A T I V E P R E S E N T A T I O N
T E M P L A T E
E n g
K P I
D a s h b o a r d
Set Baseline: Time to Restore
Set Baseline: Cycle Time
Set Baseline: Lead Time
Set Baseline: Deployment Frequency
S o u r c e s
Solve
with
Ruby
AWS Lambda
Handler for Ruby
UPLOAD
ZIP FILE
EDIT
INLINE
UPLOAD
FROM S3
G e m l e s s &
S e r v e r l e s s
h t t p s : / /
j h a w t h o r n . g i t h u b . i o
/ c u r l - t o - r u b y /
C r e d i t : J o h n H a w t h o r n
require ‘octokit’
@client = Octokit::Client.new
releases = @client.releases @repo
accept = 'application/vnd.github.v3+json'
uri = URI.parse("https://api.github.com/repos/#{@repo}/pulls?state=all&per_page=100")
headers = {
'Authorization' => "Bearer #{ENV['GITHUB_ACCESS_TOKEN']}",
'Accept' => accept,
'Range' => '; max=1000'
}
response = Net::HTTP.start(uri.host, uri.port, { use_ssl: uri.scheme == 'https' }) do |http|
http.request_get(uri.path, headers)
end
JSON.parse(response.body)
G I T H U B
H E R O K U
S TAT U S PA G E
C L U B H O U S E
def fetch_endpoint(uri, accept, auth, token)
headers = {
auth => token,
'Accept' => accept
}
response = Net::HTTP.start(uri.host, uri.port, { use_ssl: uri.scheme == 'https' }) do |http|
http.request_get(uri.path, headers)
end
JSON.parse(response.body)
end
C r e d i t : H a l o
F i n a l
B o s s
require ‘aws-sdk-s3’
Aws.config.update(credentials:
Aws::Credentials.new(ENV['AWS_ACCESS'],
ENV['AWS_SECRET']))
s3 = Aws::S3::Resource.new(region: 'us-east-1')
PROVIDERS.each do |provider|
obj = s3.bucket(‘warehouse').object("#{provider}.csv")
obj.upload_file(File.open("/tmp/#{provider}.csv"))
end
uri = URI.parse("https://.s3.amazonaws.com/")
request = Net::HTTP::Put.new(uri)
request["Host"] = ".s3.amazonaws.com"
request["Date"] = Time.now
request["Content-Type"] = "application/x-compressed-tar"
request["Authorization"] = "Authorization: AWS
#{s3_access_key}:#{signature_hash}” 
https://#{bucket}.s3.amazonaws.com/#{file_to_upload}
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port,
req_options) do |http|
http.request(request)
end
L e s s o n s
•Cognizant
•Start Small
•Serverless
T H A N K
Y O U
b r i t t a n y . j i l l . m a r t i n @ g m a i l . c o m
h t t p s : / / 5 b y 5 . t v / r u b y o n r a i l s
h t t p s : / / b r i t t a n y m a r t i n . d e v / p o d c a s t s /

Gemless

  • 1.
    L E SS B R I T T A N Y M A R T I N W N B . R B
  • 2.
  • 3.
    HOST OF THE 5BY5 RUBYON RAILS PODCAST
  • 4.
    O p en I n v i t e W N B . r b
  • 5.
    C H AL L E N G E T H E & A B A C K S T O R Y
  • 6.
    C R EA T I V E P R E S E N T A T I O N T E M P L A T E E n g K P I D a s h b o a r d
  • 7.
    Set Baseline: Timeto Restore Set Baseline: Cycle Time Set Baseline: Lead Time Set Baseline: Deployment Frequency
  • 8.
    S o ur c e s
  • 9.
  • 10.
  • 11.
  • 12.
    G e ml e s s & S e r v e r l e s s
  • 13.
    h t tp s : / / j h a w t h o r n . g i t h u b . i o / c u r l - t o - r u b y / C r e d i t : J o h n H a w t h o r n
  • 14.
    require ‘octokit’ @client =Octokit::Client.new releases = @client.releases @repo accept = 'application/vnd.github.v3+json' uri = URI.parse("https://api.github.com/repos/#{@repo}/pulls?state=all&per_page=100") headers = { 'Authorization' => "Bearer #{ENV['GITHUB_ACCESS_TOKEN']}", 'Accept' => accept, 'Range' => '; max=1000' } response = Net::HTTP.start(uri.host, uri.port, { use_ssl: uri.scheme == 'https' }) do |http| http.request_get(uri.path, headers) end JSON.parse(response.body)
  • 15.
    G I TH U B H E R O K U S TAT U S PA G E C L U B H O U S E
  • 16.
    def fetch_endpoint(uri, accept,auth, token) headers = { auth => token, 'Accept' => accept } response = Net::HTTP.start(uri.host, uri.port, { use_ssl: uri.scheme == 'https' }) do |http| http.request_get(uri.path, headers) end JSON.parse(response.body) end
  • 17.
    C r ed i t : H a l o F i n a l B o s s
  • 18.
    require ‘aws-sdk-s3’ Aws.config.update(credentials: Aws::Credentials.new(ENV['AWS_ACCESS'], ENV['AWS_SECRET'])) s3 =Aws::S3::Resource.new(region: 'us-east-1') PROVIDERS.each do |provider| obj = s3.bucket(‘warehouse').object("#{provider}.csv") obj.upload_file(File.open("/tmp/#{provider}.csv")) end
  • 19.
    uri = URI.parse("https://.s3.amazonaws.com/") request= Net::HTTP::Put.new(uri) request["Host"] = ".s3.amazonaws.com" request["Date"] = Time.now request["Content-Type"] = "application/x-compressed-tar" request["Authorization"] = "Authorization: AWS #{s3_access_key}:#{signature_hash}” https://#{bucket}.s3.amazonaws.com/#{file_to_upload} req_options = { use_ssl: uri.scheme == "https", } response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http| http.request(request) end
  • 20.
    L e ss o n s •Cognizant •Start Small •Serverless
  • 21.
    T H AN K Y O U b r i t t a n y . j i l l . m a r t i n @ g m a i l . c o m h t t p s : / / 5 b y 5 . t v / r u b y o n r a i l s h t t p s : / / b r i t t a n y m a r t i n . d e v / p o d c a s t s /