设为首页收藏本站
查看: 72|回复: 0

[PHP] Ruby使用eventmachine为HTTP服务器添加文件下载功能介绍

[复制链接]

论坛元老

Rank: 6Rank: 6

积分
34274
主题
17031
UID
1347
M币
67
贡献
17176

  • 发表于 2017-5-14 02:44:00 | 显示全部楼层 |阅读模式
    思路:
    使用ruby eventmachine和em-http-server gem,完成一个简单的提供文件下载功能的HttpServer;
    使用了EM的FileStreamer来异步发送文件,发送文件时先组装了header,然后调用FileStreamer。
    代码:

    require 'rubygems' require 'eventmachine' require 'em-http-server' class HTTPHandler
    PS:关于eventmachine安装错误的问题
    在windows上安装 eventmachine 总是报错:


    Building native extensions. This could take a while... ERROR: Error installing eventmachine: ERROR: Failed to build gem native extension.
    或者另外一种:

    ERROR: Error installing ruby-debug: The 'linecache' native gem requires installed build tools. Please update your PATH to include build tools or download the DevKit from 'http://rubyinstaller.org/downloads' and follow the instructions at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'
    后来经过了漫长的Google,找到了2个solution:
    1.用更低版本的eventmachine

    这个提示一直不断,下面还有一大难错误,都是C的编译错误后来网上找了两个方法
    (1)
    gem install eventmachine-win32
    这个貌似安装的是较低版本的
    (2)gem install

    eventmachine --pre
    这个貌似安装的是 beta 1.0.0的。

    2.升级devkit

    看了一下,上面没有提具体的解决方案,但是给出了问题产生的两个可能原因:
    (1)没有C编译环境
    (2)路径当中有空格
    看看上面的错误日志,发现可能就是编译环境的问题。于是找了一下。
    我的ruby是用one-click installer装的,版本是1.8.6-p398。
    在rubyinstaller的addon页面,找到了DevKit。
    看了一下DevKit的说明:
    //Sometimes you just want RubyGems to build that cool native,
    //C-based extension without squawking.
    //Who's your buddy? DevKit!
    看来这就是我需要的。

    出错的原因是安装eventmachine的时候,需要build tools,但系统中没有。出错信息中同时也给出了解决的法案:
    (1) 到 http://rubyinstaller.org/downloads/ 去下载dev kit – DevKit-tdm-32-4.5.1-20101214-1400-sfx.exe
    (2)按照 http://github.com/oneclick/rubyinstaller/wiki/Development-Kit/ 安装dev kit
    主要安装步骤如下:
    如果原来系统中已经安装了旧版的dev kit, 则删除它
    下载上面提到的dev kit
    解压下载下来的文件到指定的目录,如c:/devkit。(注意:目录不能有空格)
    运行ruby dk.rb,然后按照提示分别运行ruby dk.rb init 和 ruby dk.rb install来增强ruby
    可以运行
    gem install rdiscount –platform=ruby
    来测试是否成功。
    按照安装步骤,完成了DevKit的安装,非常简单。
    然后,再次安装eventmachine:
    gem install eventmachine
    更多Ruby使用eventmachine为HTTP服务器添加文件下载功能介绍相关文章请关注PHP中文网!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    在我站开通SVIP可同时获得17个站点VIP资源 立即登录 立即注册
    快速回复 返回顶部 返回列表