如何在开发模式下访问加密凭证?
How do I access the encrypted credentials in development mode?
我在控制器中有这段代码
def index
puts Rails.application.credentials.admin_email
if (current_admin && current_admin.email == Rails.application.credentials.admin_email)
#do this
else
#do that
end
end
else 分支总是发生。我相信这是因为我没有从加密文件中取回字符串,因为 puts 行从不打印任何内容。
当我在 rails 控制台中键入 Rails.application.credentials.admin_email
时,我得到了正确的响应,"xxx@xxx.com"
我的 config/credentials.yml.enc
文件如下所示:
admin_email: xxx@xxx.com
我还尝试将 config/credentials.yml.enc
文件更改为:
development:
admin_email: xxx@xxx.com
并将代码更改为
puts Rails.application.credentials[:admin_email]
if (current_admin && current_admin.email == Rails.application.credentials[:admin_email]
然后在 rails 控制台中,我使用
得到正确的 xxx@xxx.com
Rails.application.credentials[:development][:admin_email]
,但是当 运行 rails s
.
时,开发代码仍然没有显示任何内容
这是获取环境特定凭据的正确方法,这就是您使用以下代码获取凭据的原因:-
Rails.application.credentials.admin_email
看起来您可能有打字错误/复制粘贴错误。
如果您还有这种格式的凭据文件:
development:
admin_email: xxx@xxx.com
那么您应该使用
访问它
Rails.application.credentials.development[:admin_email]
在你的问题中,虽然在 "And have changed the code to be" 下你仍然有旧版本:
puts Rails.application.credentials[:admin_email]
if (current_admin && current_admin.email == Rails.application.credentials[:admin_email]
这应该是:
puts Rails.application.credentials.development[:admin_email]
if (current_admin && current_admin.email == Rails.application.credentials.development[:admin_email]
我在控制器中有这段代码
def index
puts Rails.application.credentials.admin_email
if (current_admin && current_admin.email == Rails.application.credentials.admin_email)
#do this
else
#do that
end
end
else 分支总是发生。我相信这是因为我没有从加密文件中取回字符串,因为 puts 行从不打印任何内容。
当我在 rails 控制台中键入 Rails.application.credentials.admin_email
时,我得到了正确的响应,"xxx@xxx.com"
我的 config/credentials.yml.enc
文件如下所示:
admin_email: xxx@xxx.com
我还尝试将 config/credentials.yml.enc
文件更改为:
development:
admin_email: xxx@xxx.com
并将代码更改为
puts Rails.application.credentials[:admin_email]
if (current_admin && current_admin.email == Rails.application.credentials[:admin_email]
然后在 rails 控制台中,我使用
得到正确的xxx@xxx.com
Rails.application.credentials[:development][:admin_email]
,但是当 运行 rails s
.
这是获取环境特定凭据的正确方法,这就是您使用以下代码获取凭据的原因:-
Rails.application.credentials.admin_email
看起来您可能有打字错误/复制粘贴错误。
如果您还有这种格式的凭据文件:
development:
admin_email: xxx@xxx.com
那么您应该使用
访问它Rails.application.credentials.development[:admin_email]
在你的问题中,虽然在 "And have changed the code to be" 下你仍然有旧版本:
puts Rails.application.credentials[:admin_email]
if (current_admin && current_admin.email == Rails.application.credentials[:admin_email]
这应该是:
puts Rails.application.credentials.development[:admin_email]
if (current_admin && current_admin.email == Rails.application.credentials.development[:admin_email]