Class: DataExporter::Configuration
- Inherits:
-
Object
- Object
- DataExporter::Configuration
- Defined in:
- lib/data_exporter/configuration.rb
Constant Summary collapse
- ALLOWED_OVERRIDES =
%w(mode export_dir download_dir unpack_dir pii_file csv)
Instance Method Summary collapse
- #archive_base_directory ⇒ Object
- #backup_dir ⇒ Object
- #backup_key ⇒ Object
- #backup_prefix ⇒ Object
- #csv_enabled? ⇒ Boolean
- #database ⇒ Object (also: #mysql)
- #database=(h = {}) ⇒ Object
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #load(options = {}) ⇒ Object
- #mode ⇒ Object
- #mysqldump_options ⇒ Object
- #mysqldump_path ⇒ Object
- #pii_fields(table) ⇒ Object
- #pii_file ⇒ Object
- #redis ⇒ Object
- #reset! ⇒ Object
- #s3 ⇒ Object
- #sftp ⇒ Object
- #sftp_enabled? ⇒ Boolean
- #validate!(options = {}) ⇒ Object
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
9 10 11 |
# File 'lib/data_exporter/configuration.rb', line 9 def initialize reset! end |
Instance Method Details
#archive_base_directory ⇒ Object
80 81 82 |
# File 'lib/data_exporter/configuration.rb', line 80 def archive_base_directory @sections[mode].fetch(:archive_base_directory, 'data_exporter') end |
#backup_dir ⇒ Object
68 69 70 |
# File 'lib/data_exporter/configuration.rb', line 68 def backup_dir @sections[mode][:backup_dir] end |
#backup_key ⇒ Object
72 73 74 |
# File 'lib/data_exporter/configuration.rb', line 72 def backup_key absolute_config_path(@sections[mode][:backup_key]) end |
#backup_prefix ⇒ Object
76 77 78 |
# File 'lib/data_exporter/configuration.rb', line 76 def backup_prefix @sections[mode][:backup_prefix] || @sections[mode][:s3][:prefix] end |
#csv_enabled? ⇒ Boolean
94 95 96 |
# File 'lib/data_exporter/configuration.rb', line 94 def csv_enabled? @override[:csv] || @sections[mode][:export_csv] end |
#database ⇒ Object Also known as: mysql
24 25 26 27 |
# File 'lib/data_exporter/configuration.rb', line 24 def database @sections[mode][:mysql] ||= HashWithIndifferentAccess.new @sections[mode][:mysql] end |
#database=(h = {}) ⇒ Object
19 20 21 22 |
# File 'lib/data_exporter/configuration.rb', line 19 def database=(h = {}) @sections[mode][:mysql] ||= HashWithIndifferentAccess.new @sections[mode][:mysql].merge!(h) end |
#load(options = {}) ⇒ Object
102 103 104 105 106 107 108 |
# File 'lib/data_exporter/configuration.rb', line 102 def load( = {}) @config_file = [:config_file] @override.merge!(.select { |k,_| ALLOWED_OVERRIDES.include?(k.to_sym) || ALLOWED_OVERRIDES.include?(k.to_s) }) process_configuration(load_yaml_file(@config_file)) validate!() self end |
#mode ⇒ Object
58 59 60 |
# File 'lib/data_exporter/configuration.rb', line 58 def mode @override.fetch(:mode, :default) end |
#mysqldump_options ⇒ Object
34 35 36 |
# File 'lib/data_exporter/configuration.rb', line 34 def @sections[mode].fetch(:mysqldump_options, '').split(/\s+/).compact end |
#mysqldump_path ⇒ Object
30 31 32 |
# File 'lib/data_exporter/configuration.rb', line 30 def mysqldump_path @sections[mode].fetch(:mysqldump_path, 'mysqldump') end |
#pii_fields(table) ⇒ Object
88 89 90 91 92 |
# File 'lib/data_exporter/configuration.rb', line 88 def pii_fields(table) return [] unless pii_file @pii_data ||= load_yaml_file(pii_file) @pii_data.fetch(table, []).map(&:to_s) end |
#pii_file ⇒ Object
84 85 86 |
# File 'lib/data_exporter/configuration.rb', line 84 def pii_file @override[:pii_file] || @sections[mode][:pii_file] end |
#redis ⇒ Object
53 54 55 56 |
# File 'lib/data_exporter/configuration.rb', line 53 def redis @sections[mode][:redis] ||= HashWithIndifferentAccess.new @sections[mode][:redis] end |
#reset! ⇒ Object
13 14 15 16 17 |
# File 'lib/data_exporter/configuration.rb', line 13 def reset! @config_file = nil @override = HashWithIndifferentAccess.new @sections = HashWithIndifferentAccess.new { |h,k| h[k] = HashWithIndifferentAccess.new } end |
#s3 ⇒ Object
38 39 40 41 42 43 44 |
# File 'lib/data_exporter/configuration.rb', line 38 def s3 @sections[mode][:s3] ||= HashWithIndifferentAccess.new @sections[mode][:s3].tap do |s3| s3[:bucket_name].sub!(%r{\As3://}, '') if s3[:bucket_name] s3[:bucket] = s3[:bucket_name] end end |
#sftp ⇒ Object
46 47 48 49 50 51 |
# File 'lib/data_exporter/configuration.rb', line 46 def sftp @sections[mode][:sftp] ||= HashWithIndifferentAccess.new @sections[mode][:sftp].tap do |sftp| sftp[:user] ||= ENV['USER'] end end |
#sftp_enabled? ⇒ Boolean
98 99 100 |
# File 'lib/data_exporter/configuration.rb', line 98 def sftp_enabled? sftp && sftp[:host] && sftp[:user] end |
#validate!(options = {}) ⇒ Object
110 111 112 113 114 |
# File 'lib/data_exporter/configuration.rb', line 110 def validate!( = {}) raise ArgumentError, "#{@config_file} missing s3 section" unless s3_config_complete? unless sftp_enabled? raise ArgumentError, "#{@config_file} missing mysql section" unless database_config_complete? if [:mysql_required] raise ArgumentError, "#{@config_file} missing redis section" unless redis_config_complete? if [:redis_key_prefix] end |