我在openshift rails中部署我的代码,但它没有正确地获取资产。 它既不加载javascripts也不加载图像。 如何使它工作?
答案 0 :(得分:6)
您要检查的第一件事是您的应用程序中是否存在资产。 This script在build.sh
脚本(下面提到)之前运行。它会尝试为您的public/assets
文件夹(here is the reasoning behind this)创建符号链接。即使您有该目录,rake
任务仍然有效;每次推动都会消除资产。
每当您推送到git存储库时,您的资产都应该进行编译。这由Ruby 1.9盒式磁带中的this script处理(这由服务运行,您无法控制它)。正如您所看到的,只要您拥有Gemfile(所有Rails应用都应如此),它将运行bundle exec rake assets:precompile
。
说了这么多,你要做的第一件事就是检查你的.openshift/action_hooks
以确保你没有运行任何可能覆盖你的public/assets
目录的东西。您可以将它们与here进行比较。
接下来应该检查OpenShift主机上的目录。您可以通过SSH连接到您的应用程序(instructions are here)来完成此操作。然后检查您的public/assets
目录。注意:某些输出已缩短为....
。
# First we make sure it is a symlink.
> file $OPENSHIFT_REPO_DIR/public/assets
..../app-root/runtime/repo/public/assets: symbolic link to `..../data//assets'
# Then we see if there is anything in it
> ls $OPENSHIFT_REPO_DIR/public/assets
.... (should have a bunch of.js, .css, etc files)
如果该目录为空,则可能是编译资产时出现问题。您git push
时应注意输出,并查看是否有任何失败的迹象(您可能希望使用tee
捕获输出,如:git push 2>&1 | tee git_push.log
)。如果目录中有资产,请按照these steps检查日志。
如果您仍然遇到问题,可以通过我们IRC channel来解决问题,并且有人应该能够亲自帮助。