这是我正在研究的Sinatra API项目的粗略结构:
文件auth.rb包含以下结构的代码:
module V1
require './lib/api_helpers'
end
module V1::Auth
def register
do_something #a method defined in api_helpers.rb
end
end
api_helpers.rb的相关部分:
helpers do
def do_something
#lots of blah
end
end
api.rb中的/ register端点调用V1::Auth.register
,该文件被调用而不会引发所需的api_helpers.rb文件的LoadError ,但会抛出{{1调用undefined method
时出错。
我如何在这样的命名空间结构中工作,并能够从层次结构中其他位置的文件访问方法?
使用Ruby 2.3.1
答案 0 :(得分:0)
在这种情况下,方法Auth::user()->articles()->save(new Article($request->all()));
是一个实例方法,所以如果你想像register
那样调用它,你必须将其设置为类方法。
修改强>
您必须将V1::Auth.register
添加到do_something
模块才能直接调用它。
<强> api_helpers.rb 强>
V1::Auth
<强> api.rb 强>
def do_something
puts "I do something"
end