一个使用Ruby on Rails开发LBS网站的简单实例

这几天一直在学习使用Ruby on Rails(RoR),想建立一个功能全面一点的LBS(Location Based Service)网站。但是对于我这个RoR的初学者(仅有几天时间)来说,毕竟太复杂了。因此本文试图简化原来的设计思路,抛弃一切权限管理,仅仅对数据表中的坐标位置进行插入和更新。也就是,使用表单提交用户坐标位置信息,地图页面定时刷新获取这些信息并显示在地图上。通过这个例子,来熟悉RoR的编程,熟悉ArcGIS Online Map。掌握Ajax在RoR中的一般用法(RJS)。

关键词:Ruby, RoR, MySQL, LBS, Ajax, RJS, ArcGIS Online Map, Dojo

0 安装RubyOnRails

Windows环境下一键安装RubyOnRails开发环境

1)直接点击链接下载:

http://rubyforge.org/frs/download.php/29867/InstantRails-2.0-win.zip

2)或者进入下载页面,选择要安装的版本:http://rubyforge.org/frs/?group_id=904

3)在Windows下安装InstantRails-2.0-win, 解压到无空格的英文路径下即可,如C:\。然后双击C:\InstantRails-2.0-win\InstantRails.exe文件即可启动InstantRails。

4)因为我总是喜欢使用MySQL,因此要手动把文件C:\InstantRails-2.0-win\mysql\bin\libmySQL.dll复制到目录C:\InstantRails-2.0-win\ruby\bin\。这个应该算InstantRails安装包的一个小缺陷吧。

2)开发用到的工具软件

一个使用Ruby on Rails开发LBS网站的简单实例

1 创建Rails项目

从InstantRails进入Ruby命令行,输入清单1的命令:

一个使用Ruby on Rails开发LBS网站的简单实例

图1:打开Ruby命令行

清单1:创建项目gis

 
  1. C:\InstantRails-2.0-win\rails_apps>rails -d mysql gis  
  2. cd gis  
  3. ruby script/server  
第1行创建项目,第2行切换到项目中,第3行启动gis服务。点击浏览http://127.0.0.1:3000/就可以看到网站正确地建立了,如图2:

一个使用Ruby on Rails开发LBS网站的简单实例

图2:RoR默认网站

2 创建数据库

从InstantRails进入Ruby命令行:

清单2:创建项目数据库

  1. cd gis  
  2. gis>mysql -u root –p  
  3. mysql> create database gis_dev;  
  4. mysql> create database gis_test;  
  5. mysql> create database gis;  
  6. mysql> exit;  
  7. gis>  
提示Enter Password:时,直接回车。编辑\rails_apps\gis\config\database.yml文件,修改数据库名:gis_development=>gis_dev,gis_production=>gis。

3 导入数据表(locations)

从InstantRails->Configure->Database (via PhpMyAdmin),使用以下脚本创建gis_dev中的数据表。

清单3:创建gis_dev数据库表locations

 
  1. drop table if exists locations;  
  2. create table locations (  
  3.   id int not null auto_increment,  
  4.   user_id int not null,  
  5.   recv_time timestamp default current_timestamp not null,  
  6.   x_long decimal(12,7) null,  
  7.   y_lat decimal(12,7) null,  
  8.   z_elev decimal(12,3) null,  
  9.   velocity decimal(10,0) null,  
  10.   accel decimal(10,0) null,  
  11.   direction decimal(10,4) null,  
  12.   pitch decimal(10,4) null,  
  13.   roll decimal(10,4) null,  
  14.   battery decimal(3,0) null,  
  15.   confidence decimal(3,0) null,  
  16.   message varchar(200) null,  
  17.   primary key (id)  
  18. );  
说明:
    user_id:用户id
    recv_time:收到信息的时间,这是个数据库自动填充时间的字段
    x_long:经度deg
    y_lat:纬度deg
    z_elev:高度m
    velocity:速度m/s
    accel:加速度
    direction:方向角度
    pitch:俯仰角度
    roll:倾斜角度
    battery:电池电量0-100
    confidence:信号强度0-100,似乎用signal更好一些
    message:短消息,提供呼叫信息功能
选择数据库gis_dev,在选择SQL标签页,将上面的SQL脚本粘帖到框中,最后按右下角的【执行】按钮。如图3所示:

一个使用Ruby on Rails开发LBS网站的简单实例


图3:使用PhpMyAdmin创建数据表

相关推荐