这个问题的出现是因为cells gem使用File.join('app','cells')指定模板目录。这样可以正常运行Rails作为守护进程(scripts / server -d)。守护程序将目录切换到/,使单元格模板路径指向错误的绝对路径。
我的解决方案是将默认路径设置为File.join(RAILS_ROOT,'app','cells')。这适用于Rails,但插件的单元测试失败,因为未定义RAILS_ROOT。使用File.join(File.dirname(__FILE__),'..'
...也有效,但需要大约6个级别的'..',这似乎是错误的。
所以我的问题是在Rails插件中指定'app'下目录路径的正确方法是什么?或者是否有其他错误导致守护进程Rails无法找到相对路径?
答案 0 :(得分:1)
我建议您将更改从插件中移出并转换为初始化程序。在初始化程序中覆盖使用File.join('app','cells')的方法。这有几个好处。
答案 1 :(得分:0)
对于那些在解读这个答案时遇到问题的人来说,这对我有用:
创建文件config / initializers / cells.rb
在其中:
Cell::Base.view_paths=[
File.join(RAILS_ROOT, 'app', 'cells'),
File.join(RAILS_ROOT, 'app', 'cells', 'layouts')
]
希望这有帮助