
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
adsf
Advanced tools
adsf (A Dead Simple Fileserver) is a tiny static web server that you can launch instantly in any directory, like this:
â–¸ ls -l
total 0
drwxr-xr-x 2 ddfreyne staff 68 May 29 10:04 about
drwxr-xr-x 2 ddfreyne staff 68 May 29 10:04 contact
-rw-r--r-- 1 ddfreyne staff 0 May 29 10:04 index.html
drwxr-xr-x 2 ddfreyne staff 68 May 29 10:04 projects
â–¸ adsf
[2017-11-19 11:49:20] INFO WEBrick 1.3.1
[2017-11-19 11:49:20] INFO ruby 2.4.2 (2017-09-14) [x86_64-darwin17]
[2017-11-19 11:49:20] INFO WEBrick::HTTPServer#start: pid=95218 port=3000
… and now you can go to http://localhost:3000/ and start browsing.
See adsf --help for details.
To use adsf --live-reload, please install the separate adsf-live gem. (The live-reload support is not part of adsf itself, because the dependencies of adsf-live make it difficult to install under some circumstances.)
Adsf::Server runs a web server programmatically. For example:
server = Adsf::Server.new(root: 'public')
%w[INT TERM].each do |s|
Signal.trap(s) { server.stop }
end
server.run
It takes the following options:
root (required): the path to the web rootindex_filenames (optional; defaults to ['index.html']): (see below)auto_extensions (optional; defaults to []; can be a string or an array of strings): If present, the server will automatically append the given extensions when searching for files. For example, auto_extensions: ".html" would cause a request for /foo to serve /foo.html if there is no file or directory named /foo.host (optional; defaults to '127.0.0.1'): the address of the network interface to listen onport (optional; defaults to 3000): the port to listen onhandler (optional): the Rack handler to useIf you are assembling your own Rack configuration, you can use adsf’s Adsf::Rack::IndexFileFinder middleware to make Rack load an index file (e.g. index.html) when requesting a directory. For example, the following runs a web server with the 'public' directory as its web root:
use Adsf::Rack::IndexFileFinder, root: 'public'
run Rack::Files.new('public')
It takes the following options:
root (required): the path to the web root
index_filenames (optional; defaults to ['index.html']): contains the names of the index filenames that will be served when a directory containing an index file is requested. Usually, this will simply be ['index.html'], but under different circumstances (when using IIS, for example), the array may have to be modified to include index filenames such as default.html or index.xml. Here’s an example middleware/application stack that uses custom index filenames:
use Adsf::Rack::IndexFileFinder,
root: 'public',
index_filenames: %w[index.html index.xhtml]
run Rack::Files.new('public')
Why not use Rack::Static? Rack comes with Rack::Static, whose purpose is similar to, but not the same as, Adsf::Rack::IndexFileFinder. In particular:
Adsf::Rack::IndexFileFinder does not serve files, unlike Rack::Static. IndexFileFinder only rewrites the incoming request and passes it on (usually to Rack::Files).
Adsf::Rack::IndexFileFinder supports multiple index files, while Rack::Static only supports one (you could have multiple Rack::Static middlewares, one for each index filenames, though).
Rack::Static will report the wrong filename on 404 pages: when requesting a directory without an index file, it will e.g. report “File not found: /index.html” rather than “File not found: /”.
When requesting a directory without specifying the trailing slash, Adsf::Rack::IndexFileFinder will redirect to the URL with a trailing slash, unlike Rack::Static. This mimics the behavior of typical HTTP servers. For example, when requesting /foo, when a foo directory exists and it contains index.html, IndexFileFinder will redirect to /foo/.
FAQs
Unknown package
We found that adsf demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.