当前位置:首页 > 网站旧栏目 > 学习园地 > 设计软件教程 > 每天一剂Rails良药之Creating Your Own Rake Tasks

每天一剂Rails良药之Creating Your Own Rake Tasks
2010-01-14 07:12:08  作者:  来源:
Ruby的Rake工具其实是模仿的Make,我们写一个简单的Rakefile看看:
Java代码 复制代码
  1. desc "Rake Test"  
  2. task :main   
  3.   puts "Hello, Rake!"  
  4.      
  5. task :default => :main  

然后我们在Rakefile当前目录运行rakerake -f Rakefile即可
其中我们定义了一个main task,并且将其设为默认task
我们再看看怎样写结合Rails的Rakefile,Rails在lib/tasks目录里查找并加载所有以.rake作为后缀名的Rakefile,如lib/tasks/load_musicians.rake:
Java代码 复制代码
  1. desc "Load musicians and the instruments they play into the database."  
  2. task :load_musicians => ['musicians.csv', :environment] do |t|   
  3.   before_count = Musicians.count   
  4.   File.read(t.prerequisites.first).each do |line|   
  5.     given_name, surname, instrument = line.split(/,/)   
  6.     Musician.create(:given_name => given_name,   
  7.                     :surname => surname,   
  8.                     :instrument => instrument)   
  9.   end   
  10.   puts "Loaded #{Musicians.count - before_count} musicians."  
  11. end  

然后我们可以运行rake load_musicians命令来调用load_musicians task
该task的dependency列表中包含:environment,这是用来初始化Rails环境以及建立数据库连接
如果我们自定义的task需要migrate,则我们可以这样写:
Java代码 复制代码
  1. task :load_musicians => ['musicians.csv', :migrate] do |t|  

则我们运行该task时会先rake db:migrate,而且:migrate已经初始化了Rails环境,我们不用再写:environment了

安徽新华电脑学校专业职业规划师为你提供更多帮助【在线咨询