我正在使用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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句