2011-09-30 62 views
3

我想在db/目录中生成文件my.db。我不熟悉如何在常规task内构建filedirectory任务。帮帮我!如何在常规任务中构建文件和目录Rake任务?

task :create, [:name, :type] do |t, args| 
    args.with_defaults(:name => "mydb", :type => "mysql") 
    directory "db" 
    file "db/my.db" => "db" do 
    sh "echo 'Hello db' > db/my.db" 
    end 
    puts "Create a '#{args.type}' database called '#{args.name}'" 
end 

回答

13

下面的代码将创建除非已经存在的数据库和文件...

如果你想有一个rake任务的命令,你可以使用这个

Dir.mkdir("db") unless Dir.exists?("db") 
unless File.exists?("db/my.db") 
    File.open("db/my.db", 'w') do |f| 
    f.write("Hello db") 
    end 
end 

如果你想使用耙子提供的文件任务,你需要这样做...

# Rakefile 
directory "db" 

file "db/my.db" => 'db' do 
    sh "echo 'Hello db' > db/my.db" 
end 

task :create => "db/my.db" do 
end 

在这个例子中,你实际上告诉rake创建名为“db”和“db/my.db”的任务,这些任务有创建目录或文件的副作用。

希望这有助于,比较遗憾的是最初的混乱:)

+0

谢谢你,你的代码是corrent,但让我困惑的是,为什么我们需要'file'标志(如我的问题)来构建生成文件任务在耙中。 – coolesting

+0

嗨,我已经用耙子特定示例更新了最初的帖子。 – roboles

+0

但是我们需要将参数传递给我们的“文件任务”,我们应该如何修复答案的第二个解决方案中的代码。 – coolesting