我想要的是能够清理我即使在厨师运行失败时创建的临时文件。所以像这样:
begin
file file_path do
action :create
end
#do something
ensure
file file_path do
action :delete
end
end
但是我似乎无法让这个工作。当我的#do something
代码中断时,它会留下创建的文件。
似乎ensure
在Chef run的Compile阶段进行了评估。因此,如果我将File.delete(file_path)
置于确保块中,它将尝试在文件创建之前删除该文件(当资源(即begin
中的文件创建)执行时,该文件处于Converge阶段/ p>
我知道你也可以创建自己的异常处理程序,但这似乎超出了我的需要。
答案 0 :(得分:0)
如Slack所述,Chef的双通模型不允许使用这种代码。更重要的是,临时文件的概念与配方代码的工作方式不兼容。只是不要删除文件。
答案 1 :(得分:0)
如果这是任何随机文件我不会那么担心清理,但因为它是一个pfx我暂时创建我不希望它在厨师退出后躺在那里。因此,根据松弛,这是我最终使用@coderanger推荐的解决方案。
<?php
session_start(); // Right at the top of your script
include('config.php');
if(!isset($_SESSION['username'])){ //if login in session is not set
header("Location: pageMLC.php");
//$username=$_SESSION['username'];
}
?>
//Specify the query
$query = "SELECT first_name, last_name FROM person p, login l, shift_info si, shift_date sd, id_table id
WHERE l.username = '$username' AND p.person_id=l.person_id;"; //AND si.shift_id=id.shift_id AND p.person_id=id.person_id AND sd.date_id=id.date_id";
//Store the result
$result = mysql_query($query) or die("SQL Error: <b>" . mysql_error() . "</b><br />");
?>
<!-- LANDING ----------------------------------------------
<!---------------------------------------------------------
<!--------------------------------------------------------->
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div id="navbar" class="navbar-collapse collapse">
<a href="pageMLC_Dashboard.php"><img src="Images/logo.png" class="images" ></a>
<a href="pageMLC_Dashboard.php"><button type="button" class="btn">Home</button></a></li>
<a href="https://mobile.fairview.org" target="_blank"><button type="button" class="btn">Intranet</button></a>
<a href="#"><button type="button" class="btn">Settings</button></a>
<a href="#"><button type="button" class="btn">Profile</button></a>
<a href="logout.php"><button type="button" class="btn">Logout</button></a>
</div>
</nav>
<div class="container-fluid" id="myGroup">
<div class="row">
<div class="col-sm-3 col-md-2 sidebar">
<ul class="nav nav-sidebar">
<li class="active"><button type="button" class="btn btn-block" data-toggle="collapse" data-target="#dashboard">Dashboard</button><span class="sr-only">(current)</span></li>
<li class="button"><button type="button" class="btn btn-block" data-toggle="collapse" data-target="#calendar">Calendar</button></li>
<li class="button"><button type="button" class="btn btn-block" data-toggle="collapse" data-target="#updates">Organizational Updates</button></li>
<li class="button"><button type="button" class="btn btn-block" data-toggle="collapse" data-target="#shift">Open Shift Page</button></li>
<li class="button"><button type="button" class="btn btn-block" data-toggle="collapse" data-target="#super">Supervisor Editing Page</button></li>
</ul>
</div>
<div id="dashboard" class="collapse indent">
<div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2 main">
<h1 class="page-header">Overview</h1>
<p> <?php
echo " <h1>Hello ".$_SESSION["username"].",","</h1>";?>Welcome to the overview page! Here we will set up some backend code to remove all the pages and just have toggle-able panels or div classes that you interact with using the buttons in the nav/ sidebars.</p>
<table border="4" cellpadding="3" cellspacing="1">
<tr><th>First Name</th><th></th><th>Last Name</th>
<?php while ($row = mysql_fetch_array($result)) { ?>
<tr><td><?php echo $row["first_name"] ?></td>
<td><?php echo $row["last_name"] ?></td>
</tr>
<?php } ?>
由于Tempfile的自动化,文件在退出时被清除 https://ruby-doc.org/stdlib-2.1.0/libdoc/tempfile/rdoc/Tempfile.html