繁体   English   中英

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

[英]Rails: Paypal configuration file and figaro environment variables

我正在使用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中“保密”此信息吗?

提前致谢!

好的,您应该做的是将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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM