`
PBFox
  • 浏览: 67965 次
  • 性别: Icon_minigender_1
  • 来自: China
文章分类
社区版块
存档分类
最新评论

rubyonrails 自定义rake任务

阅读更多
在使用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中的数据载入到表中.
分享到:
评论

相关推荐

    SmartAdmin1.8.7.5的RubyOnRails版本

    11. **Rakefile** - 自定义Rake任务的文件。 12. **config.ru** - Rack兼容的应用配置,用于启动Rails服务器。 SmartAdmin在Ruby on Rails中的实现可能包括了预处理过的CSS和JS文件,可能已经配置好了Webpacker或...

    rubyonrails

    通过阅读《rubyonrails.pdf》这份教程,你可以一步步学习如何安装Rails环境,创建第一个应用程序,设置数据库,编写控制器和视图,以及进行测试。随着对Rails的理解加深,你将能够构建出复杂、功能完善的Web应用。

    RubyOnRails教程中文版

    通过阅读"Ruby on Rails 敏捷开发实践.pdf"和运行"RubyOnRails教程中文版.exe",你可以深入了解Rails的各个方面,并逐步掌握这个强大的Web开发框架。不断实践,你将能够利用Rails快速构建高质量的Web应用。

    RubyOnRails做的博客

    在这个"RubyOnRails做的博客"项目中,我们可以看到作者用RoR实现了一个功能齐全的博客系统。下面将详细探讨RoR框架的核心特性以及在构建博客系统时可能涉及的关键知识点。 1. MVC架构:RoR中的MVC模式使得开发者...

    rubyonrails mysql安装详解

    ### Ruby on Rails与MySQL安装详解 #### 环境配置概览 本文将详细介绍如何在Ubuntu 10.10上从源代码编译安装Ruby 1.8.7、Rails 2.3.5以及MySQL 5.1,旨在为开发者提供一个稳定且高效的开发环境。...

    rubyonrails API文档

    rubyonrails API文档 好东东哦 【英文】

    RubyOnRails的一个入门小例子

    标题 "RubyOnRails的一个入门小例子" 暗示了我们将探讨的是关于Ruby on Rails框架的基础知识,这是一个用于构建Web应用程序的开源工具。Ruby on Rails(简称Rails)是基于Ruby编程语言的,它遵循MVC(Model-View-...

    在RubyOnRails中运行长时间的后台任务变得非常简单_Ruby_下载.zip

    标题提到的“在RubyOnRails中运行长时间的后台任务变得非常简单”暗示了我们将探讨如何在RoR中有效地实现这一功能。在这个讨论中,我们将关注使用Grape库、Sidekiq、Resque和Active Job等工具来管理后台任务。 首先...

    rubyonrails的api文档

    Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。Rails的API文档是开发者的重要参考资料,提供了对框架核心组件...

    RubyonRails开源博客Vrails.zip

    Vrails 是 Ruby on Rails 开源博客。方便想搭建自己博客平台的朋友使用,界面简洁美观,部署方便。示例代码:User.create( ...  username: "yourname",  password: "password",  password_confirmation: ...

    rails2.0下实现《rubyonrails》中的mybook实例

    然后,运行`rake db:migrate`命令来执行数据库迁移,创建`books`表。在数据库迁移文件(如`db/migrate/xxxx_create_books.rb`)中,Rails已经为我们自动生成了创建`books`表的SQL语句。 接着,我们可以创建一个控制...

    RubyonRails九日学习计划

    RubyonRails九日学习计划(含相关软件及书籍)时间 内容 目的 第一天 学习oracle 基本工具掌握 plsql ,sql语言,范式,索引,数据库安全,数据备份,导入导出。 熟练掌握SQL语言 第二天 1. ruby 语言历史和...

    薄荷网RubyonRails开发运营实践.pptx

    他们还采取了异步处理策略,如使用Rake任务和消息队列(如Starling和Workling)来处理慢速请求,以避免阻塞系统。 **扩展系统** 随着业务增长,薄荷网需要扩展其基础设施。他们增加了服务器,并通过Nginx的Proxy...

    RubyonRails实践

    创建数据库迁移(migrations)用于数据库结构的修改,然后通过运行`rake db:migrate`来执行这些更改。 **路由(Routes):** Rails的路由系统将URL映射到控制器的特定动作上,定义了应用程序的导航结构。在`config/...

    使用RubyonRails、Devise和Omniauth登录Twitter的教程_Ruby.zip

    使用RubyonRails、Devise和Omniauth登录Twitter的教程_Ruby

    RUBYONRAILS服务器配置[收集].pdf

    - 配置Capistrano,编辑`Capfile`,引入必要的部署任务,如RVM、Bundler、Rails资产和迁移,以及Sidekiq和Puma的部署支持。 - 使用`cap install`命令生成基本的部署脚本,并根据项目需求进行自定义。 5. **生产...

Global site tag (gtag.js) - Google Analytics