Подтвердить что ты не робот

Ruby on Rails: разрешение отклонено при использовании "rails generate controller welcome"

Я использовал Ruby on Rails на сервере Red Hat. Когда я пытаюсь создать файл контроллера, я получил эту ошибку:

[[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>'
4b9b3361

Ответ 1

Я решил эту проблему, запустив

sudo chmod -R 1777 /tmp

надеюсь, что это поможет другим людям, таким как я, которые предпочли бы не деактивировать драгоценный камень spring

Ответ 2

Для записи перезаписывания pid для запуска каждого сервера требуется право собственности.

Мне пришлось запустить его со своим полным локальным путем и sudo

$sudo chmod -R 777/Пользователи/MyName/Desktop/projects/my_project/tmp/

Ответ 3

Я взглянул на библиотеку, которая пытается записать файл 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`

Ответ 4

Отсутствует разрешение на запись в tmp-папку. запустите chmod 777 tmp/

Ответ 5

Или

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

чтобы изменить эту системную переменную. id -u возвращает ваш UID (идентификатор пользователя), который является именем dir, где у вас есть доступ к записи/чтению в /run/user/.