web-dev-qa-db-ja.com

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 `<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

これが、私のような、Spring gemを非アクティブ化する必要のない他の人に役立つことを願っています

34
James Woodrow

サーバーを起動するたびにpidを再書き込みするために所有権が必要です。

完全なローカルパスと須藤で実行する必要がありました

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

8

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 [ユーザーID]を返します。これは、/run/user/の下で書き込み/読み取りにアクセスできるディレクトリ名です。

0
WesternGun