обслуживать текущий каталог из командной строки - PullRequest
90 голосов
/ 24 июня 2010

Может кто-нибудь дать мне подсказку, как обслуживать текущий каталог из командной строки с помощью ruby? было бы здорово, если бы я мог иметь какую-то общесистемную конфигурацию (например, mime-types) и просто запустить ее из каждого каталога.

Ответы [ 8 ]

195 голосов
/ 18 августа 2011

Самый простой способ (спасибо Аарон Паттерсон / n0kada):

ruby -run -e httpd . -p 9090

Альтернативный, более сложный способ:

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

Даже первую команду трудно запомнить, поэтому у меня просто есть это в моем .bashrc:

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

По умолчанию обслуживает текущий каталог на порту 3000 , но вы также можете указать порт:

~ $ cd tmp
~/tmp $ serve      # ~/tmp served on port 3000
~/tmp $ cd ../www
~/www $ serve 5000   # ~/www served on port 5000
21 голосов
/ 01 июля 2013

Как Аарон Паттерсон написал в Твиттере сегодня вы можете сделать:

ruby -run -e httpd . -p 5000

И вы также можете установить адрес привязки, добавив -b 127.0.0.1

Работает с Ruby 1.9.2 и выше.

21 голосов
/ 24 июня 2010

Я никогда не видел ничего более компактного, чем

python -m SimpleHTTPServer

для Руби, ответ Криса появляется в Google несколько раз.

5 голосов
/ 24 июня 2010
require 'webrick'
include WEBrick

s = HTTPServer.new(:Port => 9090,  :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
4 голосов
/ 20 июня 2014

Используйте ruby ​​gem Служите .

Чтобы установить в своей системе, запустите gem install serve.

Для обслуживания каталога просто перейдите в каталог и перейдите в serve.

Порт по умолчанию 4000. Он также может обслуживать такие вещи, как ERB, HAML, Slim и SASS.

3 голосов
/ 29 октября 2011

Вы можете использовать гем sinatra, хотя он не делает для вас никакого списка каталогов, он обслуживает файлы:

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

затем запустите его как файл, если в 1.8 добавьте require 'rubygems' вверху.

После запуска URL-адрес выглядит как

http://localhost:4567/file_name

должно разрешиться в файл "./file_name".

http://localhost:4567 не будет работать, так как он не "делает" списки каталогов. См. https://stackoverflow.com/a/12115019/32453 для обхода там.

3 голосов
/ 24 июня 2010

Веб-сервер в 1 строку


Это может быть, а может и не совсем то, что вы хотите, но это так здорово, что мне просто пришлось поделиться им.

Я использовал этов прошлом обслуживать файловую систему.Возможно, вы могли бы изменить его или просто принять, что он служит всему.

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}'

Я нашел это здесь

Крис

1 голос
/ 16 октября 2017
python3 -m http.server

или если вы не хотите использовать порт по умолчанию 8000

python3 -m http.server 3333

или если вы хотите разрешить соединения только с локального хоста

python3 -m http.server --bind 127.0.0.1

См. * 1009 документов *.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...