非常によく似たトピックをたくさん見つけましたが、何かが足りません。>。<
基本的に、$db_url
データベースの資格情報、ホストアドレス、および名前で呼び出される変数を作成しようとしています。
ハッシュ内のハッシュの値を抽出しようとすると、次のエラーが発生します。
`[]': can't convert String into Integer (TypeError)
この行:
$credentials = $svc_details["credentials"]
コンテキストは次のとおりです。
if (ENV['VCAP_SERVICES'])
$vcap = JSON.parse(ENV['VCAP_SERVICES'])
$svc_details = $vcap["mysql-5.1"]
$credentials = $svc_details["credentials"]
$host = $credentials["host"]
$username = $credentials["username"]
$password = $credentials["password"]
$database = $credentials["name"]
$port = $credentials["port"]
$db_url = "mysql://#{$username}:#{$password}@#{$host}/#{$database}"
end
configure do
Sequel.connect($db_url || ENV['DATABASE_URL'] || 'sqlite://blog.db')
require 'ostruct'
Blog = OpenStruct.new(
:title => 'My Title',
:author => 'My Name',
:url_base => ENV['SITE_URL'],
:admin_password => 'My Password',
:admin_cookie_key => 'cookie_key',
:admin_cookie_value => 'cookie_value',
:disqus_shortname => nil
)
end
編集:
これが私が動かそうとしているJSONの例です:
{"mysql-5.1":[
{
"name":"mysql-4f700",
"label":"mysql-5.1",
"plan":"free",
"tags":["mysql","mysql-5.1","relational"],
"credentials":{
"name":"d6d665aa69817406d8901cd145e05e3c6",
"hostname":"mysql-node01.us-east-1.aws.af.cm",
"host":"mysql-node01.us-east-1.aws.af.cm",
"port":3306,
"user":"uB7CoL4Hxv9Ny",
"username":"uB7CoL4Hxv9Ny",
"password":"pzAx0iaOp2yKB"
}
},
{
"name":"mysql-f1a13",
"label":"mysql-5.1",
"plan":"free",
"tags":["mysql","mysql-5.1","relational"],
"credentials":{
"name":"db777ab9da32047d99dd6cdae3aafebda",
"hostname":"mysql-node01.us-east-1.aws.af.cm",
"host":"mysql-node01.us-east-1.aws.af.cm",
"port":3306,
"user":"uJHApvZF6JBqT",
"username":"uJHApvZF6JBqT",
"password":"p146KmfkqGYmi"
}
}
]}
私はプログラミングの初心者なので、情報が不足していたり、何かがわからない場合はお詫びします。
can't convert String into Integer (TypeError)
ため、エラーがある$svc_details
あなたが欲しいものを選択する数値インデックスを使用していますが、文字列を使用しようとしているエントリのリストすなわち配列である"credentials"
配列のインデックスとして。
あなたはJSONを見れば、あなたはそれを参照してくださいよ"mysql-5.1"
開始時(で囲まれた配列を指し[]
始まる1:その中に2つのエントリで、ブラケット){ "name":"mysql-4f700"...
と始まり、第二1{ "name":"mysql-f1a13"...
これは、あなたが書くとき:
$svc_details = $vcap["mysql-5.1"]
次に$svc_details
、2つの要素を持つ配列であるため、直接移動することはできません。"credentials"
最初のエントリと2番目のエントリのどちらが必要かがわかっている場合は、JSONの適切なセクションを使用$svc_details = $vcap["mysql-5.1"][0]
または$svc_details = $vcap["mysql-5.1"][1]
選択するか、特定の名前のエントリを見つけるためのコードを記述できます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加