누군가 나에게 힌트를 줄 수 있습니까? 루비로 명령 줄에서 현재 디렉토리를 제공하는 방법? 시스템 전체 구성 (예 : MIME 유형)을 갖고 모든 디렉토리에서 간단히 실행할 수 있다면 좋을 것입니다.
답변:
가능한 가장 간단한 방법 ( Aaron Patterson / 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을 . un
루비 표준 라이브러리 에서 httpd 메소드를 실행 하고 있으므로 un이 필요합니다.
ruby -run -e httpd . -p 9090 &
전경으로 다시 가져 오려면 fg
.
나는 이렇게 컴팩트 한 것을 본 적이 없다.
python3 -m http.server
선택적으로 끝에 포트 번호를 추가 할 수 있습니다.
python3 -m http.server 9000
Aaron Patterson이 오늘 트위터에 올린 대로 다음과 같이 할 수 있습니다.
ruby -run -e httpd . -p 5000
또한 다음을 추가하여 바인딩 주소를 설정할 수 있습니다. -b 127.0.0.1
Ruby 1.9.2 이상에서 작동합니다.
이것은 당신이 원하는 것일 수도 있고 아닐 수도 있지만 너무 멋져서 공유해야했습니다.
나는 과거에 파일 시스템을 제공하기 위해 이것을 사용했습니다. 아마도 당신은 그것을 수정하거나 그것이 모든 것을 제공한다는 것을 받아 들일 수 있습니다.
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
gem을 사용할 수 있지만 디렉토리 목록을 작성하지는 않지만 파일을 제공합니다.
require 'sinatra' # gem
set :public_folder, '.'
그런 다음 1.8에서 먼저 'rubygems'가 필요하면 파일로 실행하십시오.
실행 후 URL은 다음과 같습니다.
http : // localhost : 4567 / file_name
"./file_name"파일로 확인되어야합니다.
그러나 http : // localhost : 4567 은 디렉토리 목록을 "실행"하지 않기 때문에 작동하지 않습니다. 해결 방법 은 https://stackoverflow.com/a/12115019/32453 을 참조 하십시오 .