【问题标题】:Congifure Stripe in a Rails Engine with .env使用 .env 在 Rails 引擎中配置 Stripe
【发布时间】:2016-04-28 20:10:35
【问题描述】:

我在 Rails::Engine 中设置条带时遇到问题,这有点像第二个问题,因为第二个问题与加载环境有关,这很有趣,但会解决的。

这里的目标是从大型 Rails 应用程序中拆分订阅流程。

更新 所以当我把这一切都写出来的时候,我真的让它工作了。下面贴出答案。随时发表评论并提供更好的方法来做到这一点。

第一个问题 STRIPE CONFIG

关于如何在 Rails 引擎中设置条带的问题。与父引擎或 Rails 应用程序分开。我已经尝试了几件事。

第二个问题加载环境

.envs 在为虚拟应用运行本地服务器时没有被加载,但在规范中被加载。

【问题讨论】:

  • 你能解释一下否决票吗?

标签: ruby-on-rails environment-variables stripe-payments rails-engines


【解决方案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

因此,在初始化程序“config.stripe”之上,该块被传递给父 Rails 应用程序。在本地运行虚拟应用程序或测试中的引擎时,这就是虚拟应用程序。这导致 Dummy 应用程序成为根位置。令人困惑的部分是用于测试的 .env 在引擎根路径中也被加载,但这不会为引擎加载。

所以你的 .env 必须放在虚拟应用的根目录中。虽然由引擎而不是 Rails::app 加载。虽然引擎将获取所有父应用程序 ENV。这有点令人困惑,但最终还是有意义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 2013-03-20
    相关资源
    最近更新 更多