`
ZoOL
  • 浏览: 30328 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

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

 

  • lib.zip (162.5 KB)
  • 下载次数: 15
分享到:
评论
3 楼 t0uch 2009-03-11  
这个是很棒的东西,可惜没有C++版本
2 楼 andot 2009-03-10  
该版本更新到 3.0.5 了,增加了异步支持,同步线程安全等特性。
1 楼 andot 2009-03-01  
顶!不过这个包跟官方下载的没区别,直接 gem 最新的就可以了。因为以后肯定还会有更新的。

相关推荐

    java开源包1

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包11

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包2

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包3

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包6

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包5

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包10

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包4

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包8

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包7

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包9

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    java开源包101

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    Java资源包01

    GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet....

    JAVA上百实例源码以及开源项目源代码

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...

Global site tag (gtag.js) - Google Analytics