“require_tree参数必须是目录”rails 3.1.1预编译资产

时间:2011-11-17 17:57:34

标签: ruby-on-rails ruby-on-rails-3 production-environment asset-pipeline sprockets

我一直在这里试图让我的生产服务器上的资产进行预编译(使用ruby 1.9.2和Rails 3.1.1进行简单的ubuntu安装,并使用新的链轮2.10尝试3.1.2RC以及)。

“require_tree参数必须是目录”。我已经在堆栈上看到了与此相关的其他问题,但情况并不完全相同,并且所提议的解决方案都没有帮助 - 比如在子文件夹中创建存根文件,然后仅在该点相对引用。没运气。

最重要的是,当然,这在所有开发机器上都是完美的(mac具有相同的配置,甚至可以匹配宝石的宝石),在生产环境中。

这是我的/app/assets/javascript/application.js:

//= require ../../views/app/manifest
//= require_self

不多。基本上只是指向应用区域的真实清单文件(是的,不完全是盒装香草Rails但是......)

以下是我的观点/ admin(/views/app/manifest.coffee.js)中的存根清单:

# = require ./app
# = require_tree ./models
# = require_directory ./views <- or using require_directory, either would work fine.

就像我说的那样,在开发环境中,没有任何问题。资产管道即时编译,一切都很好。运行,rake资产:在dev机器上预编译,也没有问题。

我把它发送到生产机器并运行完全相同的代码,然后我得到:

  

require_tree参数必须是目录

这里必须有一些细微的差别,我只是没有看到。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:17)

require_tree 必须才能获得现有文件夹,但 git 存储空文件夹, 因此,当您在heroku上部署时,这些空文件夹不存在。

一个技巧是将空 .keep 文件添加到您要保留的文件夹中。