这几天一直在学习使用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)开发用到的工具软件
1 创建Rails项目
从InstantRails进入Ruby命令行,输入清单1的命令:
图1:打开Ruby命令行
清单1:创建项目gis
- C:\InstantRails-2.0-win\rails_apps>rails -d mysql gis
- cd gis
- ruby script/server
第1行创建项目,第2行切换到项目中,第3行启动gis服务。点击浏览http://127.0.0.1:3000/就可以看到网站正确地建立了,如图2:
图2:RoR默认网站
2 创建数据库
从InstantRails进入Ruby命令行:
清单2:创建项目数据库
- cd gis
- gis>mysql -u root –p
- mysql> create database gis_dev;
- mysql> create database gis_test;
- mysql> create database gis;
- mysql> exit;
- 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
- drop table if exists locations;
- create table locations (
- id int not null auto_increment,
- user_id int not null,
- recv_time timestamp default current_timestamp not null,
- x_long decimal(12,7) null,
- y_lat decimal(12,7) null,
- z_elev decimal(12,3) null,
- velocity decimal(10,0) null,
- accel decimal(10,0) null,
- direction decimal(10,4) null,
- pitch decimal(10,4) null,
- roll decimal(10,4) null,
- battery decimal(3,0) null,
- confidence decimal(3,0) null,
- message varchar(200) null,
- primary key (id)
- );
说明:
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所示:
图3:使用PhpMyAdmin创建数据表