原创作者: hideto
阅读:1982次
评论:0条
更新时间:2011-05-26
Ruby的Rake工具其实是模仿的Make,我们写一个简单的Rakefile看看:
然后我们在Rakefile当前目录运行rake或rake -f Rakefile即可
其中我们定义了一个main task,并且将其设为默认task
我们再看看怎样写结合Rails的Rakefile,Rails在lib/tasks目录里查找并加载所有以.rake作为后缀名的Rakefile,如lib/tasks/load_musicians.rake:
然后我们可以运行rake load_musicians命令来调用load_musicians task
该task的dependency列表中包含:environment,这是用来初始化Rails环境以及建立数据库连接
如果我们自定义的task需要migrate,则我们可以这样写:
则我们运行该task时会先rake db:migrate,而且:migrate已经初始化了Rails环境,我们不用再写:environment了
desc "Rake Test" task :main puts "Hello, Rake!" task :default => :main
然后我们在Rakefile当前目录运行rake或rake -f Rakefile即可
其中我们定义了一个main task,并且将其设为默认task
我们再看看怎样写结合Rails的Rakefile,Rails在lib/tasks目录里查找并加载所有以.rake作为后缀名的Rakefile,如lib/tasks/load_musicians.rake:
desc "Load musicians and the instruments they play into the database." task :load_musicians => ['musicians.csv', :environment] do |t| before_count = Musicians.count File.read(t.prerequisites.first).each do |line| given_name, surname, instrument = line.split(/,/) Musician.create(:given_name => given_name, :surname => surname, :instrument => instrument) end puts "Loaded #{Musicians.count - before_count} musicians." end
然后我们可以运行rake load_musicians命令来调用load_musicians task
该task的dependency列表中包含:environment,这是用来初始化Rails环境以及建立数据库连接
如果我们自定义的task需要migrate,则我们可以这样写:
task :load_musicians => ['musicians.csv', :migrate] do |t|
则我们运行该task时会先rake db:migrate,而且:migrate已经初始化了Rails环境,我们不用再写:environment了
评论 共 0 条 请登录后发表评论