我有一个通过Bamboo建造的RoR项目,但是已经建成了一年多。 所有与项目相关的开发人员都已经开始了,公司也没有多少铁路知识。
我一直试图做一个小改动,但是在资产编译阶段构建失败了:
/usr/bin/env ruby -S rake assets:precompile
/var/bamboo/.rbenv/versions/jruby-1.6.7/bin/jruby /var/bamboo/.rbenv/versions/jruby-1.6.7/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted!
undefined method `each_logical_path' for nil:NilClass
在尝试调试时,我已经使用构建代理并手动运行命令。
如果我以root用户身份运行它,它会成功,如果我以竹子用户身份运行它,它会失败,如上所述。
我进一步挖掘,添加了一些' puts'在这里和那里,找到了一个零对象到达那一点的原因。
有一个assets.rake文件,其中包含以下内容:
env = Rails.application.assets
env 最终会传递给上面的失败代码。
以root身份运行时, env 的类类型为 Sprockets :: Index ,但以普通用户(bamboo)运行时,它为零。
我已经比较了两个用户的环境变量(例如PATH),但是我找不到任何可以归因于此的差异,但我对rails的体验很少,所以我可能错过了一些东西
有人能指出我正确的方向,甚至提供有关如何更好地调试此问题的提示吗?
答案 0 :(得分:0)
我终于解决了这个问题。
最近的更改将生产日志记录位置从/tmp/app.log移至/var/log/app_logs/app.log
似乎RoR构建/资产编译阶段使用生产日志位置,该位置在构建机器上不存在,并且竹子用户也没有写入权限。
最后,我在竹子计划中增加了一个步骤来创建目录&文件并在日志上设置r / w权限。