2016-05-12 8 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_methodincludedコールバックを使用しています。

+0

これを最初に明確にしないと申し訳ありませんが、これらのモジュールメソッドをSessionsControllerクラスのプライベートなものとして使用し、モジュールのセッションにアクセスするには、メソッドの引数として渡さないでください。 – Marcis

関連する問題