运行bundle exec rake --trace assets:precompile
时,我在AWS弹性beanstalk上收到以下错误:
Command failed with status (1): [/opt/rubies/ruby-2.3.0/bin/ruby /opt/rubie...]
并在堆栈跟踪显示:
Errno::EACCES: Permission denied @ dir_s_mkdir - /var/app/current/tmp/requirejs
我需要更新权限,以便rake任务可以写入此tmp文件夹。我通常只在服务器上运行chmod
或chown
来授予用户访问权限。但是,我关注弹性beanstalk,我不相信它会在新实例和未来部署上工作。修复此问题的方法是什么,以便适用于每个EC2实例上的所有部署?
答案 0 :(得分:2)
我最后使用eb扩展命令修复了(参见解决),该命令创建tmp
文件夹并使其可写:
# <project-root>/.ebextensions/fix_temporary_folder_permissions.yml
commands:
01_set_tmp_permissions:
command: "mkdir /var/app/ondeck/tmp; chmod 600 /var/app/ondeck/tmp"
注意:我不完全确定它在多个实例中是如何工作的,但我想他们都会在部署时执行自己的预编译。
答案 1 :(得分:1)
我已经体验过这一点。
您应该在当前应用文件夹root
上使用/var/app/current
权限运行以下内容:
sudo su
bundle exec rake assets:precompile