web-dev-qa-db-fra.com

servir le répertoire actuel à partir de la ligne de commande

quelqu'un pourrait-il me donner un indice, comment servir le répertoire actuel à partir de la ligne de commande avec ruby? ce serait génial, si je peux avoir une configuration à l'échelle du système (par exemple mime-types) et simplement le lancer à partir de chaque répertoire.

90
Sebastian

Manière la plus simple possible (merci Aaron Patterson /n0kada):

Ruby -run -e httpd . -p 9090

Autre manière, plus complexe:

Ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"

Même la première commande est difficile à retenir, donc je l'ai juste dans mon .bashrc:

function serve {
  port="${1:-3000}"
  Ruby -run -e httpd . -p $port
}

Il sert le répertoire courant sur le port 3000 par défaut, mais vous pouvez également spécifier le port:

~ $ cd tmp
~/tmp $ serve      # ~/tmp served on port 3000
~/tmp $ cd ../www
~/www $ serve 5000   # ~/www served on port 5000
196

Comme Aaron Pattersonl'a tweeté aujourd'hui, vous pouvez faire:

Ruby -run -e httpd . -p 5000

Et vous pouvez également définir l'adresse de liaison en ajoutant -b 127.0.0.1

Fonctionne avec Ruby 1.9.2 et plus.

21
KARASZI István

Je n'ai jamais rien vu d'aussi compact que

python -m SimpleHTTPServer

pour Ruby, la réponse de Chris apparaît plusieurs fois sur Google.

21
Michael Kohl
require 'webrick'
include WEBrick

s = HTTPServer.new(:Port => 9090,  :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
5
user286355

Utilisez Ruby gem Serve .

Pour installer sur votre système, exécutez gem install serve.

Pour servir un répertoire, cd simplement dans le répertoire et exécutez serve.

Le port par défaut est 4000. Il peut également servir des choses comme ERB, HAML, Slim et SASS.

4
jellymann

Vous pouvez utiliser la gemme sinatra, bien qu'elle ne fasse aucune liste de répertoires pour vous, elle sert des fichiers:

require 'sinatra' # gem
set :public_folder, '.'

puis exécutez-le en tant que fichier, si dans la version 1.8, ajoutez d'abord "rubygems" en haut.

Après l'avoir exécuté, l'URL est comme

http: // localhost: 4567/nom_fichier

devrait résoudre le fichier "./file_name".

http: // localhost: 4567 ne fonctionnera cependant pas, car il ne "fait" pas les listes de répertoires. Voir https://stackoverflow.com/a/12115019/3245 pour une solution de contournement là-bas.

3
rogerdpack

Serveur Web en 1 ligne


Cela peut ou peut ne pas être tout à fait ce que vous voulez mais c'est tellement cool que je devais juste le partager.

Je l'ai utilisé dans le passé pour servir le système de fichiers. Peut-être pourriez-vous le modifier ou simplement accepter qu'il sert à tout.

Ruby -rsocket -e 's=TCPServer.new(5**5);loop{_=s.accept;_<<"HTTP/1.0 200 OK\r\n\r\n#{File.read(_.gets.split[1])rescue nil}";_.close}'

Je l'ai trouvé ici

Chris

3
Chris McCauley
python3 -m http.server

ou si vous ne souhaitez pas utiliser le port par défaut 8000

python3 -m http.server 3333

ou si vous souhaitez autoriser uniquement les connexions depuis l'hôte local

python3 -m http.server --bind 127.0.0.1

Voir docs .

1
Boris