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

pho*_*ard 3 ruby-on-rails ruby-on-rails-3.2 openshift

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

Fot*_*ios 6

您要检查的第一件事是您的应用程序中是否存在资产.此脚本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)
Run Code Online (Sandbox Code Playgroud)

如果该目录为空,则可能是编译资产时出现问题.你应该注意的输出,当你git push看看是否有任何迹象表明,它失败(您可能需要使用捕获输出tee,如:git push 2>&1 | tee git_push.log).如果目录中有资产,请按照以下步骤检查日志.

如果您仍然遇到问题,可以通过我们的IRC频道来解决,有人应该能够亲自帮助.