it-swarm.com.de

Ruby on Rails: Berechtigung verweigert, wenn "Rails Controller willkommen" generiert wird

Ich habe Ruby on Rails auf dem Red Hat-Server verwendet. Beim Versuch, eine Controller-Datei zu generieren, wurde folgende Fehlermeldung angezeigt:

[[email protected] testApp4]$ Rails generate controller welcome
/home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in `initialize': Permission denied @ rb_sysopen - /tmp/spring/fea371aaf9d69cfa58bd12f69b3f1bf6.pid (Errno::EACCES)
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in `open'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in `open'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in `initialize'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:14:in `new'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:14:in `boot'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:43:in `block in boot_server'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:41:in `fork'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:41:in `boot_server'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:24:in `call'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/Rails.rb:23:in `call'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
from /home/ec2-user/.rvm/gems/Ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
from /home/ec2-user/testApp4/bin/spring:16:in `require'
from /home/ec2-user/testApp4/bin/spring:16:in `<top (required)>'
from bin/Rails:3:in `load'
from bin/Rails:3:in `<main>'
19
windrider297

Ich habe dieses Problem durch Laufen gelöst

Sudo chmod -R 1777 /tmp

ich hoffe, das hilft anderen Leuten wie mir, die es vorziehen würden, den Frühlingsedel nicht zu deaktivieren

33
James Woodrow

Es muss der Besitzer sein, um die PID für jeden Serverstart neu zu schreiben. 

Ich musste es mit meinem vollständigen lokalen Pfad und Sudo ausführen

$ Sudo chmod -R 777/Benutzer/MyName/Desktop/projects/mein_projekt/tmp /

8

Ich habe mir die Bibliothek angesehen, die versucht, die PID-Datei lib/spring/env.rb Zu schreiben.

Die betreffende Funktion versucht jedes Mal, ein temporäres Verzeichnis am selben Ort zu erstellen, es sei denn, XDG_RUNTIME_DIR Ist gesetzt:

path = Pathname.new(File.join(ENV['XDG_RUNTIME_DIR'] || Dir.tmpdir, "spring"))

Das Setzen der Variablen auf ein eindeutiges Verzeichnis macht den Trick für mich:

export XDG_RUNTIME_DIR=/tmp/`whoami`
5
Blaskovicz

Fehlende Berechtigung für tmp-Ordner zum Beschreiben. chmod 777 tmp/ ausführen

3
Debadatt

Oder,

export XDG_RUNTIME_DIR=/run/user/${id -u}

um diese Systemvariable zu ändern. id -u gibt Ihre UID (Benutzer-ID) zurück. Dies ist der Verzeichnisname, unter dem Sie unter /run/user/ Schreib-/Lesezugriff haben. 

0
WesternGun