2013-11-03 20:30:48,342 [INFO] (30173 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] Output from script: /usr/bin/ruby1.9 /usr/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted!
Command failed with status (): [/usr/bin/ruby1.9 /usr/bin/rake assets:prec...]
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
Rake task failed to run, skipping asset compilation.
如何在AWS Elastic Beanstalk上预编译资产?
我收到以下错误
答案 0 :(得分:1)
您可以在应用程序部署之前或之后运行脚本来自定义系统。
基本上,您需要在源代码中创建一个.ebextensions
目录,并以YAML语法插入命令和自定义步骤。
documentation解释了详细信息。
请注意,这些命令是以' root'没有环境变量设置。如果您需要PATH
或其他变量,则由您来定位它们。
以下是我为应用程序编写的示例,该应用程序需要从源代码安装NodeJS模块。
packages:
yum:
gcc: []
gcc-c++: []
container_commands:
10_pre_install_sqlite3:
command: "/opt/elasticbeanstalk/node-install/node-v0.10.21-linux-x64/bin/npm install sqlite3@2.1.16 --build-from-source"
cwd: "/tmp/deployment/application"
env:
HOME: "/root"
PATH: "/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin"
答案 1 :(得分:0)
可以在部署时完成资产的预编译,为此,请转到Rails项目的根目录,并在其中创建一个.ebextensions
文件的.config
目录。您可以在此处指定预编译。我正在使用Elastic Beanstalk运行Rails应用程序,但是字体没有显示出问题。这是我的.ebextensions/ruby.config
文件:
packages:
yum:
git: []
container_commands:
01_assets:
command: RAILS_ENV=production bundle exec rake assets:precompile
leader_only: true