V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
firefox12
V2EX  ›  问与答

ruby 有人会吗? 想 sinatra 写个简单的 server 求帮助

  •  
  •   firefox12 · 2016-10-30 23:54:59 +08:00 · 1867 次点击
    这是一个创建于 2970 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ruby 会的不多,现在有这样一个需求,需要一个 ruby 写的 web server 。这个 server 内部有个线程 在不停的做一些简单的任务。用户可以利用 web server 接口 去查看任务的状态,或者停掉这个任务 启动这个任务。大概是这样
    简单看了下 sinatra 的例子,接口部分很好实现,不知道 如何在 sinatra 启动的时候 驱动一个对象 让它运行一些任务。 如果框架选得不好 可以换别的,对 ruby 做复杂业务实在没经验。
    2 条回复    2016-10-31 08:32:07 +08:00
    owwlo
        1
    owwlo  
       2016-10-31 00:37:10 +08:00
    #!/usr/bin/ruby

    require 'rubygems'
    require 'sinatra/base'
    require 'thread'

    class TestSinatra < Sinatra::Base
    get '/lalala' do
    "#{settings.store.getCnt}"
    end
    end

    class TempStorage
    def initialize
    @cnt = 0
    end

    def tick
    @cnt += 1
    end

    def getCnt()
    return @cnt
    end
    end

    def main
    store = TempStorage.new
    Thread.new { while true; store.tick(); sleep(0.1); end }

    TestSinatra::set( :store, store )
    TestSinatra::run!
    end

    main
    firefox12
        2
    firefox12  
    OP
       2016-10-31 08:32:07 +08:00 via iPad
    恩 我试试看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5272 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:51 · PVG 15:51 · LAX 23:51 · JFK 02:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.