Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从命令行服务当前目录_Ruby_Command Line - Fatal编程技术网

Ruby 从命令行服务当前目录

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从命令行服务当前目录吗?如果我能有一些系统范围的配置(例如mime类型),并且只需从每个目录启动它,那就太好了。

1行中的Web服务器
这可能是你想要的,也可能不是你想要的,但它太酷了,我不得不分享它

我过去曾用它来服务文件系统。也许你可以修改它,或者只是接受它服务于一切

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试过了,它们都能用。奇怪。对于demistify
Ruby-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