DM & Merb 快速体验

发觉她们很有趣,今天开始学习并使用。

http://datamapper.org

Why DataMapper?
http://datamapper.org/why.html

一:通过irb快速体验DM

安装
[code]
gem sources -a http://gems.datamapper.org
sudo gem install data_objects do_mysql dm-core dm-more
[/code]

打开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/

安装:
[code]
sudo gem install merb merb-more merb-plugins
[/code]

快速体验
新建一个空项目
[code]
merb-gen app demo
cd demo
[/code]

通过merb-gen generators可以当当前查看所有的generator,自带的有

[quote]
Installed Generators
Rubygems: controller, migration, model, part_controller, resource, resource_controller
[/quote]

看到后台生成的目录结构和rails有很大的相似,继续,修改config/init.rb
[code]
#新增如下的依赖包,0.9 默认是不包含Helper的这些方法,手工加入,下面我们会用到,譬如link_to
dependencies "merb_helpers","merb-assets"
#orm 我们使用datamapper,这个在init.rb中有,去掉注释即可,Merb也可以使用AR
use_orm :datamapper
#去掉rspec的注释
use_test :rspec
[/code]

再执行下
[code]
merb-gen
[/code]

会生成一个database.yml.example
[code]
mv config/database.yml.example config/database.yml
[/code]

修改,我这里使用的是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查看
[code]
mysql_config --socket
[/code]

简单的建立个model,和rails一样也有resource的脚手架
[code]
merb-gen resource user id:integer login:string email:string created_at:date_time
[/code]

会生成mode,controller,views,helper以及rspec的代码。

修改mode/users.rb将id修改为主键


class User
include DataMapper::Resource

property :id, Integer, :serial=>true
#.....
end


和上面的auto_migrate!一样,也有rake相应的建表task
[code]
rake -T | grep 'rake dm'
[/code]
会看到所有的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
[code]
sudo gem install mongrel
[/code]

启动
[code]
merb
[/code]

默认端口为4000,浏览下http://localhost:4000/,增删改查也应该就出来了

和我们在rails中一样,也可以传递不同的参数,譬如
[code]
merb -p 3000 -e production
[/code]

等等,默认启动了mongrel.更多查看
[code]
merb --help
[/code]

安装thin
[code]
sudo gem install thin
[/code]

以thin启动
[code]
merb -a thin
[/code]

启动多个cluster结点

[code]
merb -a thin -c 2
[/code]

停止
[code]
merb -K all
[/code]

TODO:
 RSpec
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值