0

我有一个在 Bluemix 上运行的 ruby​​ on rails 应用程序。在这个应用程序中,我使用了一些服务,其中之一是对象存储。

从逻辑上讲,我想将用于每个环境(dev 和 prod)的凭证放在环境变量中,您可以在 Bluemix 的运行时选项卡中指定这些环境变量。

我想在那里输入这样的密码:

23aSeefae,,)ewFe

运行时环境不接受 ) 符号。

它说: 在此处输入图像描述

我尝试过双引号、单引号,并尝试用反斜杠转义 ) 符号。

任何帮助,将不胜感激。有什么方法可以将我的变量存储在我的应用程序之外和 Bluemix 环境中?

PS:密码不是真实密码。

4

2 回答 2

1

您必须将对象服务实例绑定(连接)到 Bluemix 中的应用程序,以便VCAP_SERVICES自动为您创建环境变量。

这是应用程序绑定对象存储服务实例的 VCAP_SERVICES 环境变量的示例(出于安全原因,我修改了一些数据):

{
    "Object-Storage": [
        {
            "credentials": {
                "auth_url": "https://identity.open.softlayer.com",
                "project": "object_storage_a92583b3_329e_4ed8_8918_xxx",
                "projectId": "7f1f5659d21340dfaa4568dxxxx",
                "region": "dallas",
                "userId": "abcdefghxxxxxxxxxxxxx",
                "username": "admin_3ff9bf1e187e7fa02e28c96232dxxxxxxx",
                "password": "BF_0_)s3#xxxXXbY^",
                "domainId": "79fc08601744486abf930000000000",
                "domainName": "761111",
                "role": "admin"
            },
            "syslog_drain_url": null,
            "label": "Object-Storage",
            "provider": null,
            "plan": "standard",
            "name": "app-object-storage",
            "tags": [
                "storage",
                "ibm_release",
                "ibm_created"
            ]
        }
    ]
}

然后,您可以在 ruby​​ 代码中将此作为 JSON 对象读取,例如:

vcap_services = JSON.parse(ENV['VCAP_SERVICES'])
credentials = vcap_services["Object-Storage"][0]["credentials"]
password = credentials["password"]
于 2017-01-20T19:37:38.387 回答
0

我现在也得到了 Bluemix 支持的帮助。这是迄今为止最简单的方法来做我想做的事:

您可以通过 Cloud Foundry 命令行界面设置环境变量。

cf set-env <APP_NAME> <ENV_VAR_NAME> <ENV_VAR_VALUE>

您必须先重新部署您的应用程序,然后才能使用它们。

于 2017-01-30T08:27:24.417 回答