2016-05-12 56 views
1

我正在編寫一個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 
  1. 什麼應該被用來存儲這樣的信息:類,全局變量,或常量?

  2. 如何從API(包含在類中的模塊)訪問這些變量?我無法從模塊訪問類變量或常量。全局變量的工作,但我不知道如果這是一個很好的方式來存儲這樣的信息。

回答

0

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回調。

+0

我很抱歉沒有在開始時澄清這一點,但我只是希望這些模塊方法在SessionsController類中作爲私有方法使用,並從模塊訪問會話,而不將其作爲參數傳遞給方法。 – Marcis