Ruby 从命令行服务当前目录
有人能给我一个提示,如何使用ruby从命令行服务当前目录吗?如果我能有一些系统范围的配置(例如mime类型),并且只需从每个目录启动它,那就太好了。1行中的Web服务器Ruby 从命令行服务当前目录,ruby,command-line,Ruby,Command Line,有人能给我一个提示,如何使用ruby从命令行服务当前目录吗?如果我能有一些系统范围的配置(例如mime类型),并且只需从每个目录启动它,那就太好了。1行中的Web服务器 这可能是你想要的,也可能不是你想要的,但它太酷了,我不得不分享它 我过去曾用它来服务文件系统。也许你可以修改它,或者只是接受它服务于一切 ruby -rsocket -e 's=TCPServer.new(5**5);loop{_=s.accept;_<<"HTTP/1.0 200 OK\r\n\r\n#{File
这可能是你想要的,也可能不是你想要的,但它太酷了,我不得不分享它 我过去曾用它来服务文件系统。也许你可以修改它,或者只是接受它服务于一切
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}'
ruby-rsocket-e's=TCPServer.new(5**5);loop{{uu=s.accept;u我从未见过像这样紧凑的东西
python3 -m http.server
您可以选择在末尾添加端口号:
python3 -m http.server 9000
请参阅最简单的方法(谢谢):
另一种更复杂的方式:
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
您可以使用sinatra
gem,虽然它不为您列出任何目录,但它提供以下文件:
require 'sinatra' # gem
set :public_folder, '.'
然后将其作为文件运行,如果在1.8中,首先将require'rubygems'添加到顶部
运行它之后,url就像
应解析为“/file\u name”文件
但是,它不起作用,因为它不“做”目录列表。有关解决方法,请参阅。就像今天您可以做的那样:
ruby -run -e httpd . -p 5000
您还可以通过添加-b127.0.0.1
适用于Ruby 1.9.2及更高版本。使用Ruby gem
要在系统上安装,请运行gem install service
要提供目录服务,只需将cd刻录到目录并运行service
默认端口为4000。它还可以服务于ERB、HAML、Slim和SASS等
python3 -m http.server
或者如果您不想使用默认端口8000
python3 -m http.server 3333
或者,如果只允许从本地主机进行连接
python3 -m http.server --bind 127.0.0.1
请参阅。安装sinatra gem$gem安装sinatra,然后将此文本保存到somefile.rb,然后运行它否,我的意思是,sinatra给了我一个错误:sinatra不知道这首小曲。@eveevans不知怎的注意到了你的评论[LOL抱歉],现已更新。如果您在windows上,是否可以将其作为函数添加到cmd或powershell?@Daniel-当我在Mac上运行您的一行程序时。我收到以下错误消息:未初始化常量INT(NameError)。您是否在其他平台上运行它?您知道如何避免此问题吗?但如果我将其写入文件,请说myserver.rb,然后执行此操作“ruby myserver.rb",很好用。@TonyJiang我也在Mac上运行。用Ruby 1.8.7、1.9.3和2.0.0试过了,它们都能用。奇怪。对于demistifyRuby-run-e httpd.-p9090
看。它正在执行Ruby标准库中的httpd方法,因此需要un。@Deviljho如果你在Mac或Linux上运行,只需在e将其发送到后台的命令末尾:ruby-run-e httpd.-p 9090&
如果要将其返回前台,请使用fg
。这里有一个非常紧凑的解决方案列表:)
python3 -m http.server 3333
python3 -m http.server --bind 127.0.0.1