在使用rake的过程中我们感觉到了rake的强大,当然我们也可以自定义一个rake.
1.新建一个工程unit_test
2.执行script/generate model User
Rails 环境不仅创建了模型,还创建了迁移、测试用例和测试 fixture。迁移让 Rails 开发人员可以在整个开发 过程中处理数据库表中不可避免的更改.然后编辑db/migrate/001_create_users.rb.添加需要的列.我的是:
def self.up
create_table :users do |t|
t.column :login, :string
t.column :firstname, :string
t.column :lastname, :string
t.column :password, :string
end
end
def self.down
drop_table :users
end
3.创建数据库
mysql> create database unit_test_development;
mysql> create database unit_test_test;
4.执行rake db:migrate
5.执行script/generate scaffold User user
6.对unit_test进行单元测试 ruby test/unit/user_test.rb如果测试用例通过,会得到 “.
” 字符。如果测试用例产生错误,会看到 E
。如果某个断言不是 true,那么将看到 F
。
但是测试太简单,所以是构建一个真正的测试用例的时候了。请在test/unit/user_test.rb中添加新的测试用例:
def test_new
users=User.find(:all)
User.new do |user|
user.login="aaa"
user.firstname="a"
user.lastname="aa"
user.password="123456"
user.save
end
result=User.find_by_login("aaa")
assert_equal "aa", result.lastname
assert_equal users.size + 1, User.find(:all).size
assert_equal "a", result.firstname
end
重新执行ruby test/unit/user_test.rb.你就会看到想要的测试结果了.
7.现在要制作一个测试 fixture 并为它编写一个测试。请编辑 test/fixtures/user.yml 文件,添加几个记录:
one:
id: 1
login: aa
firstname: a
lastname: aa
password: 123456
two:
id: 2
login: ddd
firstname: d
lastname: ddd
password: 654321
同样,还要把这个测试用例添加到user_test.rb 中:
def test_find
assert_equal "aa",User.find(1).login
assert_equal "ddd",User.find(2).login
end
执行ruby test/unit/user_test.rb
8.下面进入正题.写自己的rake任务
添加 lib/tasks/load_data.rake.
load_data.rake如下:
desc "Load fixtures into development db"
task :load_fixtures_user_data => :environment do
require 'active_record/fixtures'
ActiveRecord::Base.establish_connection(:development)
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, 'test', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
puts 'loading ' + fixture_file
Fixtures.create_fixtures('test/fixtures', File.basename(fixture_file, '.*'))
end
end
desc "Create new user"
task :create_user => :environment do
user=User.new(:login=>"bbb",:firstname=>"b",:lastname=>"bb",:password=>"123456789")
user.save
puts "user create"
puts "login:bbb"
puts "password:123456789"
end
desc "Clear existing data, then load development data so the developers have something to work with"
task :load_data => [:environment,'db:schema:load',:load_fixtures_user_data,:create_user]
这样我们就可以用rake:load_data来创建表并且把.../fixtures/user.yml中的数据载入到表中.
分享到:
相关推荐
11. **Rakefile** - 自定义Rake任务的文件。 12. **config.ru** - Rack兼容的应用配置,用于启动Rails服务器。 SmartAdmin在Ruby on Rails中的实现可能包括了预处理过的CSS和JS文件,可能已经配置好了Webpacker或...
通过阅读《rubyonrails.pdf》这份教程,你可以一步步学习如何安装Rails环境,创建第一个应用程序,设置数据库,编写控制器和视图,以及进行测试。随着对Rails的理解加深,你将能够构建出复杂、功能完善的Web应用。
通过阅读"Ruby on Rails 敏捷开发实践.pdf"和运行"RubyOnRails教程中文版.exe",你可以深入了解Rails的各个方面,并逐步掌握这个强大的Web开发框架。不断实践,你将能够利用Rails快速构建高质量的Web应用。
在这个"RubyOnRails做的博客"项目中,我们可以看到作者用RoR实现了一个功能齐全的博客系统。下面将详细探讨RoR框架的核心特性以及在构建博客系统时可能涉及的关键知识点。 1. MVC架构:RoR中的MVC模式使得开发者...
### Ruby on Rails与MySQL安装详解 #### 环境配置概览 本文将详细介绍如何在Ubuntu 10.10上从源代码编译安装Ruby 1.8.7、Rails 2.3.5以及MySQL 5.1,旨在为开发者提供一个稳定且高效的开发环境。...
rubyonrails API文档 好东东哦 【英文】
标题 "RubyOnRails的一个入门小例子" 暗示了我们将探讨的是关于Ruby on Rails框架的基础知识,这是一个用于构建Web应用程序的开源工具。Ruby on Rails(简称Rails)是基于Ruby编程语言的,它遵循MVC(Model-View-...
标题提到的“在RubyOnRails中运行长时间的后台任务变得非常简单”暗示了我们将探讨如何在RoR中有效地实现这一功能。在这个讨论中,我们将关注使用Grape库、Sidekiq、Resque和Active Job等工具来管理后台任务。 首先...
Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。Rails的API文档是开发者的重要参考资料,提供了对框架核心组件...
Vrails 是 Ruby on Rails 开源博客。方便想搭建自己博客平台的朋友使用,界面简洁美观,部署方便。示例代码:User.create( ... username: "yourname", password: "password", password_confirmation: ...
然后,运行`rake db:migrate`命令来执行数据库迁移,创建`books`表。在数据库迁移文件(如`db/migrate/xxxx_create_books.rb`)中,Rails已经为我们自动生成了创建`books`表的SQL语句。 接着,我们可以创建一个控制...
RubyonRails九日学习计划(含相关软件及书籍)时间 内容 目的 第一天 学习oracle 基本工具掌握 plsql ,sql语言,范式,索引,数据库安全,数据备份,导入导出。 熟练掌握SQL语言 第二天 1. ruby 语言历史和...
他们还采取了异步处理策略,如使用Rake任务和消息队列(如Starling和Workling)来处理慢速请求,以避免阻塞系统。 **扩展系统** 随着业务增长,薄荷网需要扩展其基础设施。他们增加了服务器,并通过Nginx的Proxy...
创建数据库迁移(migrations)用于数据库结构的修改,然后通过运行`rake db:migrate`来执行这些更改。 **路由(Routes):** Rails的路由系统将URL映射到控制器的特定动作上,定义了应用程序的导航结构。在`config/...
使用RubyonRails、Devise和Omniauth登录Twitter的教程_Ruby
- 配置Capistrano,编辑`Capfile`,引入必要的部署任务,如RVM、Bundler、Rails资产和迁移,以及Sidekiq和Puma的部署支持。 - 使用`cap install`命令生成基本的部署脚本,并根据项目需求进行自定义。 5. **生产...