2017-09-09 2 views
0

私はレールからデータベースの認証の詳細情報を取得することができますどのようにバックアップ宝石を使用して、私はとdb_backup.rbを作成するためにきたことを理解し例私は</p> <p><a href="http://backup.github.io/backup/v4/utilities/" rel="nofollow noreferrer">http://backup.github.io/backup/v4/utilities/</a></p> <p>バックアップ宝石をテストしていdatabase.ymlの

Model.new(:my_backup, 'My Backup') do 
    database MySQL do |db| 
    # To dump all databases, set `db.name = :all` (or leave blank) 
    db.name    = "my_database_name" 
    db.username   = "my_username" 
    db.password   = "my_password" 
    db.host    = "localhost" 
    db.port    = 3306 

のための構成は、しかし、私はRailsのdatabase.ymlから、それらの詳細を取得する方法を見つけることができませんよ。私はこのようなものを試しました:

env = defined?(RAILS_ENV) ? RAILS_ENV : 'development' 
    @settings = YAML.load(File.read(File.join("config", "database.yml"))) 

しかし、私はそこに良い方法があるはずだと思います。

env = defined?(RAILS_ENV) ? RAILS_ENV : 'development' 
config = YAML.load_file(File.join('config', 'database.yml'))[env] 

Model.new(:my_backup, 'My Backup') do 
    database MySQL do |db| 
    config.each_pair do |key, value| 
     db.public_send("#{key}=", value) 
    end 
    # ... 

答えて

1

私はこのような何かをするだろう。データベース資格情報をconfig/database.ymlに追加しないようにする必要があるため、これは非常に重要です。

database.ymlに接続アダプターと基本機能のみを指定することをお勧めします。ユーザー名、パスワード、その他すべてのものにはENV['DATABASE_URL']を使用してください。

Envは、 コードを変更せずに配置間で簡単に変更できます。設定ファイルとは異なり、誤ってコードリポジトリに が入っている可能性はほとんどありません。カスタム設定の ファイルやJava System Propertiesなどのその他の設定メカニズムとは異なり、それらは は言語とOSに依存しない標準です。
- https://12factor.net/config

参照:

0

利用のActiveRecordの独自の設定の扱い:

require 'active_record' 
require 'yaml' 

Model.new(:my_backup, 'My Backup') do 
    database MySQL do |db| 
    config = { 
     # these are the default values 
     host: 'localhost' 
     port: 3306 
    }.merge(load_configuration(ENV['RAILS_ENV'] || 'development')) 
    config.each_pair do |key, value| 
     db.public_send("#{key}=", value) 
    end 
    end 

    # this loads the configuration from file and memoizes it 
    def load_configuration(env) 
    @file_config ||= YAML.load(File.read(File.join("config", "database.yml"))) 
    @configurations ||= ActiveRecord::ConnectionHandling::MergeAndResolveDefaultUrlConfig.new(file_config).resolve 
    @configurations[env] 
    end 
end 

ここでの主な利点は、それがENV['DATABASE_URL']から値をマージするということです

関連する問題

 関連する問題