CARVIEW |
Select Language
HTTP/2 302
server: nginx
date: Sun, 27 Jul 2025 19:37:27 GMT
content-type: text/plain; charset=utf-8
content-length: 0
x-archive-redirect-reason: found capture at 20171108162802
location: https://web.archive.org/web/20171108162802/https://github.com/github/gem-builder
server-timing: captures_list;dur=0.506273, exclusion.robots;dur=0.020800, exclusion.robots.policy;dur=0.009410, esindex;dur=0.011232, cdx.remote;dur=396.192621, LoadShardBlock;dur=327.985501, PetaboxLoader3.datanode;dur=87.449821, PetaboxLoader3.resolve;dur=78.668283
x-app-server: wwwb-app213
x-ts: 302
x-tr: 748
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
set-cookie: SERVER=wwwb-app213; path=/
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
HTTP/2 200
server: nginx
date: Sun, 27 Jul 2025 19:37:29 GMT
content-type: text/html; charset=utf-8
x-archive-orig-date: Wed, 08 Nov 2017 16:28:02 GMT
x-archive-orig-connection: close
x-archive-orig-server: GitHub.com
x-archive-orig-status: 200 OK
x-archive-orig-cache-control: no-cache
x-archive-orig-vary: X-PJAX
x-archive-orig-x-ua-compatible: IE=Edge,chrome=1
x-archive-orig-set-cookie: _gh_sess=eyJzZXNzaW9uX2lkIjoiNGY2NDc2ZWJmMTJhNDQyNWYyZmUxMDQxYTliMmIzZmIiLCJsYXN0X3JlYWRfZnJvbV9yZXBsaWNhcyI6MTUxMDE1ODQ4Mjg2OCwiX2NzcmZfdG9rZW4iOiJXWENFSGZlamozcjR1ZSt1UVNOWGVXTXF2d2d4S3pFOThIeVJHWHpKYW5NPSIsInJlZmVycmFsX2NvZGUiOiJodHRwczovL2Rldi5idWtraXQub3JnLyIsInJldHVybl90byI6Imh0dHBzOi8vZ2l0aHViLmNvbS9Ta3lXYXJzL1NreVdhcnMvaXNzdWVzL25ldyIsInNweV9yZXBvIjoiZ2l0aHViL2dlbS1idWlsZGVyIiwic3B5X3JlcG9fYXQiOjE1MTAxNTg0ODIsImZsYXNoIjp7ImRpc2NhcmQiOlsiYW5hbHl0aWNzX2xvY2F0aW9uIl0sImZsYXNoZXMiOnsiYW5hbHl0aWNzX2xvY2F0aW9uIjoiLzx1c2VyLW5hbWU%2BLzxyZXBvLW5hbWU%2BIn19fQ%3D%3D--fc65e80084b20b39583a2f047ff37787b537c26e; path=/; secure; HttpOnly
x-archive-orig-x-request-id: 8d382f14ce1722abd1d2f22f58c59444
x-archive-orig-x-runtime: 0.199364
x-archive-orig-expect-ct: max-age=2592000, report-uri="https://api.github.com/_private/browser/errors"
x-archive-orig-content-security-policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src render.githubusercontent.com; connect-src 'self' uploads.github.com status.github.com collector.githubapp.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; img-src 'self' data: assets-cdn.github.com identicons.github.com collector.githubapp.com github-cloud.s3.amazonaws.com *.githubusercontent.com; media-src 'none'; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com
x-archive-orig-strict-transport-security: max-age=31536000; includeSubdomains; preload
x-archive-orig-public-key-pins: max-age=0; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho="; pin-sha256="k2v657xBsOVe1PQRwOsHsw3bsGT2VzIqz5K+59sNQws="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="IQBnNBEiFuhj+8x6X8XLgh01V9Ic5/V3IRQLNFFc7v4="; pin-sha256="iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0="; pin-sha256="LvRiGEjRqfzurezaWuj8Wie2gyHMrW5Q06LspMnox7A="; includeSubDomains
x-archive-orig-x-content-type-options: nosniff
x-archive-orig-x-frame-options: deny
x-archive-orig-x-xss-protection: 1; mode=block
x-archive-orig-x-runtime-rack: 0.207663
x-archive-orig-vary: Accept-Encoding
x-archive-orig-x-github-request-id: DB4C:72E7:E7EFEF:150EF80:5A033092
x-archive-orig-content-length: 51283
x-archive-guessed-content-type: text/html
x-archive-guessed-charset: utf-8
memento-datetime: Wed, 08 Nov 2017 16:28:02 GMT
link: ; rel="original", ; rel="timemap"; type="application/link-format", ; rel="timegate", ; rel="first memento"; datetime="Wed, 08 Nov 2017 16:28:02 GMT", ; rel="memento"; datetime="Wed, 08 Nov 2017 16:28:02 GMT", ; rel="next memento"; datetime="Mon, 04 Jun 2018 10:07:27 GMT", ; rel="last memento"; datetime="Fri, 11 Jul 2025 00:20:33 GMT"
content-security-policy: default-src 'self' 'unsafe-eval' 'unsafe-inline' data: blob: archive.org web.archive.org web-static.archive.org wayback-api.archive.org athena.archive.org analytics.archive.org pragma.archivelab.org wwwb-events.archive.org
x-archive-src: liveweb-20171108163014/live-20171108155920-wwwb-app6.us.archive.org.warc.gz
server-timing: captures_list;dur=0.750385, exclusion.robots;dur=0.029262, exclusion.robots.policy;dur=0.015844, esindex;dur=0.015121, cdx.remote;dur=1022.674467, LoadShardBlock;dur=233.673178, PetaboxLoader3.datanode;dur=192.420712, PetaboxLoader3.resolve;dur=227.775194, load_resource;dur=238.296669
x-app-server: wwwb-app213
x-ts: 200
x-tr: 1610
server-timing: TR;dur=0,Tw;dur=0,Tc;dur=0
x-location: All
x-rl: 0
x-na: 0
x-page-cache: MISS
server-timing: MISS
x-nid: DigitalOcean
referrer-policy: no-referrer-when-downgrade
permissions-policy: interest-cohort=()
content-encoding: gzip
GitHub - github/gem-builder: The scripts used to build RubyGems on GitHub
This repository has been archived by the owner. It is now read-only.
Join GitHub today
GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together.
The scripts used to build RubyGems on GitHub
Ruby
Clone or download
Permalink
Failed to load latest commit information. | |||
![]() |
README | Update README to reflect unmaintained status |
|
![]() |
gem_builder.rb | Initial commit of gem builder |
|
![]() |
gem_eval.rb | Lock down gem_eval from parser based code reordering hacks |
|
![]() |
gem_eval_test.rb | Update expectations to match actual YAML hash ordering |
|
![]() |
git_mock | moved all system commands outside of fork so security enhancements do… |
|
![]() |
lazy_dir.rb | made base glob dir more specific |
|
![]() |
lazy_dir_test.rb | made base glob dir more specific |
|
![]() |
security.rb | freeze String class |
|
![]() |
security_test.rb | remove debug comments |
|
README
NOTE: This repository is no longer supported or updated by GitHub. If you wish to continue to develop this code yourself, we recommend you fork it. GitHub's Gem Evaler ------------------- Help make GitHub's gem build process more secure and robust! There are two components associated with this: * gem_builder.rb - Script that builds the gem * gem_eval.rb - Sandboxed Sinatra app that evals ruby gemspecs gem_builder.rb works as follows: 1) process() is called with a repository object and the path to the gemspec 2) If the spec is not in YAML, a request is made to the gem evaler (see below how it works) 3) A Gem::Specification object is created from the YAML gemspec and renamed with the user's login 4) The gem is built from the Gem::Specification using a monkey-patched version of RubyGems, so instead of grabbing the files from the filesystem, they're grabbed from the git repo gem_eval.rb works as follows: 1) Receives a request with the repo location and the ruby gemspec 2) Makes a shallow clone of the repo and chdir's to that repo 3) Evals the spec in a separate thread with a higher $SAFE level 4) Converts spec to YAML Goals ----- * Lower the $SAFE level to allow methods like Dir.glob, but without compromising security. * Never get another email from someone wondering why their gem didn't build
You can't perform that action at this time.
You signed in with another tab or window. Reload to refresh your session.
You signed out in another tab or window. Reload to refresh your session.