Class: DataShift::Configuration
- Inherits:
-
Object
- Object
- DataShift::Configuration
- Defined in:
- lib/datashift/configuration.rb
Direct Known Subclasses
Class Attribute Summary collapse
-
.configuration ⇒ Object
writeonly
Sets the attribute configuration.
Instance Attribute Summary collapse
-
#dummy_run ⇒ Boolean
Do everything except commit changes.
-
#exclude ⇒ Array<#call>
When calling the export with associations methods the default is to include ALL all association TYPES as defined by ModelMethod.supported_types_enum.
-
#exclude_associations ⇒ Array<#call>
When importing/exporting associations default is to include ALL associations of included TYPES.
-
#expand_associations ⇒ Boolean
Expand association data into multiple columns.
-
#force_inclusion_of_columns ⇒ Array
List of external columns that do not map to any operator but should be included in processing.
-
#include_all_columns ⇒ Boolean
All external columns should be included in processing whether or not they automatically map to an operator.
-
#mandatory ⇒ Array<#call>
List of headers/columns that are Mandatory i.e must be present in the inbound data.
- #remove_columns ⇒ Array<#call>
-
#remove_rails ⇒ Boolean
Default is false - i.e id, created_at etc are included by default.
-
#strict ⇒ Boolean
When performing import, default is to ignore any columns that cannot be mapped (via headers) To raise an error set strict => true Defaults to
false. -
#update_and_validate ⇒ Boolean
When performing writes use update methods that write immediately to DB and use validations.
-
#verbose ⇒ Boolean
Controls the amount of information written to the log Defaults to
false. -
#with ⇒ Array<#call>
List of association
TYPESto INCLUDE [:assignment, :enum, :belongs_to, :has_one, :has_many, :method] Defaults to [:assignment, :enum].
Class Method Summary collapse
-
.call ⇒ DataShift::Configuration
DataShift’s current configuration.
-
.configure {|config| ... } ⇒ Object
Modify DataShift’s current configuration “‘ DataShift::Configuration.call do |config| config.verbose = false end “`.
-
.from_hash(options) ⇒ Object
Modify DataShift’s current Export configuration from an options hash.
- .rails_columns ⇒ Object
- .reset ⇒ Object
Instance Method Summary collapse
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #op_type_in_scope?(model_method) ⇒ Boolean
-
#op_types_in_scope ⇒ Object
Prepare the operators types in scope based on number of configuration attributes Default is assignment only.
-
#prep_remove_list ⇒ Object
Take options and create a list of symbols to remove from headers.
- #with_all? ⇒ Boolean
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/datashift/configuration.rb', line 124 def initialize @with = [:assignment, :enum] @exclude = [] @remove_columns = [] @strict = false @verbose = false @dummy_run = false @force_inclusion_of_columns = [] @exclude_associations = [] = false # default to more efficient attribute writing - no write to DB/no validations run @update_and_validate = false end |
Class Attribute Details
.configuration=(value) ⇒ Object (writeonly)
Sets the attribute configuration
153 154 155 |
# File 'lib/datashift/configuration.rb', line 153 def configuration=(value) @configuration = value end |
Instance Attribute Details
#dummy_run ⇒ Boolean
Do everything except commit changes. For import save will not be called on the final object Defaults to false. Set to true to cause extensive progress messages to be logged
82 83 84 |
# File 'lib/datashift/configuration.rb', line 82 def dummy_run @dummy_run end |
#exclude ⇒ Array<#call>
When calling the export with associations methods the default is to include ALL all association TYPES as defined by
ModelMethod.supported_types_enum
This can be used to reduce this down to only export specific types
31 32 33 |
# File 'lib/datashift/configuration.rb', line 31 def exclude @exclude end |
#exclude_associations ⇒ Array<#call>
When importing/exporting associations default is to include ALL associations of included TYPES
Specify associations by name to remove
98 99 100 |
# File 'lib/datashift/configuration.rb', line 98 def exclude_associations @exclude_associations end |
#expand_associations ⇒ Boolean
Expand association data into multiple columns
89 90 91 |
# File 'lib/datashift/configuration.rb', line 89 def end |
#force_inclusion_of_columns ⇒ Array
List of external columns that do not map to any operator but should be included in processing.
Example use cases
Provides the opportunity for loaders to provide specific methods to handle columns
that do not map directly to a model's operators or associations
Enable handling delegated methods i.e no direct association but method is on a model through it's delegate
111 112 113 |
# File 'lib/datashift/configuration.rb', line 111 def force_inclusion_of_columns @force_inclusion_of_columns end |
#include_all_columns ⇒ Boolean
All external columns should be included in processing whether or not they automatically map to an operator
118 119 120 |
# File 'lib/datashift/configuration.rb', line 118 def include_all_columns @include_all_columns end |
#mandatory ⇒ Array<#call>
List of headers/columns that are Mandatory i.e must be present in the inbound data
43 44 45 |
# File 'lib/datashift/configuration.rb', line 43 def mandatory @mandatory end |
#remove_columns ⇒ Array<#call>
36 37 38 |
# File 'lib/datashift/configuration.rb', line 36 def remove_columns @remove_columns end |
#remove_rails ⇒ Boolean
Default is false - i.e id, created_at etc are included by default
49 50 51 |
# File 'lib/datashift/configuration.rb', line 49 def remove_rails @remove_rails end |
#strict ⇒ Boolean
When performing import, default is to ignore any columns that cannot be mapped (via headers) To raise an error set strict => true Defaults to false. Set to true to cause exceptions to be thrown The setting is ignored if routes are disabled.
57 58 59 |
# File 'lib/datashift/configuration.rb', line 57 def strict @strict end |
#update_and_validate ⇒ Boolean
When performing writes use update methods that write immediately to DB and use validations.
Validations can ensure business logic but this can be far less efficient as writes to DB once per column
To raise an error set strict => true Default is to use more efficient but less strict attribute writing, no write to DB/No validations run
69 70 71 |
# File 'lib/datashift/configuration.rb', line 69 def update_and_validate @update_and_validate end |
#verbose ⇒ Boolean
Controls the amount of information written to the log Defaults to false. Set to true to cause extensive progress messages to be logged
75 76 77 |
# File 'lib/datashift/configuration.rb', line 75 def verbose @verbose end |
#with ⇒ Array<#call>
List of association TYPES to INCLUDE [:assignment, :enum, :belongs_to, :has_one, :has_many, :method] Defaults to [:assignment, :enum]
20 21 22 |
# File 'lib/datashift/configuration.rb', line 20 def with @with end |
Class Method Details
.call ⇒ DataShift::Configuration
Returns DataShift’s current configuration.
142 143 144 |
# File 'lib/datashift/configuration.rb', line 142 def self.call @configuration ||= Configuration.new end |
.configure {|config| ... } ⇒ Object
Modify DataShift’s current configuration “‘ DataShift::Configuration.call do |config|
config.verbose = false
end “‘
163 164 165 |
# File 'lib/datashift/configuration.rb', line 163 def self.configure yield call end |
.from_hash(options) ⇒ Object
Modify DataShift’s current Export configuration from an options hash
213 214 215 216 217 218 219 |
# File 'lib/datashift/configuration.rb', line 213 def self.from_hash( ) DataShift::Configuration.configure do |config| .each do |key, value| config.send("#{key}=", value) if(config.respond_to?(key)) end end end |
.rails_columns ⇒ Object
120 121 122 |
# File 'lib/datashift/configuration.rb', line 120 def self.rails_columns @rails_standard_columns ||= [:id, :created_at, :created_on, :updated_at, :updated_on] end |
.reset ⇒ Object
146 147 148 |
# File 'lib/datashift/configuration.rb', line 146 def self.reset @configuration = Configuration.new end |
Instance Method Details
#op_type_in_scope?(model_method) ⇒ Boolean
191 192 193 |
# File 'lib/datashift/configuration.rb', line 191 def op_type_in_scope?( model_method ) op_types_in_scope.include? model_method.operator_type end |
#op_types_in_scope ⇒ Object
Prepare the operators types in scope based on number of configuration attributes Default is assignment only
Responds to Configuration params :
with: [:assignment, :enum, :belongs_to, :has_one, :has_many, :method]
with: :all -> all op types
exclude: - Remove any of [::assignment, :enum, :belongs_to, :has_one, :has_many, :method]
178 179 180 181 182 183 184 185 186 187 188 189 |
# File 'lib/datashift/configuration.rb', line 178 def op_types_in_scope types_in_scope = if with_all? ModelMethod.supported_types_enum.dup else [*@with].dup end types_in_scope -= [*@exclude] types_in_scope end |
#prep_remove_list ⇒ Object
Take options and create a list of symbols to remove from headers
Rails columns like id, created_at etc are included by default Specify option :remove_rails to remove them from output
204 205 206 207 208 209 210 |
# File 'lib/datashift/configuration.rb', line 204 def prep_remove_list remove_list = [*remove_columns].compact.collect { |x| x.to_s.downcase.to_sym } remove_list += DataShift::Configuration.rails_columns if remove_rails remove_list end |
#with_all? ⇒ Boolean
195 196 197 |
# File 'lib/datashift/configuration.rb', line 195 def with_all? [*@with].include?(:all) end |