0

出现这个问题是因为单元格 gem 使用 File.join('app','cells') 指定模板目录。在您将 Rails 作为守护程序运行(脚本/服务器 -d)之前,它可以正常工作。守护程序将目录切换到 / ,这使单元格模板路径指向错误的绝对路径。

我的解决方案是将默认路径设置为 File.join(RAILS_ROOT, 'app', 'cells')。这在 Rails 中有效,但插件的单元测试失败,因为 RAILS_ROOT 未定义。使用File.join(File.dirname(__FILE__),'..'... 也可以,但需要大约 6 个级别的“..”,这似乎是错误的。

所以我的问题是在 Rails 插件中指定“app”下目录路径的正确方法是什么?还是有其他错误会导致守护程序 Rails 无法找到相对路径?

4

2 回答 2

1

我建议将您的更改从插件中移出并放入初始化程序中。在初始化程序中覆盖使用 File.join('app','cells') 的方法。这有几个好处。

  1. 您没有直接修改第三方代码,因此您更有可能不必担心在升级时重新应用更改。
  2. 通过不修改插件本身,插件单元测试仍然可以通过。
  3. 您可以使用我认为正确的解决方案 RAILS_ROOT。
于 2010-03-19T04:38:04.357 回答
0

对于那些难以理解这个答案的人来说,这对我有用:

创建文件 config/initializers/cells.rb

在里面放:

Cell::Base.view_paths=[
  File.join(RAILS_ROOT, 'app', 'cells'),
  File.join(RAILS_ROOT, 'app', 'cells', 'layouts')
]

希望这可以帮助

于 2010-11-04T04:36:52.707 回答