我一直在这里试图让我的生产服务器上的资产进行预编译(使用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参数必须是目录
这里必须有一些细微的差别,我只是没有看到。任何帮助将不胜感激!
答案 0 :(得分:17)
require_tree 必须才能获得现有文件夹,但 git 不存储空文件夹, 因此,当您在heroku上部署时,这些空文件夹不存在。
一个技巧是将空 .keep 文件添加到您要保留的文件夹中。