Rails: “权限被拒绝 - /tmp/cache/assets/development/sprockets/...”?

3
当我运行一个 Rails 应用并在浏览器中导航时,我会收到来自 rails 的错误提示:
Permission denied - /path/to/my_rails_app/tmp/cache/assets/development/sprockets/37b5a12047376b10a57191a10d3af30a rails error

我在 ./tmp/ 目录下找不到这样的文件或文件夹,问题出在哪里?

4个回答

7
我也遇到了同样的问题。
报错内容为“apply2files:没有权限”
问题在于您应用程序目录中的“tmp”文件夹对当前用户不可写,即当前用户没有权限向应用程序目录中的“tmp”文件夹写入。
以下是我的解决方法:
以超级用户的身份删除您应用程序目录中的“tmp”文件夹即可。
sudo rm -rf tmp

不要再重新创建tmp目录,这是浪费努力。
只需启动您的应用程序tmp目录将自动再次创建:
rails s

我希望您能受益。

希望这可以帮助到您。


5

创建或者拥有 my_rails_app 目录的用户没有被服务器授权写入权限。

chown -R webserveruser:webserveruser /path/to/my_rails_app

将web服务器用户更改为http、apache或运行您的服务器的任何用户名。冒号右侧的实体是组,如果您需要在不更改用户的情况下进行写访问,请使用可由您的用户编写的组名。

我试图找出哪个用户在使用Phusion Passenger运行我的nginx,所以:ps aux | grep nginx -> rootnobody。我通过sudo /opt/nginx/sbin/nginx运行nginx(使用Phusion Passenger安装,没有init.d脚本)。 - static
3
我这样解决了问题:使用 rm -rf .tmp 删除了 tmp 目录,然后再用 mkdir tmp 重新创建,现在没有错误了。 - static
太棒了 @static,你真的让我的代码优雅起来。在我的系统上完美运行。 - Sreekanth
在我的情况下,我在第一次安装时以root用户身份打开了我的IDE,然后运行Web应用程序导致tmp/中的某些内容被root拥有。将tmp/中的所有内容都归属于自己解决了我的问题。 - Jack

2
这个错误发生的原因是因为我运行了:
ruby bin/rails server 

替代

ruby bin/rails server -e development

0

尝试这个:

rm -rf public/assets rake assets:clean RAILS_ENV=development

chown -R nginx:nginx /www/rblpt/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接