2011-09-30 3 views
3

my.db 파일을 db/ 디렉토리에 생성하고 싶습니다. 정규 task 내에 filedirectory 작업을 구성하는 방법에 익숙하지 않습니다. 도움! 다음 코드는 이미 존재하지 않는 한 DB 및 파일을 만듭니다정규 작업 내에서 파일 및 디렉토리 레이크 작업을 어떻게 구성합니까?

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

...

단일 레이크 작업의 명령을하고자하는 경우

이 사용할 수

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 

이 예에서는 "db"및 "db/my.db"라는 태스크를 생성하기 위해 디렉토리 또는 파일을 생성하는 부작용이있는 실제 레이크를 보여줍니다. 초기 혼란 :

+0

이 코드가 corrent, 감사합니다,하지만 나를 혼란하게 유감이 도움이

희망, 우리는 (내 질문대로)'file' 플래그를 필요 왜 발생 파일을 작성하는 것입니다 갈퀴에있는 업무. – coolesting

+0

안녕하세요. 예를 들어 첫 번째 게시물을 갈퀴 특정 사례로 업데이트했습니다. – roboles

+0

하지만 "파일 작업"에 매개 변수를 전달해야하므로 답안의 두 번째 해결 방법에서 코드를 수정해야합니다. – coolesting

관련 문제