如何在常规任务中构建文件和目录Rake任务?

coo*_*ing 3 ruby rake

我想my.dbdb/目录中生成该文件.我不熟悉如何在常规中构建filedirectory完成任务task.救命!

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
Run Code Online (Sandbox Code Playgroud)

rob*_*les 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
Run Code Online (Sandbox Code Playgroud)

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

# Rakefile
directory "db"

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

task :create => "db/my.db" do 
end
Run Code Online (Sandbox Code Playgroud)

在这个例子中,你真正告诉rake创建名为"db"和"db/my.db"的任务,它们具有创建目录或文件的副作用.

希望这会有所帮助,对不起最初的困惑:)