【问题标题】:Can you make folder with rake build?你可以用 rake build 制作文件夹吗?
【发布时间】:2014-06-27 19:13:37
【问题描述】:

我没有使用 Ruby 或 rake 或其他任何东西的经验,但我使用 slate 编写 API 文档,它使用 Ruby 和 rake 以及其他东西来构建文件。我对这些事情一无所知,但我知道的是:当我执行rake build 时,它会更新一个文件夹(slate/build)。然后我必须在每个rake build 之后手动将slate/build 复制到../app/docs。我能做些什么来自动为我复制每个rake build 上的那个文件夹吗?

【问题讨论】:

    标签: ruby-on-rails ruby rake rakefile


    【解决方案1】:

    添加到您的Rakefile

    ROOT = File.expand_path('..', __FILE__)
    
    task :build_and_move => [:build] do
      cp_r(File.join(ROOT, 'slate/build'), File.join(ROOT, '../app/docs'))
      # or
      # mv(File.join(ROOT, 'slate/build'), File.join(ROOT, '../app/docs'))
    end
    

    然后运行rake build_and_move

    【讨论】:

    • Rake 已经包含FileUtils(实际上是wraps all the commands,但它们都在那里),所以你不需要require,只需调用例如直接cp_r
    • @matt,很酷,谢谢你的信息!我没有意识到这一点。我已经更新了我的答案。
    【解决方案2】:

    您可以为此使用FileUtils

    文档:http://ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-copy

    文档中的示例:

    将 src 复制到 dest。如果 src 是一个目录,这个方法递归地复制它的所有内容。如果 dest 是目录,则将 src 复制到 dest/src。

    FileUtils.cp 'eval.c', 'eval.c.org'
    FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6'
    FileUtils.cp %w(cgi.rb complex.rb date.rb), '/usr/lib/ruby/1.6', :verbose => true
    FileUtils.cp 'symlink', 'dest'   # copy content, "dest" is not a symlink
    

    【讨论】:

      猜你喜欢
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多