gpt4 book ai didi

ruby-on-rails - rails : Paypal configuration file and figaro environment variables

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:37 26 4
gpt4 key购买 nike

我正在使用 gem ' paypal-sdk-adaptivepayments ' 将 Paypal 集成到我的 Rails 应用程序中。配置文件为paypal.yml:

development:
# Credentials for Classic APIs
username: ENV["PAYPAL_CLASSIC_USERNAME_DEV"]
password: ENV["PAYPAL_CLASSIC_PASSWORD_DEV"]
signature: ENV["PAYPAL_CLASSIC_SIGNATURE_DEV"]
app_id: ENV["PAYPAL_CLASSIC_APP_ID_DEV"]
http_timeout: 30
# Mode can be 'live' or 'sandbox'
mode: sandbox
test:
<<: *default
production:
<<: *default
#mode: live

因为这个信息是 secret 的,所以我想使用另一个名为' Figaro 的 gem ' 将此变量外部化。我将它用于我应用程序中的另一个配置文件,但它不适用于“paypal.yml”。我知道这行不通,因为当我将真实信息放入 paypal.yml 文件时它会起作用。

development:
# Credentials for Classic APIs
username: *******@yahoo.com
password: *******
signature: ******
app_id: ******
http_timeout: 30
# Mode can be 'live' or 'sandbox'
mode: sandbox
test:
<<: *default
production:
<<: *default
#mode: live

有人用 Figaro 处理这个文件吗?在 Rails 中是否有任何其他选项可以“保密”此信息?

提前致谢!

最佳答案

好的,您应该做的是用 config.rb 文件替换您的 yaml 配置文件:

#config/initializers/paypal.rb
PayPal::SDK.configure(
username: ENV["PAYPAL_CLASSIC_USERNAME_DEV"],
password: ENV["PAYPAL_CLASSIC_PASSWORD_DEV"],
signature: ENV["PAYPAL_CLASSIC_SIGNATURE_DEV"],
app_id: ENV["PAYPAL_CLASSIC_APP_ID_DEV"],
http_timeout: 30
)

然后在application.yml等yaml文件中定义这些变量:

#config/application.yml
PAYPAL_CLASSIC_USERNAME_DEV: yourpaypalusername
PAYPAL_CLASSIC_PASSWORD_DEV: yourpaypalpassword
PAYPAL_CLASSIC_SIGNATURE_DEV: yourpaypaysignature
PAYPAL_CLASSIC_APP_ID_DEV: yourappid

最后假设您使用 git 进行版本控制,进入您的 gitignore 并告诉它忽略包含您的 secret 信息的 yaml 文件:

#.git_ignore
/config/application.yml

当您将环境变量推送到 github 或其他 git 存储库时,这将正确地将您的环境变量保留在您的代码库之外。

编辑:要使用不同的环境 key ,您只需在 yaml 文件中为不同的环境指定 key :

#application.yml
production:
PAYPAL_CLASSIC_USERNAME_DEV: yourpaypalusername
PAYPAL_CLASSIC_PASSWORD_DEV: yourpaypalpassword
PAYPAL_CLASSIC_SIGNATURE_DEV: yourpaypaysignature
PAYPAL_CLASSIC_APP_ID_DEV: yourappid

话虽如此,我高度怀疑您的行为违反了 12factor 最佳实践。这个 yaml 文件不是你的应用程序的一部分——当你将你的代码推送到像 Heroku 这样的服务器时,这个文件不应该与它一起使用。带有您的 key 的 yaml 文件应该只存在于您的本地机器上。它不应存在于 Github 中,也不应存在于您的生产服务器上。要了解更多相关信息,请查看此链接:http://12factor.net/config

那么你如何告诉像 Heroku 这样的服务器这些配置变量是什么?这将根据您使用的服务提供商而有所不同,但通常是通过命令行工具或通过管理员管理页面完成的。例如,对于 Heroku,您将运行:

heroku config:set PAYPAL_CLASSIC_USERNAME_DEV=putyourusernamehere

关于ruby-on-rails - rails : Paypal configuration file and figaro environment variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28203202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com