Class: Arxutils_Sqlite3::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/arxutils_sqlite3/config.rb

Overview

migrateに必要なファイルをテンプレートから作成し、migarteを実行する

Constant Summary collapse

DB_DIR =

DB格納ディレクトリ名

"db"
MIGRATE_BASE_DIR =

migrate用スクリプト格納ディレクトリ名

"migrate"
DBCONFIG_SQLITE3 =

SQLITE3用DB構成名

"sqlite3"
DBCONFIG_MYSQL =

MYSQL用DB構成名

"mysql"
CONFIG_DIR_NAME =

DB構成格納用ディレクトリ名

"config"
CONFIG_DIR =

コンフィグディレクトリへのパス

Pathname.new(CONFIG_DIR_NAME)
DATABASELOG =

データベース用ログファイル名

"database.log"
TEMPLATE_DIR =

テンプレートディレクトリへのパス

Arxutils_Sqlite3::TOP_DIR.join("template")
TEMPLATE_ACRECORD_DIR =

リレーションテンプレートディレクトリへのパス

TEMPLATE_DIR.join("acrecord")
TEMPLATE_CONFIG_DIR =
TEMPLATE_DIR.join(CONFIG_DIR)
DB_SCHEME_DIR =
TEMPLATE_ACRECORD_DIR.join("db_scheme")
DB_SCHEME_FILE =
DB_SCHEME_DIR.join("db_scheme.yml")
SAMPLE_DB_SCHEME_FILE =
CONFIG_DIR.join("db_scheme.yml.sample")
DB_SCHEME_FILE_NAME =
"db_scheme.yml"
DB_SCHEME_FILE_NAME_B =
"db_scheme"
OPTS_FILE_NAME =
"opts.tmpl"
SAMPLE_OPTS_FILE_NAME =
"opts.rb.sample"
OPTS_FILE_NAME_B =
"opts"
DEST_OPTS_FILE_NAME =
"opts.rb"
DEST_OPTS_FILE_NAME_B =
"opts"
DBSETUP_FILE_NAME =
"dbsetup.tmpl"
DBSETUP_FILE_NAME_B =
"dbsetup"
DEST_DBSETUP_FILE_NAME =
"dbsetup.rb"
SETTING_YAML_FILE_NAME =
"setting.yml"
DEST_CONFIG_DIR =
Pathname.new(CONFIG_DIR)
OPTS_FILE =
DB_SCHEME_DIR.join(OPTS_FILE_NAME)
SAMPLE_OPTS_FILE =
CONFIG_DIR.join(SAMPLE_OPTS_FILE_NAME)
DBSETUP_FILE =

変換先Dbsetupクラス定義のRubyスクリプトファイルへのパス

DB_SCHEME_DIR.join(DBSETUP_FILE_NAME)
DEST_OPTS_FILE =

変換先optsファイル(Rubyスクリプトファイル)へのパス

DEST_CONFIG_DIR.join(DEST_OPTS_FILE_NAME)
DEST_OPTS_FILE_B =
DEST_CONFIG_DIR.join(OPTS_FILE_NAME_B)
DEST_DBSETUP_FILE =

変換先Dbsetupクラス定義のRubyスクリプトファイルへのパス

DEST_CONFIG_DIR.join(DEST_DBSETUP_FILE_NAME)
DEST_DBSETUP_FILE_B =

変換先Dbsetupクラス定義のRubyスクリプトファイル(拡張子無し)へのパス

DEST_CONFIG_DIR.join(DBSETUP_FILE_NAME_B)
DEST_DB_SCHEME_FILE =
DEST_CONFIG_DIR.join(DB_SCHEME_FILE_NAME)
DEST_DB_SCHEME_FILE_B =

変換後DBスキームファイル(拡張子無し)へのパス

DEST_CONFIG_DIR.join(DB_SCHEME_FILE_NAME_B)
SETTING_YAML_FILE =
CONFIG_DIR.join(SETTING_YAML_FILE_NAME)
DB_PN =
Pathname.new(DB_DIR)
MIGRATE_DIR =

migrateディレクトリへのパス

DB_PN.join(MIGRATE_BASE_DIR)
EXCLUDE_FILES =

削除しないファイル群

%w[SETTING_YAML_FILE_NAME].freeze
DEFAULT_MOD =

作成対象のActiveRecordの子クラスのデフォルトクラス名

"Xenop"

Instance Method Summary collapse

Instance Method Details

#check_file_exist(file_pn, banner, exit_code) ⇒ Object

指定ファイルの存在確認



202
203
204
205
206
207
208
# File 'lib/arxutils_sqlite3/config.rb', line 202

def check_file_exist(file_pn, banner, exit_code)
  return unless file_pn.exist?

  puts "#{file_pn} exists!"
  puts banner
  exit exit_code
end

#check_file_not_exist(file_pn, banner, exit_code) ⇒ Object

指定ファイルの非存在確認



211
212
213
214
215
216
217
# File 'lib/arxutils_sqlite3/config.rb', line 211

def check_file_not_exist(file_pn, banner, exit_code)
  return if file_pn.exist?

  puts "#{file_pn} does not exists!"
  puts banner
  exit exit_code
end

#config_dirObject

コンフィグディレクトリへのパス



230
231
232
# File 'lib/arxutils_sqlite3/config.rb', line 230

def config_dir
  CONFIG_DIR
end

#copy_db_scheme_fileObject

DBスキームファイルが存在しなければ、サンプルファイルをDBスキームファイルとしてコピー



128
129
130
131
132
# File 'lib/arxutils_sqlite3/config.rb', line 128

def copy_db_scheme_file
  return if File.exist?(DEST_DB_SCHEME_FILE)

  FileUtils.cp(SAMPLE_DB_SCHEME_FILE, DEST_DB_SCHEME_FILE)
end

#copy_opts_fileObject

optsファイルが存在しなければ、サンプルファイルをoptsファイルとしてコピー



143
144
145
146
147
148
149
# File 'lib/arxutils_sqlite3/config.rb', line 143

def copy_opts_file
  return if File.exist?(DEST_OPTS_FILE)

  # p "exist? #{File.exist?(DEST_OPTS_FILE)}"
  # p "copy SAMPLE_OPTS_FILE(#{SAMPLE_OPTS_FILE}) to DEST_OPTS_FILE(#{DEST_OPTS_FILE})"
  FileUtils.cp(SAMPLE_OPTS_FILE, DEST_OPTS_FILE)
end

#db_dirObject

DB格納ディレクトリ名



220
221
222
# File 'lib/arxutils_sqlite3/config.rb', line 220

def db_dir
  DB_DIR
end

#default_modObject



68
69
70
# File 'lib/arxutils_sqlite3/config.rb', line 68

def default_mod
  DEFAULT_MOD
end

#dest_dbsetup_fileObject

変換先Dbsetupクラス定義のRubyスクリプトファイルへのパス



250
251
252
# File 'lib/arxutils_sqlite3/config.rb', line 250

def dest_dbsetup_file
  DEST_DBSETUP_FILE
end

#dest_dbsetup_file_bObject



76
77
78
# File 'lib/arxutils_sqlite3/config.rb', line 76

def dest_dbsetup_file_b
  DEST_DBSETUP_FILE_B
end

#exclude_file?(fname) ⇒ Boolean

Returns:

  • (Boolean)


299
300
301
# File 'lib/arxutils_sqlite3/config.rb', line 299

def exclude_file?(fname)
  EXCLUDE_FILES.index(fname) != nil
end

#load_setting_yaml_fileObject

setting.ymlのロード



183
184
185
186
187
188
189
# File 'lib/arxutils_sqlite3/config.rb', line 183

def load_setting_yaml_file
  setting = {}
  # settingファイル
  setting_yaml_file = SETTING_YAML_FILE
  setting = YAML.load_file(setting_yaml_file) if setting_yaml_file.exist?
  setting
end

#make_config_directoryObject

DB構成ファイル格納ディレクトリの作成



110
111
112
113
# File 'lib/arxutils_sqlite3/config.rb', line 110

def make_config_directory
  # p "config make_config_directory"
  FileUtils.mkdir_p(CONFIG_DIR)
end

#make_dbconfig_path(dbconfig) ⇒ Object

DB構成ファイルの作成



165
166
167
168
# File 'lib/arxutils_sqlite3/config.rb', line 165

def make_dbconfig_path(dbconfig)
  # DB構成ファイル名
  Arxutils_Sqlite3::Util.make_dbconfig_path(CONFIG_DIR, dbconfig)
end

#make_dbsetup_file(db_scheme_ary, acrecord, _mod, dest_dbsetup_file) ⇒ Object



290
291
292
293
294
295
296
297
# File 'lib/arxutils_sqlite3/config.rb', line 290

def make_dbsetup_file(db_scheme_ary, acrecord, _mod, dest_dbsetup_file)
  scope = Object.new
  hash0 = { mod_name: acrecord[:module].join("::") }
  hash = db_scheme_ary[0].merge(hash0)
  result_content = Ykutils::Erubyx.erubi_render_with_template_file(src_dbsetup_file, scope, hash)

  File.write(dest_dbsetup_file, result_content)
end

#make_migrate_script(db_scheme_ary, dbconfig_path, dbconfig, acrecord) ⇒ Object

migrate用スクリプトの生成



267
268
269
270
271
# File 'lib/arxutils_sqlite3/config.rb', line 267

def make_migrate_script(db_scheme_ary, dbconfig_path, dbconfig, acrecord)
  mig = Arxutils_Sqlite3::Util.prepare_for_migrate(db_scheme_ary, dbconfig_path, dbconfig, acrecord)
  # マイグレーション用スクリプトの生成、acrecordのクラス定義ファイルの生成
  mig.output
end

#migrate_dirObject

migrateディレクトリへのパス



225
226
227
# File 'lib/arxutils_sqlite3/config.rb', line 225

def migrate_dir
  MIGRATE_DIR
end

#prepare_for_migrate(db_scheme_ary, dbconfig_dest_path, dbconfig, acrecord) ⇒ Object

migrateの準備



274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
# File 'lib/arxutils_sqlite3/config.rb', line 274

def prepare_for_migrate(db_scheme_ary, dbconfig_dest_path, dbconfig, acrecord)
  # DB構成ファイルの出力先ディレクトリ
  dbconfig_src_fname = "#{dbconfig}.tmpl"
  # migrate用スクリプトの出力先ディレクトリ名
  # migrate_dir = get_migrate_dir

  Migrate.new(
    self,
    dbconfig_dest_path,
    dbconfig_src_fname,
    db_scheme_ary,
    acrecord,
    migrate_dir
  )
end

#require_dbsetup_fileObject

Dbsetupファイル(Rubyスクリプトファイル)のrequire



192
193
194
195
196
197
198
199
# File 'lib/arxutils_sqlite3/config.rb', line 192

def require_dbsetup_file
  dbsetup_file = File.join(".", dest_dbsetup_file_b.to_s)
  begin
    require dbsetup_file
  rescue LoadError
    # pp ex.message
  end
end

#require_opts_fileObject

optsファイル(Rubyスクリプトファイル)のrequire



171
172
173
174
175
176
177
178
179
180
# File 'lib/arxutils_sqlite3/config.rb', line 171

def require_opts_file
  return unless DEST_OPTS_FILE.exist?

  opts_file = File.join("./", DEST_OPTS_FILE_B.to_s)
  begin
    require opts_file
  rescue LoadError
    # pp ex.message
  end
end

#setting_yaml_fileObject



72
73
74
# File 'lib/arxutils_sqlite3/config.rb', line 72

def setting_yaml_file
  SETTING_YAML_FILE
end

#setup_db_scheme_file(mod) ⇒ Object

DBスキームファイルのサンプルファイコピー



116
117
118
119
120
121
122
123
124
125
# File 'lib/arxutils_sqlite3/config.rb', line 116

def setup_db_scheme_file(mod)
  # p "config setup_db_scheme_file"
  # p "DB_SCHEME_FILE=#{DB_SCHEME_FILE}"
  # p "SAMPLE_DB_SCHEME_FILE=#{SAMPLE_DB_SCHEME_FILE}"
  scope = {}
  value_hash = { mod: mod }
  content = Ykutils::Erubyx.erubi_render_with_template_file(DB_SCHEME_FILE, scope, value_hash)
  # Ykxutils.yaml_load_compati(content)
  File.write(SAMPLE_DB_SCHEME_FILE, content)
end

#setup_for_db_log_path(dbconfig) ⇒ Object

DBログファイルの作成



255
256
257
258
# File 'lib/arxutils_sqlite3/config.rb', line 255

def setup_for_db_log_path(dbconfig)
  # DBログファイルへのパス
  Arxutils_Sqlite3::Util.make_log_path(db_dir, dbconfig)
end

#setup_for_dbconfig_path(dbconfig) ⇒ Object

DB構成ファイルの作成



261
262
263
264
# File 'lib/arxutils_sqlite3/config.rb', line 261

def setup_for_dbconfig_path(dbconfig)
  # DB構成ファイル名
  Arxutils_Sqlite3::Util.make_dbconfig_path(config_dir, dbconfig)
end

#setup_opts_file(mod) ⇒ Object

optsファイル(Rubyスクリプトファイル)のサンプルファイル書き込み



135
136
137
138
139
140
# File 'lib/arxutils_sqlite3/config.rb', line 135

def setup_opts_file(mod)
  scope = Object.new
  hash = { mod_name: mod }
  result_content = Ykutils::Erubyx.erubi_render_with_template_file(OPTS_FILE, scope, hash)
  File.write(SAMPLE_OPTS_FILE, result_content)
end

#setup_setting_yaml_file(mod) ⇒ Object

setting.ymlへの出力



152
153
154
155
156
157
158
159
160
161
162
# File 'lib/arxutils_sqlite3/config.rb', line 152

def setup_setting_yaml_file(mod)
  hash = { mod: mod }
  content = YAML.dump(hash)
  ret = :SUCCESS
  begin
    File.write(SETTING_YAML_FILE, content)
  rescue StandardError
    ret = :StandardError
  end
  ret
end

#setupx(toplevel) ⇒ Object



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/arxutils_sqlite3/config.rb', line 80

def setupx(toplevel)
  require_opts_file

  opts = toplevel.instance_variable_get(:@opts) || {}

  acrecord = opts[:acrecord]
  if acrecord
    filename = acrecord[:filename]
    basename = File.basename(filename)

    begin
      require basename.to_s
    rescue LoadError
      # pp ex.message
    end
  end
  opts[:db_dir] = Arxutils_Sqlite3::Config::DB_DIR

  setting = load_setting_yaml_file
  # p "setting=#{setting}"
  mod = setting[:mod]
  mod ||= DEFAULT_MOD

  # DBセットアップクラス
  require_dbsetup_file

  [opts, mod]
end

#src_dbsetup_fileObject

変換先Dbsetupクラス定義のRubyスクリプトファイルへのパス



245
246
247
# File 'lib/arxutils_sqlite3/config.rb', line 245

def src_dbsetup_file
  DBSETUP_FILE
end

#template_acrecord_dirObject

リレーションテンプレートディレクトリへのパス



235
236
237
# File 'lib/arxutils_sqlite3/config.rb', line 235

def template_acrecord_dir
  TEMPLATE_ACRECORD_DIR
end

#template_config_dirObject

テンプレートディレクトリへのパス



240
241
242
# File 'lib/arxutils_sqlite3/config.rb', line 240

def template_config_dir
  TEMPLATE_CONFIG_DIR
end