lib/arxutils/dbutil/dbinit.rb in arxutils-0.1.36 vs lib/arxutils/dbutil/dbinit.rb in arxutils-0.1.37

- old
+ new

@@ -1,46 +1,75 @@ #! -*- encoding : UTF-8 -*- +# coding: utf-8 require 'fileutils' require 'yaml' require 'active_record' -require 'sqlite3' +#require 'sqlite3' +require 'mysql2' module Arxutils + # DB操作用ユーティリティクラス module Dbutil + # DB格納ディレクトリ名 DB_DIR = 'db' + # migrate用スクリプト格納ディレクトリ名 MIGRATE_DIR = 'migrate' + # SQLITE3用DB構成名 DBCONFIG_SQLITE3 = 'sqlite3' + # MYSQL用DB構成名 DBCONFIG_MYSQL = 'mysql' + # DB構成格納用ディレクトリ名 CONFIG_DIR = 'config' + # データベース用ログファイル名 DATABASELOG = 'database.log' - + + # DB接続までの初期化を行う class Dbinit - attr_accessor :dbconfig_dest_path , :dbconfig_src_path , :dbconfig_src_fname , :dbconfig_dest_fname , :migrate_dir - - def initialize( db_dir , migrate_base_dir , src_config_dir , dbconfig , env, log_fname, forced = false ) + # 生成するDB構成情報ファイルパス + attr_accessor :dbconfig_dest_path + # 参照用DB構成情報ファイル名 + attr_accessor :dbconfig_src_fname + # migrate用スクリプトの出力先ディレクトリ名 + attr_accessor :migrate_dir + + # DB接続までの初期化に必要なディレクトリの確認、作成 + def initialize( db_dir , migrate_base_dir , src_config_dir , dbconfig , env, log_fname, opts ) + # DB格納ディレクトリ名 @db_dir = db_dir + # DB構成ファイルのテンプレート格納ディレクトリ @src_config_dir = src_config_dir + # DB構成ファイルの出力先ディレクトリ @dest_config_dir = "config" + # DB構成ファイル名 @dbconfig_dest_fname = "#{dbconfig}.yaml" + # DB構成ファイル用テンプレートファイル名 @dbconfig_src_fname = "#{dbconfig}.tmpl" + # DB構成ファイルへのパス @dbconfig_dest_path = File.join( @dest_config_dir , @dbconfig_dest_fname) + # DB構成ファイル用テンプレートファイルへのパス @dbconfig_src_path = File.join(@src_config_dir , @dbconfig_src_fname) + # 環境の指定 @env = env + # DB用ログファイル名 @log_fname = log_fname if @db_dir and @log_fname + # DB用ログファイルへのパス @log_path = File.join( @db_dir , @log_fname ) + # migrate用スクリプト格納ディレクトリへのパス @migrate_dir = File.join( @db_dir , migrate_base_dir ) end FileUtils.mkdir_p( @db_dir ) if @db_dir FileUtils.mkdir_p( @migrate_dir ) if @migrate_dir FileUtils.mkdir_p( @dest_config_dir ) - if forced + # remigrateが指定されれば、migrate用スクリプトとDB構成ファイルを削除する + if opts["remigate"] FileUtils.rm( Dir.glob( File.join( @migrate_dir , "*"))) if @migrate_dir FileUtils.rm( Dir.glob( File.join( @dest_config_dir , "*"))) end end - + + # DB接続し、DB用ログファイルの設定 def setup dbconfig = YAML.load( File.read( @dbconfig_dest_path ) ) ActiveRecord::Base.establish_connection(dbconfig[@env]) ActiveRecord::Base.logger = Logger.new( @log_path ) end