2

アプリを Heroku にデプロイしていますが、ほとんど問題ありませんが、このエラーが発生しています

mapping values are not allowed in this context at line 22 column 13 (Psych::SyntaxError)

彼らが参照している行は、標準的な慣行に従って、Heroku 自体が自分のファイルに上書きしている database.yml ファイルの 22 行目です。

heroku run bash問題のファイルに飛び込んで見てみましょう:

<%

require 'cgi'
require 'uri'

begin
  uri = URI.parse(ENV["DATABASE_URL"])
rescue URI::InvalidURIError
  raise "Invalid DATABASE_URL"
end

raise "No RACK_ENV or RAILS_ENV found" unless ENV["RAILS_ENV"] || ENV["RACK_ENV"]

def attribute(name, value, force_string = false)
  if value
    value_string =
      if force_string
        '"' + value + '"'
      else
        value
      end
    "#{name}: #{value_string}"
  else
    ""
  end
end

adapter = uri.scheme
adapter = "postgresql" if adapter == "postgres"

database = (uri.path || "").split("/")[1]

username = uri.user
password = uri.password

host = uri.host
port = uri.port

params = CGI.parse(uri.query || "")

%>

<%= ENV["RAILS_ENV"] || ENV["RACK_ENV"] %>:
  <%= attribute "adapter",  adapter %>
  <%= attribute "database", database %>
  <%= attribute "username", username %>
  <%= attribute "password", password, true %>
  <%= attribute "host",     host %>
  <%= attribute "port",     port %>

<% params.each do |key, value| %>
  <%= key %>: <%= value.first %>
<% end %>

22行目は

    "#{name}: #{value_string}"

この問題を解決する方法について何か提案はありますか?

4

1 に答える 1

12

さらに調査した後、問題を解決しました。はぁ。

私のローカルマシンでは、次のようにデータベース構成をロードしています:

dbconfig = YAML::load(File.open(File.join("config","database.yml")))

しかし、ymlHeroku が生成するファイルは実際にERBは偽装されたファイルであるため、最初に解析する必要があります。

上記の行を次のように変更します。

dbconfig = YAML.load(ERB.new(File.read(File.join("config","database.yml"))).result)

御馳走を働きます。

于 2013-08-09T02:45:40.223 に答える