代码之家  ›  专栏  ›  技术社区  ›  Erik Escobedo

通过rake任务访问database.yml信息

  •  4
  • Erik Escobedo  · 技术社区  · 16 年前

    system "mysql -u foo -pbar database < backup.sql"
    

    但是我需要访问config/database.yml数据来获取用户、密码和数据库信息。诀窍是我不想“解析”这个文件,而是要用rakedb:reset-do这样的任务访问这个信息。

    我该怎么做?

    3 回复  |  直到 11 年前
        1
  •  5
  •   thomasfedb    16 年前

    这样地:

    require 'yaml'
    conf = YAML.load_file("path/to/database.yml")
    
        2
  •  21
  •   Shyam Habarakada    12 年前

    这会有用的。

    task :demo_using_db_config => :environment do
      db_config = Rails.application.config.database_configuration[Rails.env]
      system "mysql -u#{db_config['username']} -p#{db_config['password']} #{db_config['database']} < backup.sql"
    end
    

    或者,如果您使用的是ActiveRecord,您可以获得如下信息:

      abcs = ActiveRecord::Base.configurations
      puts abcs[Rails.env]["username"]
      puts abcs[Rails.env]["password"]
    

    这适用于rake任务和其他地方。

        3
  •  6
  •   Daniel Huang    14 年前

    config=Rails.application.config.database\u配置

    task :mysqlimport_table
      db_config = Rails.application.config.database_configuration[Rails.env]
      sh "mysqlimport -u#{db_config['username']} -p#{db_config['password']} #{db_config['database']} --default-character-set=utf8 --local <path_to_your_file>"
    end
    
    task :mysqlrun_sql_script
      db_config = Rails.application.config.database_configuration[Rails.env]
      sh "mysql -u#{db_config['username']} -p#{db_config['password']} -D#{db_config['database']} < <path_to_your_sql_file>"
    
    end