Ruby on Rails:使用“rails generate controller welcome”时权限被拒绝

我在Red Hat服务器上使用Ruby on Rails。 当我尝试生成控制器文件时,我收到此错误:

[ec2-user@ip-172-31-22-128 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 `' 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 `' from /home/ec2-user/testApp4/bin/spring:16:in `require' from /home/ec2-user/testApp4/bin/spring:16:in `' from bin/rails:3:in `load' from bin/rails:3:in `' 

我通过跑步解决了这个问题

 sudo chmod -R 1777 /tmp 

希望这能帮助像我这样的人更喜欢不需要停用弹簧gem

它需要所有权来为每个服务器启动写入重写pid。

我必须使用我的完整本地路径和sudo来运行它

$ sudo chmod -R 777 / Users / MyName / Desktop / projects / my_project / tmp /

我看了一下试图编写pid文件的lib/spring/env.rb

除非设置了XDG_RUNTIME_DIR否则有问题的函数会尝试每次在同一位置创建一个临时目录:

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

将所述变量设置为唯一目录对我来说很有用:

 export XDG_RUNTIME_DIR=/tmp/`whoami` 

缺少tmp文件夹的可写权限。 运行chmod 777 tmp/

要么,

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

更改此系统变量。 id -u返回您的UID(用户ID),这是您有权访问/run/user/下的写入/读取的目录名称。