监听gem并监视文件系统更改

时间:2013-01-09 17:01:26

标签: ruby filesystems

我刚刚看到listen gem,它监视文件系统事件(或民意调查),并且可以在文件更改或添加时执行ruby代码。

它看起来非常好,但如果我需要捕获任何更改/添加到目录中的文件,有没有办法让我捕获自脚本最后一次以来更改的任何文件运行

即。有没有办法让Listen使用持久性?

2 个答案:

答案 0 :(得分:0)

如果目录更改事件顺序很重要,那么在脚本停止工作后,您可能无法获得该顺序,因为它已丢失且无法从文件系统中检索。

否则我会利用git repo在上次提交后收集更改,在脚本停止工作之前进行提交。

答案 1 :(得分:0)

尝试使用以下命令控制台来解决问题

typedef struct Node_ Node;

struct Node_ {
    int Item;
    Node* Next;
};

Node* GetNodeAt(Node *dataList, int indx) {
    for (int i = 0; i < indx && dataList != NULL; ++i)
        dataList = dataList->Next;
    return dataList;
}

Node* SubList(Node *dataList, Node *posList) {
    Node* origDataList = dataList;

    Node *currentRetNode = malloc(sizeof(Node));
    Node *prevRetNode = NULL, *returnList = currentRetNode;

    while (posList->Next != NULL) {
        // Find the node in dataList
        Node *node = GetNodeAt(dataList, posList->Item);

        // create/manage the linked list to be returned
        prevRetNode = currentRetNode;
        currentRetNode->Next = malloc(sizeof(Node));
        currentRetNode->Item = node->Item;
        currentRetNode = currentRetNode->Next;

        posList = posList->Next; // move to the next index
    }

    free(currentRetNode);

    if (prevRetNode == NULL)
        returnList = NULL;
    else
        prevRetNode->Next = NULL;

    return returnList;
}