2011-09-30 64 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