论坛首页 编程语言技术论坛

PHPRPC for rails

浏览 2573 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-01   最后修改:2009-03-01


我既想用到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

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

 

  • lib.zip (162.5 KB)
  • 下载次数: 15
   发表时间:2009-03-01  
顶!不过这个包跟官方下载的没区别,直接 gem 最新的就可以了。因为以后肯定还会有更新的。
0 请登录后投票
   发表时间:2009-03-10   最后修改:2009-03-10
该版本更新到 3.0.5 了,增加了异步支持,同步线程安全等特性。
0 请登录后投票
   发表时间:2009-03-11  
这个是很棒的东西,可惜没有C++版本
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics