it-swarm.com.ru

Ruby в Rails: в доступе отказано при использовании «Rails генерирует приветствие контроллера»

Я использовал Ruby на 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>'
19
windrider297

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

Sudo chmod -R 1777 /tmp

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

33
James Woodrow

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

Я должен был запустить его с моим полным локальным путем и судо

$ Sudo chmod -R 777/Пользователи/MyName/Рабочий стол/projects/my_project/tmp /

8
Christopher Knight

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

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

3
Debadatt

Или же,

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

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

0
WesternGun