`

PHP + Ruby with ActiveRecord 範例

阅读更多
如果老闆要求使用php,可是您卻是Ruby狂熱者,這.. 怎辦呢?
沒關係! 一樣用Ruby寫,php只要做一點點的處理就好!
How to? php中有這個函式:exec
( 本範例實作於Windows XP Professional搭配InstantRails;在其他作業系統上沒有測試過,不過各位還是可以嘗試看看 )
我們來試試看吧!
先寫個test.rb:

  #!/usr/bin/env ruby
  #
  # Filename: test.rb
  #
  puts "Hello"
  puts "world"
 
再寫個test.php:

  <?php
    exec("test.rb", $args);
    foreach($arg as $args)
      echo $arg . "<br />";
  ?>

將兩個檔案放在同一個目錄下後,打開瀏覽器瀏覽test.php;看!是不是顯示結果出來了?
OK,我們直接來用ActiveRecord幫我們新增資料吧!
我們需要一張普通頁面、一張php網頁跟一個ruby檔案:

  #!/usr/bin/env ruby
  #
  # Filename: ar.rb
  #
  require 'rubygems'
  gem 'activerecord'
  ActiveRecord::Base.establish_connection(
    :adapter => 'mysql',
    :host => 'localhost',
    :username => 'root',
    :password => '',
    :database => 'cal'
  )
 
  class Event < ActiveRecord::Base;end
 
  name, descr = ARGV[0], ARGV[1]
  puts Event.new({:name => name, :descr => descr, :date => Date.today, :time => Time.now}).save

好了,接下來是普通頁面,這是送出表單:
 
  <!-- Filename: ar_form.html -->
  <html>
    <head>
      <title>PHP with Ruby and ActiveRecord</title>
    </head>
    <body>
      <form action="ar_save.php" method="POST">
        Username: <input type="text" name="usrname" /><br />
        Description: <textarea name="descr"></textarea><br />
        <input type="submit" value="Save it!" />
      </form>
    </body>
  </html>
 
這是php網頁:

  <?php
    // Filename: ar_save.php
    exec("2.rb " . $_POST["usrname"] . " " . $_POST["descr"], $arg);
    if($arg[0]) echo "Success!";
  ?>

OK,讓我們來試試看吧!
Look!! It works!!
現在,我們來寫個ar_read.rb跟ar_read.php來讀取資料吧:

  # Filename: ar_read.rb
  require 'rubygems'
  gem 'activerecord'
  ActiveRecord::Base.establish_connection(
    :adapter  => "mysql",
    :host     => "localhost",
    :username => "root",
    :password => "",
    :database => "cal"
  )
  class Event < ActiveRecord::Base;end
  events = Event.find(:all, :conditions => "name = '#{ARGV[0]}'")
  events.each{ |event|
    puts event.name
    puts event.descr
    puts event.date.to_s(:db)
    puts event.time.strftime("%H:%M:%S")
  } 

  <?php
    // Filename: ar_read.php
    exec("ar_read.rb " . $_GET["name"], $args);
    $info = array();
    for($i=0, $j=0;$i<count($args);$i+=4, $j++){
      $info[$j]["name"] = $args[$i];
      $info[$j]["descr"] = $args[$i+1];
      $info[$j]["date"] = $args[$i+2];
      $info[$j]["time"] = $args[$i+3];
    }
    for($j=0;$j<count($info);$j++)
      echo "Name => " . $info[$j]["name"] . "<br />Description => " . $info[$j]["descr"] . "<br />Date => " . $info[$j]["date"] . "<br />Time => " . $info[$j]["time"] . "<br />";
  ?>
 
看看結果,hmmm.. 看起來真棒!
嗯?如何?Ruby + ActiveRecord的威力很強大吧?
為什麼不要直接用PHP寫就好? 因為光寫SQL你就想跳樓,何必呢?
記住,在Ruby的檔案中,不可以用:

  puts 1, 2, 3

這種方法,會造成php收不到回傳,因此必須用這種寫法:

  puts 1
  puts 2
  puts 3

或者就是:

  puts 1; puts 2; puts 3

端看個人喜好囉!
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1447561-1";
urchinTracker();
</script>
分享到:
评论

相关推荐

    公司申报管理系统设计,框架:html ++ asp.net + ActiveRecord+CastleFramwork

    框架:html + css + js + asp.net + ActiveRecord+CastleConfigFramwork + sql 前端:html + css + js 后端:asp.net + ActiveRecord + CastleConfigFramwork + sql 开发工具:vs2022 角色介绍: 管理员 admin ...

    科技公司申报管理系统,框架:html + asp.net + ActiveRecord+CastleConfigFramwork

    框架:html + css + js + asp.net + ActiveRecord+CastleConfigFramwork + sql 前端:html + css + js 后端:asp.net + ActiveRecord + CastleConfigFramwork + sql 开发工具:vs2022 角色介绍: 管理员 admin ...

    Ruby-ActiveRecord的BiTemporal数据模型

    在Ruby开发领域,ActiveRecord是Ruby on Rails框架中一个至关重要的组件,它为数据库操作提供了对象关系映射(ORM)功能。在这个特定的上下文中,我们关注的是"Ruby-ActiveRecord的BiTemporal数据模型"。BiTemporal...

    Ruby-ActiveRecord插件允许你隐藏和恢复记录没有真正删除它们

    在Ruby开发中,ORM(对象关系映射)框架如ActiveRecord极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库交互。而`ActsAsParanoid`是针对ActiveRecord的一个插件,它提供了一种非常实用的功能...

    aasm, ruby 类( 普通 ruby,ActiveRecord,Mongoid )的AASM状态机.zip

    aasm, ruby 类( 普通 ruby,ActiveRecord,Mongoid )的AASM状态机 AASM --ruby-状态机 索引从版本升级到 4使用情况回调函数生命周期管理当前事件触发器 。过渡模式每个类的多状态机句柄名称在多个状态机之间冲突。...

    Pro ActiveRecord Databases with Ruby and Rails.pdf

    《Pro ActiveRecord Databases with Ruby and Rails》这本书深入探讨了如何使用ActiveRecord框架来高效地处理Ruby on Rails中的数据库操作。本书由Kevin Marshall、Chad Pytel和Jon Yurek共同撰写,他们都是在Ruby与...

    ActiveRecord(Ruby)--中文

    Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。

    考官分配系统html + jquery + Asp.net MVC +ActiveRecord

    框架 vs2019 + html + css + jquery + C# + mvc + Asp.net MVC + AR(Castal ActiveRecord+CastleConfigFramwork) + sql server 2008 注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的...

    Apress Pro ActiveRecord Databases with Ruby and Rails.pdf

    《Pro ActiveRecord:Databases with Ruby and Rails》这本书深入探讨了如何使用ActiveRecord这一对象关系映射(Object Relational Mapping, ORM)工具来管理和操作数据库,特别是在Ruby on Rails框架中的应用。...

    考官分配系统 html + jquery + Asp.net MVC +AR(Castal ActiveRecord

    框架 vs2019 + html + css + jquery + C# + mvc + Asp.net MVC + AR(Castal ActiveRecord+CastleConfigFramwork) + sql server 2008 注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的...

    Ruby-ActiveRecordTurntable是一个数据库分片的ActiveRecord扩展

    **Ruby-ActiveRecord Turntable:数据库分片的ActiveRecord扩展** 在现代的Web应用程序中,随着数据量的增长,单个数据库可能无法满足高效处理和存储的需求。这时,数据库分片技术应运而生,它将数据分布在多个...

    NHibernate中文教程+activerecord

    Castle ActiveRecord是NHibernate ActiveRecord实现的一个版本,提供了额外的功能和方便性。它是一个AOP(面向切面编程)框架,能够自动管理对象的生命周期,包括事务、验证和持久化。 9. **最佳实践** 在实际...

    clickhouse-activerecord:用于ClickHouse的Ruby数据库ActiveRecord驱动程序

    用于ClickHouse的Ruby数据库ActiveRecord驱动程序。 支撑轨&gt; = 5.2。 从20.9 LTS支持ClickHouse版本。 安装 将此行添加到应用程序的Gemfile中: gem 'clickhouse-activerecord' 然后执行: $ bundle 或将其自己...

    Ruby-Ancestry将ActiveRecord模型组织成一个树状结构

    Ruby-Ancestry是一个非常有用的库,它允许开发者在ActiveRecord模型中构建和管理层次结构,形成树状结构。这个库特别适用于那些需要处理有层级关系数据的场景,比如分类、菜单系统、组织架构等。Ancestry通过提供一...

    ActiveRecord简单实例_activerecord.zip

    在Ruby on Rails框架中,ActiveRecord是一个至关重要的组件,它负责模型(Model)与数据库之间的交互。本实例将深入探讨ActiveRecord的基本用法,帮助理解如何在实际开发中有效地运用这个强大的工具。 首先,让我们...

    基于Java语言的Ruby on Rails ActiveRecord设计理念实现的设计源码

    该项目是采用Java语言实现的Ruby on Rails ActiveRecord设计理念的源码,总计包含46个文件,其中40个为Java源文件,其他包括Git忽略文件、许可证、Markdown文件、XML配置文件、数据库方言和驱动文件等。该设计旨在...

    Ruby-OccamsRecord缺少ActiveRecord的高效查询API

    Ruby是一种动态、面向对象的编程语言,而ActiveRecord是Ruby on Rails框架中的一个核心组件,它是一个对象关系映射(ORM)系统。ActiveRecord提供了一种简洁的方式将数据库操作与Ruby对象模型化,使得开发者可以方便...

    Ruby-SearchCop为ActiveRecord提供类似搜索引擎的全文查询支持

    **Ruby-SearchCop:为ActiveRecord打造的全文搜索引擎** 在Ruby on Rails开发中,ActiveRecord是常用的ORM(对象关系映射)工具,它允许开发者用面向对象的方式操作数据库。然而,标准的ActiveRecord查询并不总是...

    ruby 资源(代码范例)

    5. **数据库交互**:Rails使用ActiveRecord,它是ORM(对象关系映射)的一部分,允许开发者使用Ruby代码操作数据库,而无需编写SQL。 6. **测试**:Rails强调TDD(测试驱动开发),提供了如RSpec和MiniTest等测试...

Global site tag (gtag.js) - Google Analytics