我在 openshift rails 中部署我的代码,但它没有正确获取 Assets 。 它既不加载 javascript 也不加载图像。 如何让它发挥作用?
最佳答案
您首先要检查的是 Assets 是否存在于您的应用程序中。 This script在 build.sh
脚本(接下来提到)之前运行。它会尝试为您的 public/assets
文件夹 (here is the reasoning behind this) 创建符号链接(symbolic link)。即使您拥有该目录,rake
任务仍然有效;每次推送都会删除 Assets 。
每当您推送到您的 git 存储库时,您的 Assets 应该正在编译。这由 this script 负责在 Ruby 1.9 cartridge 中(这是由服务运行的,你无法控制它)。如您所见,只要您有 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
).如果目录中有 Assets ,请按照 these steps 检查您的日志.
如果您仍有问题,请访问我们的 IRC channel并且应该有人能够亲自提供帮助。
关于ruby-on-rails - 如何在开放式换档 rails 中使用 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12278585/