0

我在設置Rails :: Engine中的stripe時遇到了問題,這是一個雙重問題,因爲第二個問題涉及加載envs,這很有趣,但將達到這一點。Congifure Stripe在Rails引擎中使用.env

這裏的目標是從一個大的Rails應用程序中打破訂閱過程。

更新 所以當我打字這一切,我真的得到它的工作。在下面發佈答案。隨意評論,並提供了一個更好的方式來做到這一點。

1日問題條紋CONFIG

問題如何設置條紋在軌引擎。獨立於父引擎或Rails應用程序。我已經嘗試了幾件事情。

第二個問題裝載ENVS運行但在規格正在加載的虛擬應用程序的本地服務器時

.envs沒有被加載。

+0

你能解釋一下投票嗎? – ChrisCPO

回答

1

條紋配置

#/:engine_name/engine.rb 
require "dotenv-rails" 

module :engine_name 
    class Engine < ::Rails::Engine 
    isolate_namespace :engine_name 

    config.generators do |g| 
     g.test_framework :rspec, fixture: false 
     g.fixture_replacement :factory_girl, dir: 'spec/factories' 
    end 

    #load envs 
    Dotenv::Railtie.load 

    initializer "config.stripe" do |app| 
     config.stripe = { 
     :publishable_key => ENV['STRIPE_PUBLISHABLE_KEY'], 
     :secret_key  => ENV['STRIPE_SECRET_KEY'] 
     } 

     Stripe.api_key = ENV['STRIPE_SECRET_KEY'] 
    end 
    end 
end 

加載.ENV

所以塊被傳遞父Rails應用程序的初始值設定 「config.stripe」 的上方。當在本地運行虛擬應用程序或者在測試中引擎是虛擬應用程序時。這導致虛擬應用程序成爲根位置。令人困惑的部分是用於測試.env在引擎根路徑中也被加載,但不會爲引擎加載。

所以你的.env必須放在虛擬應用程序根目錄下。雖然由引擎加載而不是Rails :: app。雖然引擎將獲得所有家長應用程序的ENV。這有點混亂,但最終是有道理的。