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。这有点混乱,但最终是有道理的。