存储配置信息并从模块中访问它
问题描述:
我正在编写一个API(/lib
文件夹中的一个模块)。在示例应用程序中,我将使用它来存储用户配置数据,如client_id
。存储配置信息并从模块中访问它
的lib/specific_api.rb
module SpecificApi
#client_id and redirect_uri will be accessed from here
end
控制器/ sessions_controller.rb
class SessionsController < ApplicationController
include SpecificApi
CLIENT_ID = "dlfjksldkjfs"
REDIRECT_URI = "http://127.0.0.1:3000/auth"
end
什么应该被用来存储这样的信息:类,全局变量,或常量?
如何从API(包含在类中的模块)访问这些变量?我无法从模块访问类变量或常量。全局变量的工作,但我不知道如果这是一个很好的方式来存储这样的信息。
答
的Equalizer宝石回答了这个使用此模式:
class SomeClass
include Equalizer.new(:method, ...)
end
你可以达到同样具有:
class SessionsController < ApplicationController
include SpecificApi.new(
client_id: 'dlfjksldkjfs',
redirect_uri: 'http://127.0.0.1:3000/auth')
...
end
的模式是这样的:
class SpecificApi < Module
def initialize(args)
@client_id = args[:client_id]
@redirect_uri = args[:redirect_uri]
end
end
而且然后分机使用#define_method
以及included
回调。
我很抱歉没有在开始时澄清这一点,但我只是希望这些模块方法在SessionsController类中作为私有方法使用,并从模块访问会话,而不将其作为参数传递给方法。 – Marcis