我很难为 Emacs 设置pinentry来进行身份验证(比如说 github)。使用 GPG 和 pinentry 来签署提交已经可以了。我在 emacs 中使用 magit 进行版本控制,每次我提交一些内容时,迷你缓冲区中都会弹出 pinentry,我输入密码并对提交进行签名。都好。
不过我也使用 GPG 进行身份验证。我使用 GPG设置和身份验证子密钥,并设置 SSH 来使用它。如果我从 tty 执行此操作,它也会起作用。只是不是从 Emacs 内部。该问题与环境变量有关$GPG_TTY。如果我尝试将某些内容推送到 GH,则迷你缓冲区中的 pinentry 不会弹出。相反,它会等待并最终说我没有权限。
我应该提到我使用 emacs,更具体地说是 EXWM 作为我的窗口管理器。如果我退出 emacs,我会在 TTY 中看到 pinentry-encurses 对话框。如果我在 emacs 中打开另一个终端,同时按下它,它将在该终端中打开 pinentry-ncurses 对话框,而不是在迷你缓冲区中弹出 pinentry.el。
几天来我一直在谷歌搜索并尝试不同的方法,但没有运气。
〜/.gnupg/gpg-agent.conf:
allow-emacs-pinentry
allow-loopback-pinentry
default-cache-ttl 600
max-cache-ttl 7200
enable-ssh-support
Run Code Online (Sandbox Code Playgroud)
〜/.gnupg/gpg.conf:
use-agent
Run Code Online (Sandbox Code Playgroud)
〜/ .bash_配置文件:
# GPG related
export SSH_AUTH_SOCK=$(gpgconf --list-dirs agent-ssh-socket)
export GPG_TTY=$(tty)
#gpgconf --launch gpg-agent
Run Code Online (Sandbox Code Playgroud)
我在 emacs 中的 pinentry 配置:
;; Enable loopback so …Run Code Online (Sandbox Code Playgroud) 我在理解 Laravel 如何处理日期和碳时遇到了麻烦。我有一个模型,它有一个名为published_at 的特殊字段(它是da DATE 字段)。当我保存对象的实例时,我希望 Laravel 使用 carbon 转换该字段。
这是我的模型:
<?php
namespace App;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
class Addon extends Model
{
// ...
protected $dates = [
'published_at'
];
// ....
/**
* Set the published_at date format
*
* @param $date
* @return string
*/
public function setPublishedAtAttribute($date)
{
$this->attributes['published_at'] = Carbon::createFromFormat('d/m/Y', $date);
}
// ....
}
Run Code Online (Sandbox Code Playgroud)
因此,据我所知,published_at 字段现在应该使用 d/m/Y 格式保存为碳的实例。但是,它在数据库中保存为 mm-dd-yyyy。
最后,我不在乎它是如何保存到数据库中的,所以这就是为什么我想创建一个getPublishedAtAttribute并以我想要的格式检索它。那也没有用。
我想要的只是 Laravel 将其格式化为 d/m/Y。没有我必须做的事情,比如{{ $addon->published_at->format('d/m/Y') }}每当我展示它时。
顺便说一句:我想同样的事情created_at和updated_at …
我正在使用L5.3.31并具有以下型号:
添加在
图片
关系:
// Addon.php
public function images()
{
return $this->hasMany('App\Image');
}
// Image.php
public function addon()
{
return $this->belongsTo('App\Addon');
}
Run Code Online (Sandbox Code Playgroud)
我现在想要扩展该delete()方法以删除在删除图像对象时保存在文件系统上的一些图像.据我所知,为了做到这一点,我需要delete()在Image模型上扩展该方法.现在,在我的图像模型上,如果我尝试这样做:
public function delete()
{
dd('triggered');
parent::delete();
}
Run Code Online (Sandbox Code Playgroud)
我希望它能够死掉triggered.但没有任何反应,对象就像以前一样被删除了.这告诉我上面的代码块在删除时没有被执行,对吧?
我也在Addon模型上尝试了同样的事情,结果相同.最后,当我这样做时,我想要完成的是这个
$addon->images()->delete();我想laravel删除代表每个图像对象的文件.另外,如果我这样做,$addon->images()->where('id', '=', $id)->delete();我想删除对象旁边的给定id的图像文件.
顺便说一句,我不知道这是否重要,但是我已经将关系设置为在级联上删除,所以如果我这样做$addon->where('id', '=', $id)->delete();也会删除其相关的图像对象.