Может кто-нибудь подскажет мне, как обслуживать текущий каталог из командной строки с 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.