这几天一直在学习使用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
Windows环境下一键安装RubyOnRails开发环境
1)直接点击链接下载:
2)或者进入下载页面,选择要安装的版本:?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服务。点击浏览:3000/就可以看到网站正确地建立了,如图2:
图2:RoR默认网站
从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创建数据表