如果老闆要求使用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
端看個人喜好囉!
分享到:
相关推荐
框架:html + css + js + asp.net + ActiveRecord+CastleConfigFramwork + sql 前端:html + css + js 后端:asp.net + ActiveRecord + CastleConfigFramwork + sql 开发工具:vs2022 角色介绍: 管理员 admin ...
框架:html + css + js + asp.net + ActiveRecord+CastleConfigFramwork + sql 前端:html + css + js 后端:asp.net + ActiveRecord + CastleConfigFramwork + sql 开发工具:vs2022 角色介绍: 管理员 admin ...
aasm, ruby 类( 普通 ruby,ActiveRecord,Mongoid )的AASM状态机 AASM --ruby-状态机 索引从版本升级到 4使用情况回调函数生命周期管理当前事件触发器 。过渡模式每个类的多状态机句柄名称在多个状态机之间冲突。...
Pro ActiveRecord Databases with Ruby and Rails.pdf
ActiveRecord的BiTemporal数据模型
Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。
框架 vs2019 + html + css + jquery + C# + mvc + Asp.net MVC + AR(Castal ActiveRecord+CastleConfigFramwork) + sql server 2008 注意sql server类和access数据库可以使用vs自带的数据库启动,不需要安装庞大的...
ActsAsParanoid - 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 <br>好书一本
用于ClickHouse的Ruby数据库ActiveRecord驱动程序。 支撑轨> = 5.2。 从20.9 LTS支持ClickHouse版本。 安装 将此行添加到应用程序的Gemfile中: gem 'clickhouse-activerecord' 然后执行: $ bundle 或将其自己...
ORM的中文教程 英文的API 为什么是2分呢? 因为我很2 -_-!
Occam's Record:缺少ActiveRecord的高效查询API。特别适合于大数据集查询。
Ancestry - 将ActiveRecord模型组织成一个树状结构
Ruby on Rails Guides_ A Guide to Active Record Associations.pdf
marginalia - 添加评论至ActiveRecord的SQL查询
ruby-activeRecord-MySQL应用程序,使用Sinatra ruby框架存储有关植物的数据。 尽管应该也支持现代版本,但代码应在2.0.0 ruby版本上工作。 (最多2.4.6)此外,应该具有匈牙利信息的数据库因此应用程序支持...
AASM最初是基于act_as_state_machine插件,但已经演变成一个更通用的库,不再仅针对ActiveRecord模型。 它当前为许多ORM提供适配器,但无论它具有什么父类(如果有),它都可以用于任何Ruby类。 从版本3升级到版本4...
SearchCop - 为ActiveRecord提供类似搜索引擎的全文查询支持
textacular - 利用PostgreSQL让ActiveRecord支持全文搜索