-1

J'essaie de configurer un verrou sur rufus-scheduler pour empêcher mes tâches planifiées de s'exécuter plusieurs fois. Quand je déploie cette production, je reçois l'erreur suivante:Autorisation de Rufus-Scheduler refusée lors de la définition de rufus-scheduler.lock

nginx_error.log — Message from application: Permission denied @ rb_sysopen - .rufus-scheduler.lock (Errno::EACCES)

Je suis en Ubuntu 16.04.2 et Rails 4.2 sur l'océan numérique. Cela fonctionne bien sans le verrou, mais toutes les tâches planifiées sont exécutées deux fois. Voici le code avec le verrou ajouté qui déclenche le problème d'autorisation:

SCHEDULER = Rufus::Scheduler.new(:lockfile => ".rufus-scheduler.lock") 

Cet environnement a été configuré automatiquement à l'aide de Cloud66.

Répondre

0

Le message d'erreur vous indique que l'utilisateur sous lequel votre interpréteur Ruby est en cours d'exécution n'a pas le droit d'écrire {current_directory}/.rufus-scheduler.lock

solution un

Vous pouvez vous assurer que votre processus utilisateur peut écrire dans le répertoire courant.

solution b

Vous pouvez pointer vers le répertoire où tout utilisateur peut écrire.

SCHEDULER = Rufus::Scheduler.new(lockfile: "/tmp/.rufus-scheduler.lock") 

solution c

Utilisez quelque chose d'autre que Cloud66, il semble que l'utilisateur qu'ils donnent vous ne pouvez pas écrire.

+0

J'ai essayé la solution b, mais il a conduit au même problème: nginx_error.log - Message de l'application: Permission refusée @ rb_sysopen - /tmp/.rufus-scheduler.lock (Errno :: EACCES) –

+0

Ensuite, vous devez donnez plus de droits à votre utilisateur, ou lancez votre processus Ruby avec un utilisateur qui a plus de droits. Vous devriez mettre à jour la question et indiquer comment vous avez installé (quel Digital Ocean guide vous avez suivi), sinon il sera difficile de vous aider – jmettraux