firefox12
V2EX  ›  问与答

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

  •  
  •   firefox12 · Oct 30, 2016 · 2181 views
    This topic created in 3485 days ago, the information mentioned may be changed or developed.
    ruby 会的不多,现在有这样一个需求,需要一个 ruby 写的 web server 。这个 server 内部有个线程 在不停的做一些简单的任务。用户可以利用 web server 接口 去查看任务的状态,或者停掉这个任务 启动这个任务。大概是这样
    简单看了下 sinatra 的例子,接口部分很好实现,不知道 如何在 sinatra 启动的时候 驱动一个对象 让它运行一些任务。 如果框架选得不好 可以换别的,对 ruby 做复杂业务实在没经验。
    2 replies    2016-10-31 08:32:07 +08:00
    owwlo
        1
    owwlo  
       Oct 31, 2016
    #!/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
       Oct 31, 2016 via iPad
    恩 我试试看
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1623 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 16:27 · PVG 00:27 · LAX 09:27 · JFK 12:27
    ♥ Do have faith in what you're doing.