2011-09-10 30 views
1

我正在通過Shopify_app Gem使用Shopify API的Rails應用程序。爲了長話短說以調用Shopify API,以下代碼必須出現在調用類的控制器中。使用Shopify API構建Rails3應用程序。在哪裏放置會話過濾器?

around_filter :shopify_session, :except => 'welcome' 

    def welcome 
    current_host = "#{request.host}#{':' + request.port.to_s if request.port != 80}" 
    @callback_url = "http://#{current_host}/login/finalize" 
    end 

現在,因爲我在我的應用程序中有多個控制器,所以將上面的代碼放在每個控制器中似乎都不太合適。我試圖從每個控制器中刪除代碼,並將其單獨放置在應用程序控制器中,但這並未奏效。任何指導,爲什麼我可能遇到這些問題將不勝感激。作爲獎勵,如果你能告訴我如何讓我的控制器測試在RSpec中工作,而不用在控制器中註釋掉上面的代碼,我將特別感激。

感謝您的時間

回答

1

這是有道理的,你在每個控制器定義圍繞過濾器你定義它是控制器的方法來將過濾器應用於。應用程序控制器對它下面的類不瞭解,因此將定義放在那裏是沒有意義的。

我建議設置FakeWeb或類似的東西來僞造API使用測試所做的任何外部調用。爲避免shopify_session方法將您重定向到登錄屏幕,請確保在測試設置中將會話[:shopify]設置爲ShopifyAPI::Session的實例。

+0

感謝您的洞察,直接從源頭。 – Bnjmn

相關問題