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>'
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
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 /
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`
Fehlende Berechtigung für tmp-Ordner zum Beschreiben. chmod 777 tmp/
ausführen
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.