1

我有一个Ruby on Rails OpenShift应用程序(ruby 1.9,Rails Rails 3.2.13),在开发环境中没有问题。然而,当我将应用程序部署到OpenShift,我得到以下错误:资产没有预编译在RoR Openshift应用程序

ActionView::Template::Error (logo.png isn't precompiled): 
    2: <header> 
    3:  <div id="header" class="clearfix landing_header"> 
    4:  <a href="#" id="logo"> 
    5:   <%= image_tag("logo.png") %> 
    6: 
    7:  </a> 

我的理解是错误说logo.png不预编译。这将使意义,因为这些指令都在我的production.rb环境设置:

config.serve_static_assets = false 
config.assets.compress = true 
config.assets.compile = false 
config.assets.digest = true 

嗯,是我的资产预编译?当我部署我的应用程序(使用git push),我可以等等看:

remote: Precompiling with 'bundle exec rake assets:precompile' 

而且没有错误。即使我使用SSH寻找预编译的资产在OpenShift回购,我可以看到它在那里,再与其他许多人:

> ls public/assets | grep logo 
logo-66589ea9e7a1caa7f2151a721d6cdbd2.png 

当我在浏览器中打开我的应用程序地址/资产/文件^^,我可以看到它。唯一的问题是image_tag没有。

我在做什么错?资产是预编译的,不是吗?我是否错误地使用了image_tag?提前致谢!

+0

听起来像它与这个问题有关:https://github.com/openshift/origin-community-cartridges/issues/8 – user1116573 2014-09-27 11:06:54

回答

0

预先编译本地系统上的资产,然后推送代码。它肯定会工作。

+1

也许它会,但...不是OpenShift应该为我预编译资产?无论如何,预编译的资产文件位于期望的位置,只有Rails应用程序没有这样说。 – 2013-05-08 11:42:58

+0

是的,我也面临这种情况,所以我试过这种方式...它的工作.. – 2013-05-08 12:20:02

+0

那么,但是,那么问题是什么? OpenShift中的错误? – 2013-05-10 06:19:25

0

有点迟到的回答,但我遇到了一些问题,这也是我解决它的方法。当我做了“混帐推”到oepnshift它预编译的资产在控制台

remote: Precompiling with 'bundle exec rake assets:precompile' 

问题见过我相信这是用我的开发设置,而不是生产那些预编译。为了解决这个问题我添加了一个在部署行动挂钩文件中的几行(应用程序 - > .openshift - > action_hooks - 部署)

cd $OPENSHIFT_REPO_DIR 
RAILS_ENV=production bundle exec rake assets:precompile 

这迫使它使用生产配置文件进行预编译。

现在唯一的问题是,当我做一个git push时,它会预编译两次,一次是openshift开箱即用,另一个是动作挂钩。仍然应该工作。