9

kabul etmiyor database.yml, ben:raylar benim database.yml olarak ERB

/usr/local/lib/ruby/gems/2.1.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in 
`require': Could not load 'active_record/connection_adapters/<%= ENV['DATABASE_ADAPTER'] %>_adapter'. 
Make sure that the adapter in config/database.yml is valid. If you use an adapter other than 'mysql', 'mysql2', 'postgresql' or 'sqlite3' 
add the necessary adapter gem to the Gemfile. (LoadError) 

hayır yapar: puma açılışı sırasında aslında

staging: 
    adapter: <%= ENV['DATABASE_ADAPTER'] %> 
    encoding: <%= ENV['DATABASE_ENCODING'] %> 
    database: <%= ENV['DATABASE'] %> 
    host: <%= ENV['DATABASE_HOST'] %> 
    port: <%= ENV['DATABASE_PORT'].to_i %> 
    pool: <%= ENV['DATABASE_POOL'].to_i %> 
    username: <%= ENV['DATABASE_USERNAME'] %> 
    password: <%= ENV['DATABASE_PASSWORD'] %> 

Ancak, ERB kısmını okumuyor anlamda, veritabanı yapılandırması yüklemek için Raylar kodunda tarihi:

def database_configuration 
    yaml = Pathname.new(paths["config/database"].existent.first || "") 

    config = if yaml.exist? 
     require "yaml" 
     require "erb" 
     YAML.load(ERB.new(yaml.read).result) || {} 
    elsif ENV['DATABASE_URL'] 
     # Value from ENV['DATABASE_URL'] is set to default database connection 
     # by Active Record. 
     {} 
    else 
     raise "Could not load database configuration. No such file - #{yaml}" 
    end 

    config 
    rescue Psych::SyntaxError => e 
    raise "YAML syntax error occurred while parsing #{paths["config/database"].first}. " \ 
      "Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \ 
      "Error: #{e.message}" 
    rescue => e 
    raise e, "Cannot load `Rails.application.database_configuration`:\n#{e.message}", e.backtrace 
    end 

(Raylar 4.2 kararlı kod, ben 4.2.1 çalıştırıyorum alınmıştır)

Bunun neden işe yaramadığını kesinlikle şaşırdım.

cevap

19

Sadece aynı şeyi yaşadım ve gönderilerinize rastladım. Bana aşağıdaki kodu içeren bir puma.conf dosyası oluşturmak vardı bir öğretici aşağıdaki olmuştu:

ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env]) 

Ben aşağıdakilere modifiye ve her şey beklendiği gibi çalıştı: Ben bir kullanıyordum

require 'erb' 
ActiveRecord::Base.establish_connection(YAML.load(ERB.new(File.read("#{app_dir}/config/database.yml")).result)[rails_env]) 
+0

eski sürüm (2.11.3), sorunu vardı. Yükseltilmiş puma, değişiklik yok. –

+0

Chris, Cevabımı düzenledim, düzenlemeden haberdar olup olmadığınızı bilmiyorsunuz, umarım bu yorum size bildirilir ve yeni cevap sorununuzu çözer. – user155995

+0

Bu gerçekten düzeltildi! Teşekkürler bir demet adam, güzel yakalama. –