原先的一个最小的物联网系统设计方案及源码,我觉得我似乎把代码写成了,用于解释原理似乎不够简化,于是就开始寻找下一个可以替换的框架。Ruby On Rails算一个,但是考虑到不同的语言之间可能会有不同的人群。以及之前用python下的Django做了一个的RESTful服务,于是就拉到一个新的有趣的东西,即Ruby。好吧,我觉得我还不算会,但是试着写写呗。最终的上的就是用Sinatra构建一个简单的版本来替换掉现有的Laravel,需要注意的是Laravel的代码虽然看上去比较多,但是效率不会比Sinatra差。
这部分就比较简单了,参考官方的文档
gem install sinatra
require 'sinatra' get '/hi' do "Hello World!" end
ruby hi.rb
http://127.0.0.1:4567
就完成简单版的hello,world了。(转载保留 Phodal's Blog Phodal's zenthink)
source :rubygems gem 'sinatra' gem 'data_mapper' gem 'dm-mysql-adapter'
安装上面的这些东西,一开始的时候试着用active_record,不过似乎不是很理想,或者说用sinatra+data_mapper的会比较多,大家都喜欢轻量级的。
添加下面代码至app.rb
require 'data_mapper' DataMapper.setup(:default,"mysql://root:940217@localhost/iot")
这个的意思也就是连接到mysql数据库,用户名root,密码940217,数据库名iot
然后我们先定义一下Athome
class Athomes include DataMapper::Resource property :id, Serial property :sensors1, Float property :sensors2, Float property :temperature,Float property :led1, Boolean end以便于将它转换为json
于是我们还需要
get '/',:provides=>:json do athomes=Athomes.all athomes.to_json end
运行app.rb
ruby app.rb那么我们就会得到下面的结果
[{"id":1,"sensors1":22.2,"sensors2":7.5,"temperature":19.8,"led1":false},{"id":2,"sensors1":22.0,"sensors2":7.6,"temperature":18.8,"led1":false}]相对的比Laravel框架下的程序简单,只是不够MVC
最终app.rb的代码
require 'rubygems' require 'sinatra' require 'data_mapper' DataMapper.setup(:default,"mysql://root:@localhost/iot") class Athomes include DataMapper::Resource property :id, Serial property :sensors1, Float property :sensors2, Float property :temperature,Float property :led1, Boolean end get '/',:provides=>:json do athomes=Athomes.all athomes.to_json end
这部分代码看上去虽然比Laravel简单,但是似乎在运行的时候我们也需要考虑一下。在后面的时间里,加入其他东西后,我们再看看这个框架是否很强大,能替换原来的Laravel框架。