我们有带有触发器之类的无业游民文件
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文件的返回列表
ps,我没有使用Ruby的经验。
答案 0 :(得分:0)
我知道您有带时间戳的文件,但是,如果没有时间戳或区分创建时间的方法,下面的方法就是我用于非带时间戳的文件的方法。
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.