在尝试创建资产时:为生产网站预编译我第一次遇到此错误。
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)
我期待着有人对这一点有所了解,我一直在绞尽脑汁,谷歌搜索答案数小时。
答案 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"
)