Rails:贝宝配置文件和Figaro环境变量

马里诺

我正在使用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

因为此信息是秘密的,所以我想使用另一个名为“ Figaro ”的宝石来外部化此变量。我在应用程序中将其用于其他配置文件,但不适用于“ 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中“保密”此信息吗?

提前致谢!

Trosborn

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

#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 
)

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

#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并告诉它使用您的机密信息忽略yaml文件:

#.git_ignore
/config/application.yml

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

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

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

话虽如此,我非常怀疑您在做什么违反了12要素最佳实践。这个yaml文件不是应用程序的一部分-当您将代码推送到类似Heroku的服务器上时,该文件不应该随它一起使用。带有密钥的yaml文件应该只存在于本地计算机上。它不应该存在于Github中,也不应该存在于您的生产服务器中。要了解有关此内容的更多信息,请查看以下链接:http : //12factor.net/config

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

heroku config:set PAYPAL_CLASSIC_USERNAME_DEV=putyourusernamehere

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

NLog环境变量配置文件

NodeJs环境变量与配置文件

运行 jvmtop 配置文件和 JAVA_HOME 环境变量

PowerShell脚本基于环境变量更新配置文件

访问Jam配置文件中的环境变量

在 mosquitto 配置文件中使用环境变量

使用Figaro和Secrets.yml管理环境变量

贝宝的定期付款配置文件RPSTATE是什么?

贝宝付款REST API Web体验配置文件

在app.props中定义的活动配置文件,但是环境变量返回活动配置文件的空数组

将密码作为环境变量(而不是纯文本)存储在配置文件中是否安全?

如何在Wildfly的standalone.xml配置文件中引用环境变量?

如何通过环境变量或配置文件禁用JxBrowser中的GPU加速?

基于docker环境变量切换spring配置文件不起作用

环境变量在反应 firebase 配置文件中不起作用

使用回退将环境变量存储在配置文件中

在Spring MVC中从环境变量设置活动配置文件

如何将配置文件作为环境变量激活

如何使用docker-compose环境变量填充配置文件

在python脚本中调用bash配置文件以设置环境变量

哪些配置文件应用于设置bash环境变量?

JetBrains Rider:无法在项目配置文件中更改环境变量

如何在envoyproxy配置文件中使用环境变量?

如何通过Elasticbeanstalk配置文件(使用Docker)访问环境变量?

为什么 Phoenix 需要一个用于环境变量的机密配置文件?

如何在Kubernetes配置文件中添加环境变量?

AWS Elastic Beanstalk 环境变量不会从配置文件更新

如何在赛普拉斯配置文件中引用环境变量?

.npmrc配置文件未读取环境变量以下载专用节点模块