代码之家  ›  专栏  ›  技术社区  ›  Salines

Vagrant:返回上次创建的文件名的Ruby脚本

  •  1
  • Salines  · 技术社区  · 7 年前

    我们有一个类似触发器的流浪者档案

    DB_NAME="mydb"
    TIME=(Time.now.strftime("%Y%m%d%H%M%S"))
    SQL_BACKUPS=(Dir["./config/schema/*_#{DB_NAME}.sql"])
    
    config.trigger.before [:destroy, :provision] do |trigger|
        trigger.info = "Dumping database to /vagrant/config/schema/#{TIME}_#{DB_NAME}.sql"
        trigger.run_remote = {inline: "mysqldump --add-drop-table -u #{DB_USERNAME} -p#{DB_PASSWORD} #{DB_NAME} > /vagrant/config/schema/#{TIME}_#{DB_NAME}.sql"}
    end
    

    在里面 /vagrant/config/schema/ 我们有备份文件,比如: 20181116160919_mydb.sql

    如何在ruby中找到像 *_mydb.sql 和/或返回最新创建的名称?

    我们希望在销毁、供应和维护时自动化数据库备份;向上的

    编辑:

    SQL_BACKUPS=(Dir["./config/schema/*_#{DB_NAME}.sql"]).sort
    SQL_BACKUPS.reverse.each do |filename|
        puts "#{filename}"
    end
    

    返回包含sql文件的列表

    另外,我对Ruby没有经验。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Minato    7 年前

    我知道你有带时间戳的文件,但是,如果你没有时间戳或者没有区分创建时间的方法,下面的方法就是我用于非带时间戳文件的方法。

    File::Stat 他有办法 ctime (返回创建时间),因此可以像这样执行。

    SQL_BACKUPS=Dir["./config/schema/*_#{DB_NAME}.sql"].map { |f| {name: f, ctime: File::Stat.new(f).ctime } }
    sorted = SQL_BACKUPS.sort_by { |f| f[:ctime] }
    sorted.last.name # gives the one that was created the last.
    
    推荐文章