Windows里面写好Sinatra的代码传到Unix上面,
chmod +x之后直接运行脚本报错:
: bad interpreter: No such file or directory
这是由于该文件是以DOS格式编辑的,Unix不认识,我们需要转换一下。
用Vi打开,
:set ff?查看一下是不是Dos的,
set ff=unix转换成Unix,
然后再运行下试试。
Sinatra没找到如何以后台模式启动,可能这不在它要考虑的范围内吧。
把下面这段Webrick的守护进程代码加进去,
最后再加上一句:
Daemon.start就OK了。
ps -ajx看一下:
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
1 15755 15754 15754 ? -1 S 0 0:00 /usr/local/bin/ruby ./server.rb
典型的守护进程:)
class Daemon
def Daemon.start
exit!(0) if fork
Process::setsid
exit!(0) if fork
Dir::chdir("/")
File::umask(0)
STDIN.reopen("/dev/null")
STDOUT.reopen("/dev/null", "w")
STDERR.reopen("/dev/null", "w")
yield if block_given?
end
end
用的时候抄一下就行,哈哈哈哈。
不过要理解守护进程的实现原理,请只会傻写Java代码的同学们看《UNIX环境编程》 :)
================整理下之后==============
#!/usr/local/bin/ruby
require 'rubygems'
require 'sinatra/base'
require 'rack'
require 'open3'
$build_sh = File.join("/home/admin/taiji/src/taiji/src/task","build.rb")
class TaijiBuilderServer < Sinatra::Base
get '/taiji' do
"{stat:'Running'}"
end
get '/taiji/build' do
if (params[:project_name] && params[:svn] && params[:project_id]) != nil then
#另起一个进程处理更新SVN和编译以及部署、启动等操作,不能在Sinatra同进程中进行!
Open3.popen3 %Q{ruby #{$build_sh} #{params[:project_name]} #{params[:svn]} #{params[:project_id]}}
"{stat:'OK',params:'#{Rack::Request.new(env).params.inspect}',ts:'#{Time.now().to_s}',cmd:'ruby #{$build_sh} #{params[:project_name]} #{params[:svn]} #{params[:project_id]}'}"
else
"{stat:'Params Error'}"
end
end
end
class Daemon
def Daemon.start
exit!(0) if fork
Process::setsid
exit!(0) if fork
Dir::chdir("/")
File::umask(0)
STDIN.reopen("/dev/null")
#以下两个日志需要以a(追加)的方式打开日志文件,w将清空原有内容
#输出Sinatra默认输出
STDOUT.reopen("/home/admin/taiji/logs/build_stdout.log", "a+")
#输出Error日志
STDERR.reopen("/home/admin/taiji/logs/build_stdout.log", "a+")
yield if block_given?
end
end
#启动精灵进程的同时启动Sinatra应用
Daemon.start{TaijiBuilderServer.run! :host => '10.2.226.20', :port => 9090}
翻了下以前的代码,发现Sinatra也可以这样使用:
Rack::Handler::Mongrel.run builder, :Port => 9292
这样的话估计会有原生的Mongrel或者Thin等守护进程的实现,
没必要为了实现一个小功能浪费那么多时间去学习了,我成不了专家,也没这打算。
分享到:
- 2009-08-10 10:45
- 浏览 1156
- 评论(0)
- 论坛回复 / 浏览 (0 / 1760)
- 查看更多
相关推荐
ruby sample: @echo off cd D:\proj\demo rem previously drop tables call rake db:migrate VERSION=0 rem load test data (it depends on the db:environment and db:...call ruby script/server webrick @echo on
Rubybin / basic_server.rb Rubybin / controller_server.rb Rubybin / params_server.rb Rubybin / router_server.rb Rubybin / session_server.rb Rubybin / template_server.rb 玩得开心! 如何使用 您...
Webrick rails 外部电脑 访问慢
韦伯里克WEBrick是一个HTTP服务器工具包,可以...安装将此行添加到应用程序的Gemfile中: gem 'webrick' 然后执行: $ bundle或将其自己安装为: $ gem install webrick用法要创建一个新的WEBrick :: HTTPServer,它
如果收到此错误: /jekyll/commands/serve/servlet.rb:3:in 'require': cannot load such file -- webrick (LoadError) :3: /jekyll/commands/serve/servlet.rb:3:in 'require': cannot load such file -- webrick...
阿拉斯·混乱 arras-mayhem服务器的官方客户端。 特征 声音特效! 音乐! 轻巧,独立客户! 更多颜色!...客户端可以作为Node.js Express,PHP,Go HTTP,Ruby ... Ruby Webrick服务器: ruby main.rb C网络服务器
区块链RubyRuby中的一个简单的Blockchain实现。 您可以用不到200行代码来模拟区块链。概念这是基于这篇文章“ 做出的。版本号Ruby 2.5.0跑步安装宝石$ bundle install 跑步$ bundle exec ruby blockchain.rb[2018-01...
每次接收到请求时,它都会派生,将应用程序加载到子进程中,处理请求并退出子进程。 结果是在每个请求上干净,在应用程序范围内重新加载所有源文件和模板。 用法 安装: gem install shotgun 使用机架文件启动...
日志机器人 Logbot 是一个简单的 IRC 记录器,带有基于 Web ...运行foreman start启动网络服务器(WEBrick)和 Logbot 代理 访问 。 如何贡献 只需破解它并向我发送拉取请求;) 资源 有关许多错误修复和增强功能,请参阅
设置git clone此文件cd到应用程序的根ruby app.rb在您的本地主机中运行该应用程序:4567使用的技术语言:Ruby 堆栈:Ruby / Sinatra 服务器:WEBrick 其他依赖关系:在Gemfile.lock中列出前端:JavaScript / jQuery ...
但二进制文件太多,核心代码都没没在大量细节实现中,全部看完不现实,走马观花又很难领会精髓;纸上得来终觉浅,眼过千遍,不如手过一遍,干脆重新造个轮子;于是就有了mini-rails,参照Rails原始码,省略细节,...
RSS Feed应用程序-(Ruby on Rails) 关于 Wix应用程序RSS Feed,演示了如何构建可用于生产环境的应用程序。 使用Ruby on Rails服务器和Wix客户端库从头开始使用Client&Server。 单击此处获取实时示例。 介绍 该...
Ruby WEBrick通过联合国 PHP(5.4+) 节点静态(Node.js:需要节点静态) 默认值为Python 2.x或3.x,具体取决于您的环境。 用法 $ webserver PROGRAM PORT_NUMBER 例子 # Default (Python 2.x or 3.x) using ...
这将在projects文件夹中建立一个新目录,其中包含创建功能性Web应用程序所需的所有文件。示例项目在projects文件夹中有一个简单的示例项目,其中存储了忍者龟及其忍者主人的名字。功能性SQLite3数据库存储包含非常...
用法运行bundle exec camping -s webrick -h YOUR_IP_ADDRESS lib/notepasser.rb以使服务器运行。 让您的朋友编写一个客户端来使用 HTTParty 向您发送消息。 每当您添加对 API 调用的支持时,向该文件的“API 调用”...
运行ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"开始网络服务器。
github_viewer Angular制造。 将其拉下并在本地运行 ruby -rwebrick -e'WEBrick :: HTTPServer.new(:Port => 3000,:DocumentRoot => Dir.pwd).start'
脚手架是rails非常省事的方法,一些简单的增删改查脚手架都能实现,省去了我们不必要的麻烦,那么怎么用rails的脚手架呢,今天来讲解一下。 .指定端口启动rails项目 代码如下:ruby script/server webrick -p 3000 0...
ruby -rwebrick -rwebrick/https -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 9090, :SSLEnable => true, :SSLCertName => [["CN", WEBrick::Utils::getservername]] ).start'
java开发oa系统源码网络安全基地-课程项目二 设置 与其要求 安装在 Kali 上,有注册用户的规则 初始扫描 目标 IP:172.28.128.3。 使用 msf 命令: nmap -v -sV 172.28.128.3 -oA subnet_1 结果 Nmap scan report ...