http://datamapper.org
Why DataMapper?
http://datamapper.org/why.html
一:通过irb快速体验DM
安装
gem sources -a http://gems.datamapper.org sudo gem install data_objects do_mysql dm-core dm-more
打开irb开始试用DM
require 'rubygems' gem 'dm-core' require 'data_mapper' #我们把日志打到控制台里,方面看 DataMapper::Logger.new(STDOUT, 0) #连接MYSQL DataMapper.setup(:default,'mysql://root:password@localhost:3306/test_dev') #新建model:post class Post #DM 0.9 改变了之前继承DM的类方式,通过mixin DataMapper::Resource 来实现类似于AR:Base中的操作 include DataMapper::Resource #最新的版本中需要指定主键 #serial=>true 表示该建为自动增长 property :id, Integer,:serial=>true #新建其他的几个字段测试下 #更多内容查看这个:http://datamapper.org/docs/properties.html property :title,String property :body,Text property :created_at,DateTime end #建表,auto_migrate! 会先drop现有的表,然后再重新创建 Post.auto_migrate! Post.create :title=>'Post title',:body=>'Body goes here' #这些和AR没有太巨大的差距了
不过她的查询很有趣
exhibitions = Exibition.all(:run_time.gt => 2, :run_time.lt => 5) # => SQL conditions: 'run_time > 1 AND run_time < 5'
更多可以查看这里:
http://datamapper.org/docs/find.html
二:快速体验Merb
http://merbivore.com/
安装:
sudo gem install merb merb-more merb-plugins
快速体验
新建一个空项目
merb-gen app demo cd demo
通过merb-gen generators可以当当前查看所有的generator,自带的有
引用
Installed Generators
Rubygems: controller, migration, model, part_controller, resource, resource_controller
看到后台生成的目录结构和rails有很大的相似,继续,修改config/init.rb
#新增如下的依赖包,0.9 默认是不包含Helper的这些方法,手工加入,下面我们会用到,譬如link_to dependencies "merb_helpers","merb-assets" #orm 我们使用datamapper,这个在init.rb中有,去掉注释即可,Merb也可以使用AR use_orm :datamapper #去掉rspec的注释 use_test :rspec
再执行下
merb-gen
会生成一个database.yml.example
mv config/database.yml.example config/database.yml
修改,我这里使用的是mysql,这个和rails一样,没啥特殊的地方
# This is a sample database file for the DataMapper ORM development: &defaults # These are the settings for repository :default adapter: mysql database: test_dev username: root password: password host: localhost socket: /var/run/mysqld/mysqld.sock
socket的值不知道,可以通过mysql_config查看
mysql_config --socket
简单的建立个model,和rails一样也有resource的脚手架
merb-gen resource user id:integer login:string email:string created_at:date_time
会生成mode,controller,views,helper以及rspec的代码。
修改mode/users.rb将id修改为主键
class User include DataMapper::Resource property :id, Integer, :serial=>true #..... end
和上面的auto_migrate!一样,也有rake相应的建表task
rake -T | grep 'rake dm'
会看到所有的tasks
其中
rake dm:db:automigrate 和上面的一样,先drop再create
rake dm:db:autoupgrade 仅仅添加新增的字段,不会drop表,也不会删除字段
执行
rake dm:db:automigrate
下一步 修改route.rb
Merb::Router.prepare do |r| # RESTful routes #增加 r.resources :users #..... r.default_routes # Change this for your home page to be available at / #修改默认的页面转向users的index r.match('/').to(:controller => 'users', :action =>'index') end
安装mongrel
sudo gem install mongrel
启动
merb
默认端口为4000,浏览下http://localhost:4000/,增删改查也应该就出来了
和我们在rails中一样,也可以传递不同的参数,譬如
merb -p 3000 -e production
等等,默认启动了mongrel.更多查看
merb --help
安装thin
sudo gem install thin
以thin启动
merb -a thin
启动多个cluster结点
merb -a thin -c 2
停止
merb -K all
TODO:
RSpec