serve current directory from command line

后端 未结 8 1603
梦如初夏
梦如初夏 2020-12-04 05:15

could someone give me a hint, howto serve the current directory from command line with ruby? it would be great, if i can have some system wide configuration (e.g. mime-types

相关标签:
8条回答
  • 2020-12-04 05:30

    Simplest way possible (thanks Aaron Patterson/n0kada):

    ruby -run -e httpd . -p 9090
    

    Alternate, more complex way:

    ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 9090, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
    

    Even the first command is hard to remember, so I just have this in my .bashrc:

    function serve {
      port="${1:-3000}"
      ruby -run -e httpd . -p $port
    }
    

    It serves the current directory on port 3000 by default, but you can also specify the port:

    ~ $ cd tmp
    ~/tmp $ serve      # ~/tmp served on port 3000
    ~/tmp $ cd ../www
    ~/www $ serve 5000   # ~/www served on port 5000
    
    0 讨论(0)
  • 2020-12-04 05:32

    Web Server in 1 line


    This may or may not be quite what you want but it's so cool that I just had to share it.

    I've used this in the past to serve the file system. Perhaps you could modify it or just accept that it serves everything.

    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}'
    

    I found it here

    Chris

    0 讨论(0)
  • 2020-12-04 05:32
    python3 -m http.server
    

    or if you don't want to use the default port 8000

    python3 -m http.server 3333
    

    or if you want to allow connections from localhost only

    python3 -m http.server --bind 127.0.0.1
    

    See the docs.

    0 讨论(0)
  • 2020-12-04 05:37

    You can use the sinatra gem, though it doesn't do any directory listing for you, it serves files:

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

    then run that as a file, if in 1.8 add require 'rubygems' to the top first.

    After running it then url's like

    http://localhost:4567/file_name

    should resolve to "./file_name" file.

    http://localhost:4567 won't work however, since it doesn't "do" directory listings. See https://stackoverflow.com/a/12115019/32453 for a workaround there.

    0 讨论(0)
  • 2020-12-04 05:39

    Use ruby gem Serve.

    To install on your system, run gem install serve.

    To serve a directory, simply cd to the directory and run serve.

    Default port is 4000. It can also serve things like ERB, HAML, Slim and SASS.

    0 讨论(0)
  • 2020-12-04 05:47

    I've never seen anything as compact as

    python3 -m http.server
    

    You can optionally add a port number to the end:

    python3 -m http.server 9000
    

    See https://docs.python.org/library/http.server.html

    0 讨论(0)
提交回复
热议问题