如何在开放式换挡轨道中使用资产

时间:2012-09-05 09:43:10

标签: ruby-on-rails ruby-on-rails-3.2 openshift

我在openshift rails中部署我的代码,但它没有正确地获取资产。 它既不加载javascripts也不加载图像。 如何使它工作?

1 个答案:

答案 0 :(得分:6)

您要检查的第一件事是您的应用程序中是否存在资产。 This scriptbuild.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来解决问题,并且有人应该能够亲自帮助。