ใครช่วยให้คำแนะนำวิธีการให้บริการไดเรกทอรีปัจจุบันจากบรรทัดคำสั่งด้วยทับทิม มันจะดีมากถ้าฉันสามารถกำหนดค่าทั้งระบบได้ (เช่นประเภทละครใบ้) และเปิดใช้งานจากทุกไดเร็กทอรี
ใครช่วยให้คำแนะนำวิธีการให้บริการไดเรกทอรีปัจจุบันจากบรรทัดคำสั่งด้วยทับทิม มันจะดีมากถ้าฉันสามารถกำหนดค่าทั้งระบบได้ (เช่นประเภทละครใบ้) และเปิดใช้งานจากทุกไดเร็กทอรี
คำตอบ:
วิธีที่ง่ายที่สุดที่เป็นไปได้ (ขอบคุณ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 มันกำลังเรียกใช้เมธอด httpd จากun
ไลบรารีมาตรฐานทับทิมดังนั้นจึงต้องใช้ un.
ruby -run -e httpd . -p 9090 &
fg
ไม่เคยเห็นอะไรกะทัดรัดเท่า
python3 -m http.server
คุณสามารถเลือกที่จะเพิ่มหมายเลขพอร์ตต่อท้าย:
python3 -m http.server 9000
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 เพิ่มต้องมี 'ทับทิม' ที่ด้านบนก่อน
หลังจากเรียกใช้แล้ว url จะชอบ
http: // localhost: 4567 / file_name
ควรแก้ไขเป็นไฟล์ "./file_name"
http: // localhost: 4567จะไม่ทำงานเนื่องจากไม่ "ทำ" รายการไดเรกทอรี ดูhttps://stackoverflow.com/a/12115019/32453สำหรับวิธีแก้ปัญหาที่นั่น