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.
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
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.
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.
require 'webrick'
include WEBrick
s = HTTPServer.new(:Port => 9090, :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
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.
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.
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
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 .