db_meta 0.2.7 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +5 -5
  2. data/.ruby-version +1 -0
  3. data/.travis.yml +33 -10
  4. data/.travis/oracle/download.sh +14 -0
  5. data/.travis/oracle/install.sh +32 -0
  6. data/.travis/setup_accounts.sh +8 -0
  7. data/CHANGELOG.md +62 -24
  8. data/Gemfile +1 -1
  9. data/Gemfile.lock +48 -19
  10. data/README.md +2 -1
  11. data/Rakefile +2 -1
  12. data/db_meta.gemspec +17 -16
  13. data/docker/README.md +42 -0
  14. data/lib/db_meta.rb +10 -14
  15. data/lib/db_meta/abstract.rb +11 -21
  16. data/lib/db_meta/constant.rb +23 -25
  17. data/lib/db_meta/logger.rb +4 -7
  18. data/lib/db_meta/oracle/base.rb +9 -11
  19. data/lib/db_meta/oracle/connection.rb +3 -4
  20. data/lib/db_meta/oracle/helper.rb +7 -9
  21. data/lib/db_meta/oracle/objects.rb +45 -45
  22. data/lib/db_meta/oracle/oracle.rb +34 -30
  23. data/lib/db_meta/oracle/types/column.rb +15 -17
  24. data/lib/db_meta/oracle/types/comment.rb +2 -5
  25. data/lib/db_meta/oracle/types/constraint.rb +29 -32
  26. data/lib/db_meta/oracle/types/constraint_collection.rb +4 -6
  27. data/lib/db_meta/oracle/types/database_link.rb +4 -5
  28. data/lib/db_meta/oracle/types/function.rb +4 -5
  29. data/lib/db_meta/oracle/types/grant.rb +9 -10
  30. data/lib/db_meta/oracle/types/grant_collection.rb +4 -6
  31. data/lib/db_meta/oracle/types/index.rb +14 -8
  32. data/lib/db_meta/oracle/types/job.rb +2 -3
  33. data/lib/db_meta/oracle/types/lob.rb +2 -3
  34. data/lib/db_meta/oracle/types/materialized_view.rb +15 -18
  35. data/lib/db_meta/oracle/types/package.rb +7 -8
  36. data/lib/db_meta/oracle/types/package_body.rb +2 -3
  37. data/lib/db_meta/oracle/types/procedure.rb +4 -5
  38. data/lib/db_meta/oracle/types/queue.rb +24 -26
  39. data/lib/db_meta/oracle/types/sequence.rb +7 -8
  40. data/lib/db_meta/oracle/types/synonym.rb +6 -7
  41. data/lib/db_meta/oracle/types/synonym_collection.rb +4 -6
  42. data/lib/db_meta/oracle/types/table.rb +32 -35
  43. data/lib/db_meta/oracle/types/table_data_collection.rb +24 -19
  44. data/lib/db_meta/oracle/types/trigger.rb +12 -14
  45. data/lib/db_meta/oracle/types/type.rb +6 -7
  46. data/lib/db_meta/oracle/types/type_body.rb +2 -3
  47. data/lib/db_meta/oracle/types/view.rb +12 -14
  48. data/lib/db_meta/version.rb +1 -1
  49. data/todo.txt +1 -0
  50. metadata +33 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 96c4e6b607426ad5fce51d2c2a56c86b20ec8c52
4
- data.tar.gz: 954e65f70173e1e407b399361ca3b699ccf33565
2
+ SHA256:
3
+ metadata.gz: 3bb752e54793946b7bcd874d25439d559f4d400e7f5c2b30da635513ba05c2c4
4
+ data.tar.gz: fea95107d75504c47ec7df81aad4ea87c7eb919d99263e4acaf36fafedbaf197
5
5
  SHA512:
6
- metadata.gz: 7793e2ab54ac3da1dea4486dc297bc1214c83916243a8014a3580ff2c22d00f12254fe96592c609c4ea7436fe98f35fadf6021e5553097e39e1ed62406a29c2b
7
- data.tar.gz: 384bc9781a0dfab55a26252bf7263a0f7edd4ccf07adf11454eee62c0e4c75a59fdf5e81ca941eed07586992a8b1c45909d6038c843dd8e1b4450ef76a9a2adc
6
+ metadata.gz: 7282a69c1008c4eecb4975edd5d7699e0c5a2e8246ef70a8b98ad8b0bb424a0807657df876f20d406a53e106e3bc42ac2db492b7530c4d5edc22ef23f22341e4
7
+ data.tar.gz: 66e54866798847a1de4f46741ececf9cf797fdaecb9ee46ce2fd65b92452c1e019e1f9c9858c21eb0515ad733d3bd2282240cfc69d3d54206f020d2ca9b80ff6
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.6
data/.travis.yml CHANGED
@@ -1,12 +1,35 @@
1
+ sudo: required
2
+
3
+ env:
4
+ global:
5
+ - ORACLE_COOKIE=sqldev
6
+ - ORACLE_FILE=oracle11g/xe/oracle-xe-11.2.0-1.0.x86_64.rpm.zip
7
+ - ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
8
+ - NLS_LANG=AMERICAN_AMERICA.AL32UTF8
9
+ - ORACLE_BASE=/u01/app/oracle
10
+ - LD_LIBRARY_PATH=$ORACLE_HOME/lib
11
+ - PATH=$PATH:$ORACLE_HOME/jdbc/lib
12
+ - DATABASE_VERSION=11.2.0.2
13
+ - ORACLE_SID=XE
14
+ - DATABASE_NAME=XE
15
+ - ORA_SDTZ='Europe/London' # Needed as a client parameter
16
+ - TZ='Europe/London' # Needed as a DB Server parameter
17
+
18
+ before_install:
19
+ - chmod +x .travis/oracle/download.sh
20
+ - chmod +x .travis/oracle/install.sh
21
+ - chmod +x .travis/setup_accounts.sh
22
+ - gem install bundler --version '~> 2.1.4'
23
+
24
+ install:
25
+ - .travis/oracle/download.sh
26
+ - .travis/oracle/install.sh
27
+ - .travis/setup_accounts.sh
28
+ - bundle install
29
+
1
30
  language: ruby
2
- os:
3
- - linux
4
- - osx
5
- osx_image: xcode9.1
6
31
  rvm:
7
- - 2.4.2
8
- - 2.4.1
9
- - 2.3.1
10
- - 2.1.5
11
- before_install:
12
- - gem install bundler --version '~> 1.16.0'
32
+ - 3.0.0
33
+ - 2.7.2
34
+ - 2.6.6
35
+ - 2.5.8
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bash
2
+
3
+ cd "$(dirname "$(readlink -f "$0")")"
4
+
5
+ deb_file=oracle-xe_11.2.0-1.0_amd64.deb
6
+
7
+ git clone https://github.com/wnameless/docker-oracle-xe-11g.git
8
+
9
+ cd docker-oracle-xe-11g/assets &&
10
+ cat "${deb_file}aa" "${deb_file}ab" "${deb_file}ac" > "${deb_file}"
11
+
12
+ pwd
13
+
14
+ ls -lAh "${deb_file}"
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env bash
2
+
3
+ [ -n "$ORACLE_FILE" ] || { echo "Missing ORACLE_FILE environment variable!"; exit 1; }
4
+ [ -n "$ORACLE_HOME" ] || { echo "Missing ORACLE_HOME environment variable!"; exit 1; }
5
+
6
+ cd "$(dirname "$(readlink -f "$0")")"
7
+
8
+ ORACLE_DEB=docker-oracle-xe-11g/assets/oracle-xe_11.2.0-1.0_amd64.deb
9
+
10
+ sudo apt-get -qq update
11
+ sudo apt-get --no-install-recommends -qq install bc libaio1
12
+
13
+ df -B1 /dev/shm | awk 'END { if ($1 != "shmfs" && $1 != "tmpfs" || $2 < 2147483648) exit 1 }' ||
14
+ ( sudo rm -r /dev/shm && sudo mkdir /dev/shm && sudo mount -t tmpfs shmfs -o size=2G /dev/shm )
15
+
16
+ test -f /sbin/chkconfig ||
17
+ ( echo '#!/bin/sh' | sudo tee /sbin/chkconfig > /dev/null && sudo chmod u+x /sbin/chkconfig )
18
+
19
+ test -d /var/lock/subsys || sudo mkdir /var/lock/subsys
20
+
21
+ sudo dpkg -i "${ORACLE_DEB}"
22
+
23
+ echo 'OS_AUTHENT_PREFIX=""' | sudo tee -a "$ORACLE_HOME/config/scripts/init.ora" > /dev/null
24
+ echo 'disk_asynch_io=false' | sudo tee -a "$ORACLE_HOME/config/scripts/init.ora" > /dev/null
25
+ sudo usermod -aG dba $USER
26
+
27
+ ( echo ; echo ; echo travis ; echo travis ; echo n ) | sudo AWK='/usr/bin/awk' /etc/init.d/oracle-xe configure
28
+
29
+ "$ORACLE_HOME/bin/sqlplus" -L -S / AS SYSDBA <<SQL
30
+ CREATE USER $USER IDENTIFIED EXTERNALLY;
31
+ GRANT CONNECT, RESOURCE TO $USER;
32
+ SQL
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+
3
+ set -ev
4
+
5
+ "$ORACLE_HOME/bin/sqlplus" -L -S / AS SYSDBA <<SQL
6
+ @@spec/support/unlock_and_setup_hr_user.sql
7
+ exit
8
+ SQL
data/CHANGELOG.md CHANGED
@@ -1,43 +1,81 @@
1
- ## 0.2.7 / 2018-02-27
1
+ ## [0.5.0] - 2021-02-22
2
2
 
3
- * Update ruby-oci8 gem to 2.2.5.1
4
- * Update rake gem to 12.3.0
3
+ ### Changed
4
+ - Update gem dependencies
5
+ - Number of thread settings
6
+ - Ruby style guide applied through standradrb gem
5
7
 
6
- ## 0.2.6 / 2018-02-16
8
+ ## [0.4.0] - 2020-02-28
7
9
 
8
- * Edit: Typo synonym
9
- * Edit: Used force => true when deleting a queue table
10
+ ### Changed
11
+ - Update of gem dependencies
10
12
 
11
- ## 0.2.5 / 2017-11-24
13
+ ## [0.3.1] - 2019-06-19
12
14
 
13
- * Edit: Typo max_retires => max_retries
15
+ ### Changed
16
+ - Extract table data when primary key spans over multiple columns
17
+ - Update bundler
14
18
 
15
- ## 0.2.4 / 2017-11-24
19
+ ## [0.3.0] - 2018-08-17
16
20
 
17
- * Edit: sort order: ENQUEUE_TIME => ENQ_TIME
21
+ ### Changed
22
+ - Update license
18
23
 
19
- ## 0.2.2 / 2017-11-15
24
+ ## [0.2.7] - 2018-08-17
20
25
 
21
- * Edit: create or replace for functions and procedures
26
+ ### Added
27
+ - Function based indexes
22
28
 
23
- ## 0.2.1 / 2017-11-07
29
+ ## [0.2.7] - 2018-02-27
24
30
 
25
- * Edit: Update dependencies rspec, bundler, ruby-oci8
26
- * Edit: Travis settings
31
+ ### Changed
32
+ * ruby-oci8 gem to 2.2.5.1
33
+ * rake gem to 12.3.0
27
34
 
28
- ## 0.1.3 / 2017-08-29
35
+ ## [0.2.6] - 2018-02-16
29
36
 
30
- * very early version where most of the core oracle types are supported
31
- * ability to extract core data
37
+ ### Changed
38
+ - Typo synonym
39
+ - Used force => true when deleting a queue table
32
40
 
33
- ## 0.1.2 / 2017-08-03
41
+ ## [0.2.5] - 2017-11-24
34
42
 
35
- * another very early version
43
+ ### Changed
44
+ - Typo max_retires => max_retries
36
45
 
37
- ## 0.1.1 / 2016-05-10
46
+ ## [0.2.4] - 2017-11-24
38
47
 
39
- * very early development version
48
+ ### Changed
49
+ - Sort order: ENQUEUE_TIME => ENQ_TIME
40
50
 
41
- ## 0.1.0 / 2016-05-10
51
+ ## [0.2.2] - 2017-11-15
42
52
 
43
- * initial setup
53
+ ### Changed
54
+ - create or replace for functions and procedures
55
+
56
+ ## [0.2.1] - 2017-11-07
57
+
58
+ ### Changed
59
+ - Update dependencies rspec, bundler, ruby-oci8
60
+ - Travis settings
61
+
62
+ ## [0.1.3] - 2017-08-29
63
+
64
+ ### Added
65
+ - very early version where most of the core oracle types are supported
66
+ - ability to extract core data
67
+
68
+ ## [0.1.2] - 2017-08-03
69
+
70
+ ### Added
71
+ - another very early version
72
+
73
+ ## [0.1.1] - 2016-05-10
74
+
75
+ ### Added
76
+ - very early development version
77
+
78
+ ## [0.1.0] - 2016-05-10
79
+
80
+ ### Added
81
+ - initial setup
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in db_meta.gemspec
4
4
  gemspec
data/Gemfile.lock CHANGED
@@ -1,37 +1,66 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- db_meta (0.2.7)
4
+ db_meta (0.5.0)
5
5
  ruby-oci8 (~> 2.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- diff-lcs (1.3)
11
- rake (12.3.0)
12
- rspec (3.7.0)
13
- rspec-core (~> 3.7.0)
14
- rspec-expectations (~> 3.7.0)
15
- rspec-mocks (~> 3.7.0)
16
- rspec-core (3.7.0)
17
- rspec-support (~> 3.7.0)
18
- rspec-expectations (3.7.0)
10
+ ast (2.4.2)
11
+ diff-lcs (1.4.4)
12
+ parallel (1.20.1)
13
+ parser (3.0.0.0)
14
+ ast (~> 2.4.1)
15
+ rainbow (3.0.0)
16
+ rake (13.0.3)
17
+ regexp_parser (2.0.3)
18
+ rexml (3.2.4)
19
+ rspec (3.10.0)
20
+ rspec-core (~> 3.10.0)
21
+ rspec-expectations (~> 3.10.0)
22
+ rspec-mocks (~> 3.10.0)
23
+ rspec-core (3.10.1)
24
+ rspec-support (~> 3.10.0)
25
+ rspec-expectations (3.10.1)
19
26
  diff-lcs (>= 1.2.0, < 2.0)
20
- rspec-support (~> 3.7.0)
21
- rspec-mocks (3.7.0)
27
+ rspec-support (~> 3.10.0)
28
+ rspec-mocks (3.10.2)
22
29
  diff-lcs (>= 1.2.0, < 2.0)
23
- rspec-support (~> 3.7.0)
24
- rspec-support (3.7.0)
25
- ruby-oci8 (2.2.5.1)
30
+ rspec-support (~> 3.10.0)
31
+ rspec-support (3.10.2)
32
+ rubocop (1.10.0)
33
+ parallel (~> 1.10)
34
+ parser (>= 3.0.0.0)
35
+ rainbow (>= 2.2.2, < 4.0)
36
+ regexp_parser (>= 1.8, < 3.0)
37
+ rexml
38
+ rubocop-ast (>= 1.2.0, < 2.0)
39
+ ruby-progressbar (~> 1.7)
40
+ unicode-display_width (>= 1.4.0, < 3.0)
41
+ rubocop-ast (1.4.1)
42
+ parser (>= 2.7.1.5)
43
+ rubocop-performance (1.9.2)
44
+ rubocop (>= 0.90.0, < 2.0)
45
+ rubocop-ast (>= 0.4.0)
46
+ ruby-oci8 (2.2.9)
47
+ ruby-progressbar (1.11.0)
48
+ standard (0.13.0)
49
+ rubocop (= 1.10.0)
50
+ rubocop-performance (= 1.9.2)
51
+ standardrb (1.0.0)
52
+ standard
53
+ unicode-display_width (2.0.0)
26
54
 
27
55
  PLATFORMS
28
56
  ruby
29
57
 
30
58
  DEPENDENCIES
31
- bundler (~> 1.16)
59
+ bundler (~> 2.1)
32
60
  db_meta!
33
- rake (~> 12.3)
34
- rspec (~> 3.7)
61
+ rake (~> 13.0)
62
+ rspec (~> 3.10)
63
+ standardrb (~> 1.0)
35
64
 
36
65
  BUNDLED WITH
37
- 1.16.1
66
+ 2.1.4
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/db_meta.svg)](https://badge.fury.io/rb/db_meta)
2
- [![Dependency Status](https://gemnasium.com/badges/github.com/thomis/db_meta.svg)](https://gemnasium.com/github.com/thomis/db_meta)
2
+ [![Build Status](https://travis-ci.org/thomis/db_meta.svg?branch=master)](https://travis-ci.org/thomis/db_meta)
3
3
 
4
4
  # Welcome to db_meta
5
5
  Database meta and core data extraction.
@@ -41,6 +41,7 @@ meta.extract
41
41
  - Synonym
42
42
  - Database Link
43
43
  - Queue
44
+ - Function based Indexes
44
45
  - more to come...
45
46
 
46
47
  ## Planned Features
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require "standard/rake"
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
6
- task :default => :spec
7
+ task default: [:spec, :standard]
data/db_meta.gemspec CHANGED
@@ -1,26 +1,27 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'db_meta/version'
3
+ require "db_meta/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "db_meta"
8
- spec.version = DbMeta::VERSION
9
- spec.authors = ["Thomi"]
10
- spec.email = ["thomas.steiner@ikey.ch"]
6
+ spec.name = "db_meta"
7
+ spec.version = DbMeta::VERSION
8
+ spec.license = "Apache-2.0"
9
+ spec.authors = ["Thomi"]
10
+ spec.email = ["thomas.steiner@ikey.ch"]
11
11
 
12
- spec.summary = %q{Database meta and core data extraction}
13
- spec.description = %q{Database meta and core data extraction.}
14
- spec.homepage = "https://github.com/thomis/db_meta"
12
+ spec.summary = "Database meta and core data extraction"
13
+ spec.description = "Database meta and core data extraction."
14
+ spec.homepage = "https://github.com/thomis/db_meta"
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
16
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ spec.bindir = "exe"
18
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.16"
22
- spec.add_development_dependency "rake", "~> 12.3"
23
- spec.add_development_dependency "rspec", "~> 3.7"
21
+ spec.add_development_dependency "bundler", "~> 2.1"
22
+ spec.add_development_dependency "rake", "~> 13.0"
23
+ spec.add_development_dependency "rspec", "~> 3.10"
24
+ spec.add_development_dependency "standardrb", "~> 1.0"
24
25
 
25
26
  spec.add_dependency "ruby-oci8", "~> 2.2"
26
27
  end
data/docker/README.md ADDED
@@ -0,0 +1,42 @@
1
+ Deliver Oracle Database 18c Express Edition in Containers
2
+ Read here https://blogs.oracle.com/oraclemagazine/deliver-oracle-database-18c-express-edition-in-containers
3
+
4
+ -- clone repo
5
+ git clone https://github.com/oracle/docker-images.git
6
+
7
+ -- download installation binary
8
+ Download one zip file for xe edition from here: https://www.oracle.com/technical-resources/
9
+ Copy zip file to docker-images/OracleDatabase/SingleInstance/dockerfiles/18.4.0 folder
10
+
11
+ -- build image
12
+ ./buildDockerImage.sh -v 18.4.0 -x
13
+
14
+ -- create a container
15
+ docker run --name dbmeta \
16
+ -d \
17
+ -p 51521:1521 \
18
+ -p 55500:5500 \
19
+ -e ORACLE_PWD=secure \
20
+ -e ORACLE_CHARACTERSET=AL32UTF8 \
21
+ oracle/database:18.4.0-xe
22
+
23
+
24
+ -- connect as sysdba
25
+ sqlplus sys/secure@dbmeta as sysdba
26
+
27
+ -- create user guest
28
+ CREATE USER guest identified by guest;
29
+
30
+ ALTER USER guest quota unlimited on users;
31
+
32
+ -- grant privs
33
+ GRANT create session TO guest;
34
+ GRANT create table TO guest;
35
+ GRANT create view TO guest;
36
+ GRANT create any trigger TO guest;
37
+ GRANT create any procedure TO guest;
38
+ GRANT create sequence TO guest;
39
+ GRANT create synonym TO guest;
40
+
41
+
42
+ Status : Failure -Test failed: no ocijdbc19 in java.library.path: [/Users/steinth6/Library/Java/Extensions, /Library/Java/Extensions, /Network/Library/Java/Extensions, /System/Library/Java/Extensions, /usr/lib/java, .]
data/lib/db_meta.rb CHANGED
@@ -1,25 +1,23 @@
1
- require_relative 'db_meta/version'
2
- require_relative 'db_meta/constant'
3
- require_relative 'db_meta/logger'
1
+ require_relative "db_meta/version"
2
+ require_relative "db_meta/constant"
3
+ require_relative "db_meta/logger"
4
4
 
5
- require_relative 'db_meta/abstract'
6
- require_relative 'db_meta/oracle/oracle'
5
+ require_relative "db_meta/abstract"
6
+ require_relative "db_meta/oracle/oracle"
7
7
 
8
- Log = Logger.new(STDOUT)
8
+ Log = Logger.new($stdout)
9
9
 
10
10
  module DbMeta
11
-
12
11
  DATABASE_TYPES = [:oracle]
13
12
 
14
13
  class DbMeta
15
-
16
- def initialize(args={})
14
+ def initialize(args = {})
17
15
  @database_type = args[:database_type] || DATABASE_TYPES[0]
18
- raise "allowed database types are [#{DATABASE_TYPES.join(', ')}], but provided was [#{@database_type}]" unless DATABASE_TYPES.include?(@database_type)
16
+ raise "allowed database types are [#{DATABASE_TYPES.join(", ")}], but provided was [#{@database_type}]" unless DATABASE_TYPES.include?(@database_type)
19
17
  @abstract = Abstract.from_type(@database_type, args)
20
18
  end
21
19
 
22
- def fetch(args={})
20
+ def fetch(args = {})
23
21
  Log.info("Fetching...")
24
22
  @abstract.fetch(args)
25
23
  Log.info("Fetch completed")
@@ -27,14 +25,12 @@ module DbMeta
27
25
  Log.error(e.to_s)
28
26
  end
29
27
 
30
- def extract(args={})
28
+ def extract(args = {})
31
29
  Log.info("Extracting...")
32
30
  @abstract.extract(args)
33
31
  Log.info("Extraction completed")
34
32
  rescue => e
35
33
  Log.error(e.to_s)
36
34
  end
37
-
38
35
  end
39
-
40
36
  end