PHPRPC for rails


我既想用到rails的敏捷开发,又想使用PHPRPC的跨语言、跨平台、跨环境的特性。

既然andot已经实现了PHPRPC for ruby, 那为什么我不能实现PHPRPC for rails?

前途是美好的,过程是坎坷的,最终实现了这个功能。

测试环境 ruby 1.8.6 + rails 2.3

(注:rails的稳定版是2.2,但在2.3里引入了Metal,支持了使用rack的php for ruby的调用方式)

1. 安装ruby

由于是测试,我直接安装了windows的一步安装包
http://rubyforge.org/frs/download.php/29263/ruby186-26.exe
一路next,安装完毕,在命令行输入

 

ruby -v


看到返回
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]
说明安装成功
当然,现在ruby 已经发布了1.91稳定版,也可以安装这个版本,ruby的1.9的运行速度比1.8有了很大的提高。

2.安装rails 2.3版


很简单,在命令行里输入

 

gem install rails –source http://gems.rubyonrails.org


在等待一段时间之后rails就安装完毕了。

在命令行输入

 

rails -v


看到输出

Rails 2.3.0

说明rails安装成功

3.将PHPRPC安装为rails插件


首先,下载PHPRPC for ruby
在命令行里输入

 

gem install phprpc


看到
Successfully installed phprpc-3.0.4
1 gem installed
就说明PHPRPC for ruby已经安装好了,但我们在rails里还没法使用。


我们进入rails目录,在命令行输入

 

ruby script/generate plugin phprpc


rails会在 vendor/plugins/  生成一个phprpc目录,里面有lib,  tasks, test等几个目录和文件。
我们将gem安装目录下phprpc-3.0.4目录里的lib目录覆盖 vendor/plugins/phprpc/lib目录就可以了,或者你直接使用附件里的lib文件进行覆盖。
这样,PHPRPC就成为了rails应用的一个插件。

4.生成Metal


在命令行输入

 

ruby script/generate metal server


rails会在app/metal 目录生成一个server.rb文件
将server.rb替换为下面的代码

# Allow the metal piece to run in isolation
require(File.dirname(__FILE__) + "/../../config/environment") unless defined?(Rails)

class Server
  def self.add(a, b)
    a + b
  end

  def self.sub(a, b)
    a - b
  end

  def self.hello(s)
    "hello: " << s
  end

  def self.call(env)
    if env["PATH_INFO"] =~ /^\/server/
      server = PHPRPC::BaseServer.new()
      server.debug = true
      server.add(["add", "sub", "hello"], self)
      server.call(env)
    else
      [404, {"Content-Type" => "text/html"}, ["Not Found"]]
    end
  end
end




5 启动服务器
命令行输入

ruby script\server



便启动了webrick服务器

输入http://127.0.0.1:3000/server
便能看到熟悉的phprpc_functions="xxxxxx";了
至此PHPRPC for rails应用建立成功


题外话:

http://www.iteye.com/news/4604-rails-metal-huge-performance-improvement

我按这里的代码进行了测试,不愧如标题说的,性能的巨大改进

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值