Si usa esta forma para mostrar solo el archivo index.html en la carpeta public, funciona:

require 'rubygems'
require 'sinatra'

set :bind, '0.0.0.0'

get '/' do
  File.read('index.html')
end

Pero quiere mostrar todos los archivos en la carpeta actual, probé a continuación pero no funcionó.

require 'rubygems'
require 'sinatra'

set :bind, '0.0.0.0'

get '/' do
  File.read('*.html')
end

Error tiene:

Errno::ENOENT at /
No such file or directory @ rb_sysopen - *.html
1
zseikyocho 17 oct. 2018 a las 07:59

2 respuestas

La mejor respuesta

No es necesario usar sinatra para esta tarea, creo que quieres algo similar a python simplehttpserver

Prueba con esta aproximación:

En una consola dentro de la carpeta, intente:

 ruby -run -e httpd -- -p 5000

╭─ ~/learn/ruby/ruby-way/stackoverflow/q-static-html-007/html 
╰─ tree
.
.
├── 1.html
└── 2.html

server running

1
anquegi 17 oct. 2018 a las 05:36

Utilice Dir.glob('*.html'). Por ejemplo,

Dir.glob('*.html'){ |f| File.read f }

NOTA : Dir.glob('*.html').each{ } también funciona, pero each es superfluo.

3
Masa Sakano 17 oct. 2018 a las 06:47