使用 .env 在 Rails 引擎中配置 Stripe
Congifure Stripe in a Rails Engine with .env
我在 Rails::Engine 中设置条带时遇到问题,这是一个双重问题,因为第二个问题与加载环境有关,这很有趣,但会解决这个问题。
此处的目标是从大型 Rails 应用程序中分离订阅流程。
更新
因此,当我全部输入时,我实际上让它工作了。下面贴出答案。请随时发表评论,并提供更好的方法来做到这一点。
第一个问题STRIPE CONFIG
询问如何在 rails 引擎中设置条带。与父引擎或 Rails 应用分开。我尝试了一些东西。
第二题加载环境
.envs 在 运行 虚拟应用程序的本地服务器尚未在规范中加载时未加载。
条纹配置
#/: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。这有点令人困惑,但最终还是有道理的。
我在 Rails::Engine 中设置条带时遇到问题,这是一个双重问题,因为第二个问题与加载环境有关,这很有趣,但会解决这个问题。
此处的目标是从大型 Rails 应用程序中分离订阅流程。
更新 因此,当我全部输入时,我实际上让它工作了。下面贴出答案。请随时发表评论,并提供更好的方法来做到这一点。
第一个问题STRIPE CONFIG
询问如何在 rails 引擎中设置条带。与父引擎或 Rails 应用分开。我尝试了一些东西。
第二题加载环境
.envs 在 运行 虚拟应用程序的本地服务器尚未在规范中加载时未加载。
条纹配置
#/: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。这有点令人困惑,但最终还是有道理的。