【发布时间】:2023-03-22 18:00:02
【问题描述】:
我正在组织我的代码,到目前为止,我已经成功地将controllers/helpers/views 分组到文件夹“admin”中,但我曾经有一个与我的模块名称“admin”相同的库我不能再打电话了。 (名称冲突?)
新结构:
Directory Structure
-> app
-> controllers
-> admin #new
-> admin_main
-> admin_permissions
-> Helpers
-> admin #new
-> admin_main_helper
-> admin_permissions_helper
-> lib
-> admin
-> pagerduty.rb
我以前可以像这样从我的助手调用我的库:
module Admin::AdminMainHelper #admin:: is new
require "./lib/admin/pagerduty.rb"
def pager_duty
pagerduty = Admin::PagerDuty.new() #throws error after the new structure
@on_call = pagerduty.first_on_call()
@counts = pagerduty.open_incidents()
end
end
错误是"uninitialized constant Admin::PagerDuty"
我是否必须将我的库重命名为其他名称?还是有办法解决这个问题?
编辑: 例如,如果我将库模块重命名为“AdminLib”而不是“Admin”,它会起作用。所以问题是是否有办法解决这个问题。
【问题讨论】:
-
你试过
::PagerDuty.new()而不是Admin::PagerDuty.new()吗?仅PagerDuty.new()怎么样? -
我得到“未初始化的常量 PagerDuty”
-
也许我只需要重命名它......对吧?
-
不,我不这么认为,一定有办法让它发挥作用。如果没有,那将是一件坏事,你不能在 Helper & Lib 中拥有相同的结构并将它们组合起来......
标签: ruby-on-rails