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

eve*_*ets 28 ruby-on-rails production-environment ruby-on-rails-3 sprockets asset-pipeline

我一直在这里试图让资产在我的生产服务器上进行预编译(使用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
Run Code Online (Sandbox Code Playgroud)

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

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

# = require ./app
# = require_tree ./models
# = require_directory ./views <- or using require_directory, either would work fine.
Run Code Online (Sandbox Code Playgroud)

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

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

require_tree参数必须是目录

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

Kei*_*cht 85

我遇到了你所描述的完全相同的问题.我的生产服务器是Heroku(雪松堆栈).在我的情况下,问题是我的一个:

require_tree ./mobile
Run Code Online (Sandbox Code Playgroud)

指向合法目录,但此目录没有文件.在dev上它并不重要但是关于生产设置的一些事情导致了错误,"require_tree参数必须是一个目录".

希望这会有所帮助.

  • 这是git而不是ruby或rails的问题.如果没有文件,Git不会创建目录.检查你的回购,我打赌那里没有空的dirs. (11认同)

qup*_*qup 17

require_tree 必须被赋予一个现有文件夹,但git 存储空文件夹,因此当你在heroku上部署时,那些空文件夹不存在.

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