发觉她们很有趣,今天开始学习并使用。
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
分享到:
相关推荐
practical_intro_merb.pdf
crack, 真正简单的JSON和XML解析,从Merb和 Rails 裂纹 真正简单的JSON和XML解析,从Merb和 Rails 。 XML解析器从Merb中提取出来,JSON解析器从 Rails 中剥离。 我没有信用,只是打包供大家使用,方便使用。兼容性...
will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装:##用于Rails 3 +,Sinatra和Merb的Gemfile gem'will_paginate','〜> will_paginate ...
自从Rails框架问世后,Ruby一举成为了一个令不少人赞赏的编程语言。在这篇文章中,来自Merb与Rails核心开发团队的Yehuda Katz向我们分享了十大令人喜爱的Ruby语言特点。
裂缝 从Merb和Rails中复制的真正简单的JSON和XML解析。 从Merb提取XML解析器,从Rails提取JSON解析器。 我不负任何责任,只是将它们包装起来供所有人使用和轻松使用。兼容性Ruby1.8.7 ruby 1.9+(与时间解析相关的3...
与Capistrano一起部署的中型Sinatra(从Merb重写)。 将链接标记在或上的wishlist ,更好地演示。 不隶属于Yahoo! Inc.是“ Delicious”商标的所有者,也不具有Pinboard。 开发人员 bundle createdb delishlist_...
will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装: ## Gemfile for Rails 3+, Sinatra, and Merbgem 'will_paginate' , '~> 3.1.0' 有关...
维基移动 这是 2010 年由维基媒体的优秀人士带给您的移动项目。 该项目的目标是让各种不同语言的各种不同移动设备都能访问维基百科。 基本原则是修改维基百科页面,使其非常适合大量设备。 最初,XHTML/WebKit 手机...
Rails 版本 3,该版本继续保持工具包的快速改进。与以往相同,该软件仍然非常 “固执”,即仍然偏向于约定优于配置。Rails 的核心组件始终存在,即 RESTful 路径、关系、验证、模板和数据库抽象化。不过,这些组件的...
will_paginate - 一个分页库可与Ruby on Rails, Sinatra, Merb, DataMapper和Sequel集成
jQuery是目前最受欢迎的JavaScript/Ajax库之一,能用最少的代码实现最多的功能。...Yehuda Katz 著名Web技术专家,jQuery开发团队的核心成员,Merb等开源项目的贡献者。他还维护着热门网站VisualjQuery.com。
我们使用这些脚本对基于 Ubuntu Linux 的服务器进行快速且可重复的初始设置。 将安装所需的软件包并复制一些示例配置文件(但不会自动启用)。 这是针对 Ubuntu 12.04 LTS 的,其他基于 debian 的系统可能需要进行...
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的...目前,包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。
Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的...目前,包括Rubinius和Merb在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。
git是一个分布式的版本控制系统,最初有linux Tovalds编写,初衷是为了管理linux内核代码的管理,在推出之后,git在其他项目中取得了很大的成功,尤其是在Ruby社区中,目前,包括Rubinius和Merb在内的很多知名项目都...
真正简单的XML解析来自于Crack,而后者则来自于Merb。 创建Nori是为了绕过Crack的过时开发,改进其XML解析器并解决某些问题。 parser = Nori . new parser . parse ( "<tag>This is the contents</tag>" ) # => { ...
旧系统是自定义代码,从 Merb 移植到 Rails,将文章保存在 CouchDB 中。 新的只是带有丑陋皮肤的 Octopress。 如何使用 文章位于source/_posts/ ,它们可以是 HTML 或 Markdown,并且只需要在顶部有一些神奇的 ...
当前支持:Amazon S3,Apache,Delayed :: Job,Merb,Mysql,PostgreSQL,Rack,Rails等。 合并多个文件并解压缩压缩文件,如果您使用logrotate,这将非常方便。 使用几个指标,包括累积请求时间,平均请求时间,...
loops是用于Ruby on Rails,Merb和其他ruby框架的小型轻量级框架,其创建目的是支持应用程序中的简单后台循环,这些后台循环通常用于在服务器(队列工作器,批处理任务处理器等)上进行某些后台数据处理。...