我在 openshift rails 中部署了我的代码,但它没有正确获取资产。它既不加载 javascripts 也不加载图像。如何让它发挥作用?
1 回答
您要检查的第一件事是资产是否存在于您的应用程序中。该脚本在脚本之前运行build.sh
(接下来会提到)。它尝试为您的public/assets
文件夹创建符号链接(这是背后的原因)。即使你有那个目录,rake
任务仍然可以工作;每次推动资产都会被抹去。
每当您推送到您的 git 存储库时,您的资产都应该正在编译。这由 Ruby 1.9 插件中的此脚本处理(由服务运行,您无法控制它)。如您所见,bundle exec rake assets:precompile
只要您有 Gemfile,它就会运行(所有 Rails 应用程序都应该如此)。
说了这么多,你应该做的第一件事是检查你的.openshift/action_hooks
,以确保你没有运行任何可能覆盖你的public/assets
目录的东西。您可以将它们与此处的进行比较。
您应该做的下一件事实际上是检查 OpenShift 主机上的目录。您可以通过 SSH 连接到您的应用程序来执行此操作(说明在此处)。然后检查你的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
like:捕获输出git push 2>&1 | tee git_push.log
)。如果目录中有资产,请按照以下步骤检查您的日志。
如果您仍然遇到问题,请访问我们的IRC 频道,应该可以有人亲自提供帮助。