有人能给我一个提示吗,如何使用ruby从命令行为当前目录提供服务?如果我能有一些系统范围的配置(例如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相关问答推荐

Regex:仅捕获Ruby中匹配的替代方案

应用 ransack 日期字段过滤器后,相同的输出票证重复而不是一张

如何使用 HEREDOC 作为参数传递给方法?

厨师从源代码安装和更新程序

如何在加载文件时禁用重新定义常量的警告

Simple_form:删除带有标签的内联复选框的外部标签

在ruby中反转数组的顺序

如何从 Ruby 中的线程返回值?

使用 Bundler 时,为什么要关心 RVM 的 Gemset 功能?

ruby中字符的整数值?

带有索引的 Ruby `each_with_object`

Ruby语法

无法从同一网络上的另一台计算机访问本地 Sinatra 服务器

Ruby 中的发送方法

group_by 在 rails by 2 或更多属性

如何通过反射获得活动记录关联

为什么 Ruby 没有真正的 StringBuffer 或 StringIO?

Mustache Templates 可以做模板扩展吗?

类变量上的 attr_accessor

如何在 Ruby 中将时间四舍五入到最接近的 15 分钟?