rake assets:预编译未定义的方法目录?为零:NilClass

时间:2011-11-07 19:18:45

标签: ruby-on-rails-3 rake asset-pipeline

在尝试创建资产时:为生产网站预编译我第一次遇到此错误。

 rake assets:precompile undefined method directory? for nil:NilClass

我已成功更新网站并完成了资产:之前多次预编译。

完整的例子:

# RAILS_ENV=production rake assets:precompile --trace                        
/usr/local/rvm/gems/ruby-1.9.2-p290@pm/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV_
** Invoke assets:precompile (first_time)
** Execute assets:precompile
/usr/local/rvm/gems/ruby-1.9.2-p290@pm/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV_
rake aborted!
undefined method `directory?' for nil:NilClass

Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

我期待着有人对这一点有所了解,我一直在绞尽脑汁,谷歌搜索答案数小时。

3 个答案:

答案 0 :(得分:10)

当文件系统找不到它认为应该预编译的资产之一时,会发生这种情况。当我的VM无法在我的共享文件夹中找到其中一个文件时出现这种情况(奇怪的VMware问题,它出现在目录列表中,但文件实际上并不存在)

答案 1 :(得分:10)

我在assets / javascript目录中错误地创建了一个指向不存在文件的符号链接。删除链接修复了问题。请注意,我在assets目录中有其他链接,因此链接通常不是问题。

答案 2 :(得分:1)

就我而言,在Heroku中部署应用程序时遇到了这个问题。 我的一个文件被符号链接到GIT存储库之外的某个地方,所以该文件不存在于'master'中。

然后,我必须删除符号链接(rm .../file),然后复制原始文件(cp file1 .../file),最后将其添加到存储库(git -a -m "Added a forgotten file"