Обслуживать текущий каталог из командной строки

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

Ответ 1

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

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

Ответ 2

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

python -m SimpleHTTPServer

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

Ответ 3

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

ruby -run -e httpd . -p 5000

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

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

Ответ 4

require 'webrick'
include WEBrick

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

Ответ 5

Веб-сервер в 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}'

Я нашел здесь

Крис

Ответ 6

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

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

затем запустите это как файл, если в 1.8 добавить сначала "rubygems" вверху.

После запуска его URL-адрес, например

http://localhost:4567/file_name

должен быть разрешен для файла. /file _name.

http://localhost:4567 не будет работать, поскольку он не "делает" списки каталогов. См. fooobar.com/questions/68112/... для обхода пути.

Ответ 7

Используйте ruby ​​gem Serve.

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

Чтобы обслуживать каталог, просто cd в каталог и запустите serve.

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

Ответ 8

python3 -m http.server

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

python3 -m http.server 3333

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

python3 -m http.server --bind 127.0.0.1

Смотрите docs.