Відповіді:
Найпростіший можливий спосіб (дякую Аарону Паттерсону / 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
ruby -run -e httpd . -p 9090
перегляньте ruby-doc.org/stdlib-2.0.0/libdoc/un/rdoc/index.html . Він виконує метод httpd зі un
стандартної бібліотеки ruby, тому вимагає un.
ruby -run -e httpd . -p 9090 &
Якщо ви хочете повернути його на передній план, використовуйте fg
.
Я ніколи не бачив нічого такого компактного, як
python3 -m http.server
Ви можете за бажанням додати номер порту до кінця:
python3 -m http.server 9000
Як сьогодні Аарон Паттерсон написав у Twitter, ви можете зробити:
ruby -run -e httpd . -p 5000
А також ви можете встановити адресу прив’язки, додавши -b 127.0.0.1
Працює з Ruby 1.9.2 і вище.
require 'webrick'
include WEBrick
s = HTTPServer.new(:Port => 9090, :DocumentRoot => Dir::pwd)
trap("INT"){ s.shutdown }
s.start
Це може бути чи не зовсім те, що ви хочете, але це настільки круто, що мені просто довелося поділитися цим.
Раніше я використовував це для обслуговування файлової системи. Можливо, ви могли б його змінити або просто прийняти, що він обслуговує все.
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}'
я знайшов це тут
Кріс
Ви можете використовувати sinatra
самоцвіт, хоча він не робить для вас жодного списку каталогів, він обслуговує файли:
require 'sinatra' # gem
set :public_folder, '.'
потім запустіть це як файл, якщо в 1.8 додати спочатку потрібно 'rubygems' до початку.
Після запуску тоді URL-адреса подобається
http: // localhost: 4567 / ім'я_файла
має перейти до файлу "./file_name".
http: // localhost: 4567 , однак, не буде працювати, оскільки він не "робить" списки каталогів. Дивіться https://stackoverflow.com/a/12115019/32453, щоб дізнатися, як це зробити.