redash_exporter 0.2.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 737f047c800fcf2a4ddef570240e665ddf925605ecd216d7c27de59499b89c41
4
- data.tar.gz: f7a0bb91f8b5f1d49d4f48ce1d3a5749d671b38496314440e405473f1930ed70
3
+ metadata.gz: 9df27c1739f533ddd0180af3c1147d81de24e1a19ed2ef72823fbafe537aad01
4
+ data.tar.gz: 0f6c00ae307b88fe96c2b7335d6ab3d90926b703028c5617b0b7008f2dc08172
5
5
  SHA512:
6
- metadata.gz: f741e0b0c0bf0cf5e5e085b6af55f2815afca8243220bb3f981f6b18637769e27e0fe89282063bd54ec1d8165678473dd048fbf324c85765b64ea036cc8af810
7
- data.tar.gz: 02caec93eeeb6a7df11df2254f48844e3bfde1e1ccce30d1e74ffc2e61e18e250815da003a82e73a75d5b1f29b2c4bee53b09a5f542d33f9e11d83d41d0fdc9f
6
+ metadata.gz: 459db10a244e260a466ddd3c33ddcec5d5158fca5c7a4919e70f51cdf91ed6763da87704baf72e6bea94ec5cbdf4e038eb778e1d4a474c63596ae427da90e86f
7
+ data.tar.gz: 0a0660d9d9bae7edd4abfe652514f2735cad7bfa3d6f21c8d0b0cc6f0afe46c8d63e9a996693cf422c8748bf81272b179ca2f2a9b8592453c6bca1db2829bc1b
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  .rspec_status
13
13
  .byebug_history
14
14
  *.sql
15
+ tags
data/.rubocop.yml ADDED
@@ -0,0 +1,25 @@
1
+ Style/AsciiComments:
2
+ Enabled: false
3
+
4
+ Style/Documentation:
5
+ Enabled: false
6
+
7
+ Style/ClassVars:
8
+ Enabled: false
9
+
10
+ Style/FrozenStringLiteralComment:
11
+ Exclude:
12
+ - 'exe/**/*'
13
+
14
+ Style/StringLiterals:
15
+ Enabled: false
16
+
17
+ Metrics/BlockLength:
18
+ Exclude:
19
+ - 'spec/**/*'
20
+
21
+ Metrics/LineLength:
22
+ Max: 120
23
+
24
+ Metrics/MethodLength:
25
+ Max: 20
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.6.3
data/.travis.yml CHANGED
@@ -3,5 +3,7 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.6.0
7
- before_install: gem install bundler -v 2.0.0
6
+ - 2.6.3
7
+ script:
8
+ - bundle exec rubocop
9
+ - bundle exec rspec
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- # Specify your gem's dependencies in redash_exporter.gemspec
3
+ source "https://rubygems.org"
4
4
  gemspec
5
+ gem "coveralls", require: false
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- redash_exporter (0.2.0)
5
- activesupport
6
- zaru
4
+ redash_exporter (0.3.0)
5
+ activesupport (~> 5.2.3)
6
+ zaru (~> 0.1.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
@@ -13,12 +13,27 @@ GEM
13
13
  i18n (>= 0.7, < 2)
14
14
  minitest (~> 5.1)
15
15
  tzinfo (~> 1.1)
16
+ ast (2.4.0)
16
17
  byebug (11.0.1)
17
18
  concurrent-ruby (1.1.5)
19
+ coveralls (0.8.22)
20
+ json (>= 1.8, < 3)
21
+ simplecov (~> 0.16.1)
22
+ term-ansicolor (~> 1.3)
23
+ thor (~> 0.19.4)
24
+ tins (~> 1.6)
18
25
  diff-lcs (1.3)
26
+ docile (1.3.1)
19
27
  i18n (1.6.0)
20
28
  concurrent-ruby (~> 1.0)
29
+ jaro_winkler (1.5.2)
30
+ json (2.2.0)
21
31
  minitest (5.11.3)
32
+ parallel (1.17.0)
33
+ parser (2.6.2.1)
34
+ ast (~> 2.4.0)
35
+ psych (3.1.0)
36
+ rainbow (3.0.0)
22
37
  rake (10.5.0)
23
38
  rspec (3.8.0)
24
39
  rspec-core (~> 3.8.0)
@@ -33,20 +48,41 @@ GEM
33
48
  diff-lcs (>= 1.2.0, < 2.0)
34
49
  rspec-support (~> 3.8.0)
35
50
  rspec-support (3.8.0)
51
+ rubocop (0.67.2)
52
+ jaro_winkler (~> 1.5.1)
53
+ parallel (~> 1.10)
54
+ parser (>= 2.5, != 2.5.1.1)
55
+ psych (>= 3.1.0)
56
+ rainbow (>= 2.2.2, < 4.0)
57
+ ruby-progressbar (~> 1.7)
58
+ unicode-display_width (>= 1.4.0, < 1.6)
59
+ ruby-progressbar (1.10.0)
60
+ simplecov (0.16.1)
61
+ docile (~> 1.1)
62
+ json (>= 1.8, < 3)
63
+ simplecov-html (~> 0.10.0)
64
+ simplecov-html (0.10.2)
65
+ term-ansicolor (1.7.1)
66
+ tins (~> 1.0)
67
+ thor (0.19.4)
36
68
  thread_safe (0.3.6)
69
+ tins (1.20.2)
37
70
  tzinfo (1.2.5)
38
71
  thread_safe (~> 0.1)
39
- zaru (0.3.0)
72
+ unicode-display_width (1.5.0)
73
+ zaru (0.1.0)
40
74
 
41
75
  PLATFORMS
42
76
  ruby
43
77
 
44
78
  DEPENDENCIES
45
- bundler (~> 2.0)
46
- byebug
79
+ bundler
80
+ byebug (~> 11.0.1)
81
+ coveralls
47
82
  rake (~> 10.0)
48
83
  redash_exporter!
49
84
  rspec (~> 3.0)
85
+ rubocop (~> 0.67.2)
50
86
 
51
87
  BUNDLED WITH
52
- 2.0.0
88
+ 1.17.2
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/redash_exporter.svg)](https://badge.fury.io/rb/redash_exporter)
2
+ [![Build Status](https://travis-ci.org/oieioi/redash_exporter.svg?branch=master)](https://travis-ci.org/oieioi/redash_exporter)
3
+ [![Coverage Status](https://coveralls.io/repos/github/oieioi/redash_exporter/badge.svg?branch=master)](https://coveralls.io/github/oieioi/redash_exporter?branch=master)
2
4
 
3
5
  # RedashExporter
4
6
 
@@ -26,9 +28,9 @@ Shell
26
28
 
27
29
  $ redash_exporter --redash-url "http://your-redash-domain.example/<slug>" --api-key="your_api_key"
28
30
 
29
- With destination path
31
+ With destination path and force to overwrite existed files
30
32
 
31
- $ redash_exporter --redash-url "http://your-redash-domain.example/<slug>" --api-key="your_api_key" --dest=destination_directory
33
+ $ redash_exporter --redash-url "http://your-redash-domain.example/<slug>" --api-key="your_api_key" --dest=destination_directory --overwrite
32
34
 
33
35
  in Ruby Script
34
36
 
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rspec/core/rake_task"
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require "bundler/setup"
4
5
  require "redash_exporter"
data/exe/redash_exporter CHANGED
@@ -3,7 +3,28 @@
3
3
  require 'redash_exporter'
4
4
  require 'optparse'
5
5
 
6
- params = ARGV.getopts('', 'redash-url:', 'api-key:', "dest:#{Dir.pwd}")
6
+ params = ARGV.getopts('',
7
+ 'redash-url:',
8
+ 'api-key:',
9
+ "dest:#{Dir.pwd}",
10
+ "overwrite",
11
+ "version")
12
+
13
+ if params['version']
14
+ puts RedashExporter::VERSION
15
+ return
16
+ end
17
+
18
+ if params['redash-url'].nil?
19
+ puts "--redash-url required!"
20
+ return
21
+ end
22
+
23
+ if params['api-key'].nil?
24
+ puts "--api-key required!"
25
+ return
26
+ end
27
+
7
28
  queries = RedashExporter::Queries.new(params['redash-url'], params['api-key'], params['dest'])
8
29
  queries.fetch
9
- queries.export_all
30
+ queries.export_all(force: params['overwrite'])
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "redash_exporter/version"
2
4
  require "redash_exporter/queries"
3
5
 
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RedashExporter
4
+ module Exporter
5
+ module_function
6
+
7
+ # Export a file.
8
+ #
9
+ # @param file_path [String]
10
+ # @param content [String]
11
+ # @param option [Hash] force: force to overwrite file. default false.
12
+ def export(file_path, content, option = {})
13
+ unless should_overwrite?(file_path, option)
14
+ puts "Not create #{file_path}."
15
+ return
16
+ end
17
+
18
+ File.open(file_path, 'w') do |file|
19
+ file.print content
20
+ end
21
+ end
22
+
23
+ def should_overwrite?(path, option = {})
24
+ return true if option[:force]
25
+ return true unless File.exist?(path)
26
+
27
+ puts "Overwrite #{path}? [yes(y), no(n)]"
28
+ should_overwrite = %w[yes y].include?(STDIN.gets.strip)
29
+
30
+ should_overwrite
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,59 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'net/https'
4
+ require 'json'
5
+
6
+ module RedashExporter
7
+ class Fetcher
8
+ def initialize(url, api_key, params = {})
9
+ @url = url.gsub(%r{/$}, '')
10
+ @api_key = api_key
11
+ @params = params
12
+ end
13
+
14
+ def fetch
15
+ result = []
16
+ has_more = true
17
+
18
+ while has_more
19
+ body = request("#{@url}?#{@params.to_param}")
20
+
21
+ # old web API returns all queries as an array
22
+ return body if body.is_a?(Array)
23
+
24
+ # new web API
25
+ result.push(*body[:results])
26
+
27
+ has_more = @params[:page].present? && result.size < body[:count]
28
+
29
+ # wait for next request
30
+ if has_more
31
+ @params[:page] += 1
32
+ sleep 0.5
33
+ end
34
+ end
35
+
36
+ result
37
+ end
38
+
39
+ private
40
+
41
+ def request(url)
42
+ uri = URI.parse(url)
43
+ http = Net::HTTP.new(uri.host, uri.port)
44
+ http.use_ssl = uri.scheme == 'https'
45
+ req = Net::HTTP::Get.new(uri.to_s, header)
46
+ res = http.request(req)
47
+
48
+ raise "Failed to fetch #{uri}" unless res.is_a?(Net::HTTPSuccess)
49
+
50
+ JSON.parse(res.body, symbolize_names: true)
51
+ end
52
+
53
+ def header
54
+ {
55
+ Authorization: "Key #{@api_key}"
56
+ }
57
+ end
58
+ end
59
+ end
@@ -1,73 +1,41 @@
1
- require 'net/https'
2
- require 'json'
1
+ # frozen_string_literal: true
2
+
3
3
  require 'forwardable'
4
4
  require 'active_support'
5
5
  require 'active_support/core_ext'
6
+ require 'redash_exporter/fetcher'
6
7
  require 'redash_exporter/query'
7
8
 
8
9
  module RedashExporter
9
10
  class Queries
10
11
  extend Forwardable
11
12
  include Enumerable
12
- attr_accessor :api_key, :url, :queries
13
+ attr_accessor :api_key, :redash_url, :queries
13
14
  def_delegators :@queries, :each, :size
14
15
 
15
- def initialize(url, api_key, dest = "#{__dir__}/../../dest")
16
- @url = url
17
- @url = "#{@url}/" unless @url.end_with?('/')
16
+ ENDPOINT = "/api/queries"
17
+
18
+ def initialize(redash_url, api_key, dest = "#{__dir__}/../../dest")
19
+ @redash_url = redash_url.gsub(%r{/$}, '')
18
20
  @api_key = api_key
19
21
  @dest = dest
20
22
  @queries = []
23
+ @fetcher = Fetcher.new("#{@redash_url}#{ENDPOINT}", @api_key, page: 1, page_size: 250)
24
+ end
25
+
26
+ def fetch
27
+ @queries = @fetcher.fetch.map { |q| Query.new(q) }
21
28
  end
22
29
 
23
- def export_all
30
+ def export_all(force: false)
24
31
  dest_dir_path = File.expand_path(@dest)
25
32
  puts "Export SQL Files to #{dest_dir_path}"
26
33
 
27
34
  @queries.each do |query|
28
- query.export(dest_dir_path)
35
+ query.export(dir: dest_dir_path, force: force)
29
36
  end
30
- puts "done. Check out #{dest_dir_path}"
31
- end
32
-
33
- def fetch
34
- uri = URI.parse("#{@url}api/queries")
35
- header = {
36
- Authorization: "Key #{@api_key}"
37
- }
38
- http = Net::HTTP.new(uri.host, uri.port)
39
- http.use_ssl = true if uri.scheme == 'https'
40
37
 
41
- page = 1
42
- page_size = 250
43
-
44
- loop do
45
- uri.query = "page=#{page}&page_size=#{page_size}"
46
- req = Net::HTTP::Get.new(uri.to_s, header)
47
- res = http.request(req)
48
- body = JSON.parse(res.body, symbolize_names: true)
49
-
50
- raise "Failed to fetch queries. URI: #{uri}" unless res.is_a?(Net::HTTPSuccess)
51
-
52
- # old API returns all queries as an array
53
- if body.is_a?(Array)
54
- @queries = body.map { |q| Query.new(q) }
55
- break
56
- end
57
-
58
- # new API
59
- @queries.push(*body[:results].map { |q| Query.new(q) })
60
-
61
- # next page
62
- if @queries.size < body[:count]
63
- page += 1
64
- # wait...
65
- sleep 0.5
66
- next
67
- end
68
-
69
- break
70
- end
38
+ puts "Done. Check out #{dest_dir_path}"
71
39
  end
72
40
 
73
41
  def reject!(*args, &block)
@@ -1,16 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support'
2
4
  require 'active_support/core_ext'
3
- require 'forwardable'
4
5
  require 'zaru'
6
+ require 'redash_exporter/exporter'
5
7
 
6
8
  module RedashExporter
7
9
  class Query
8
- extend Forwardable
9
- attr_accessor :sort_key
10
+ attr_accessor :sort_key, :data
11
+ include Comparable
10
12
 
11
13
  def initialize(raw)
12
- @data = raw.symbolize_keys
13
- @sort_key = :retrieved_at
14
+ @data = raw.deep_symbolize_keys
15
+ @sort_key = :id
14
16
  end
15
17
 
16
18
  def [](key)
@@ -18,37 +20,29 @@ module RedashExporter
18
20
  end
19
21
 
20
22
  def to_s
21
- <<~EOS
22
- /**
23
- * #{@data[:name]}
24
- * created at #{@data[:created_at]}
25
- * last updated at #{@data[:updated_at]}
26
- * created by #{@data.dig(:user, :name)} (#{@data.dig(:user, :email)})
27
- **/
28
-
29
- #{@data[:query]}
30
- EOS
23
+ <<~SQL
24
+ /**
25
+ * #{@data[:name]}
26
+ *
27
+ * created at #{@data[:created_at]}
28
+ * last updated at #{@data[:updated_at]}
29
+ * created by #{@data.dig(:user, :name)} (#{@data.dig(:user, :email)})
30
+ **/
31
+ #{@data[:query]}
32
+ SQL
31
33
  end
32
34
 
33
- def <=>
34
- @data[@sort_key] || -1
35
+ def to_json(*_args)
36
+ JSON.generate(@data)
35
37
  end
36
38
 
37
- def export(dir = '.')
38
- path = File.expand_path("#{dir}/#{file_name}")
39
+ def <=>(other)
40
+ self[@sort_key] <=> other[@sort_key]
41
+ end
39
42
 
40
- if File.exist?(path)
41
- puts "overwrite #{path} [yes(y),no(n)] ?"
42
- ok = %w[yes y ok].include?(STDIN.gets.strip)
43
- unless ok
44
- puts "Not create #{path}."
45
- return
46
- end
47
- end
48
-
49
- File.open(path, 'w') do |file|
50
- file.print to_s
51
- end
43
+ def export(dir: '.', force: false, **)
44
+ path = File.expand_path("#{dir}/#{file_name}")
45
+ Exporter.export(path, to_s, force: force)
52
46
  end
53
47
 
54
48
  private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RedashExporter
2
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
3
5
  end
@@ -1,4 +1,6 @@
1
- lib = File.expand_path("../lib", __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require "redash_exporter/version"
4
6
 
@@ -8,24 +10,26 @@ Gem::Specification.new do |spec|
8
10
  spec.authors = ["oieioi"]
9
11
  spec.email = ["atsuinatsu.samuifuyu@gmail.com"]
10
12
 
11
- spec.summary = %q{Export Redash queries as files}
12
- spec.description = %q{Export Redash queries as files}
13
+ spec.summary = 'Export Redash queries as files'
14
+ spec.description = 'Export Redash queries as files'
13
15
  spec.homepage = "https://github.com/oieioi/redash_exporter"
14
16
  spec.license = "MIT"
15
17
 
16
18
  # Specify which files should be added to the gem when it is released.
17
19
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
18
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
21
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
20
22
  end
21
23
  spec.bindir = "exe"
22
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
25
  spec.require_paths = ["lib"]
24
26
 
25
- spec.add_dependency "activesupport"
26
- spec.add_dependency "zaru"
27
- spec.add_development_dependency "bundler", "~> 2.0"
27
+ spec.add_dependency "activesupport", "~> 5.2.3"
28
+ spec.add_dependency "zaru", "~> 0.1.0"
29
+
30
+ spec.add_development_dependency "bundler"
31
+ spec.add_development_dependency "byebug", "~> 11.0.1"
28
32
  spec.add_development_dependency "rake", "~> 10.0"
29
33
  spec.add_development_dependency "rspec", "~> 3.0"
30
- spec.add_development_dependency "byebug"
34
+ spec.add_development_dependency "rubocop", "~> 0.67.2"
31
35
  end
metadata CHANGED
@@ -1,37 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redash_exporter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - oieioi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-04-24 00:00:00.000000000 Z
11
+ date: 2019-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 5.2.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 5.2.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: zaru
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 0.1.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 0.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - ">="
32
46
  - !ruby/object:Gem::Version
33
47
  version: '0'
34
- type: :runtime
48
+ type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
@@ -39,19 +53,19 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: bundler
56
+ name: byebug
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '2.0'
61
+ version: 11.0.1
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '2.0'
68
+ version: 11.0.1
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -81,19 +95,19 @@ dependencies:
81
95
  - !ruby/object:Gem::Version
82
96
  version: '3.0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: byebug
98
+ name: rubocop
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ">="
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: 0.67.2
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ">="
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: 0.67.2
97
111
  description: Export Redash queries as files
98
112
  email:
99
113
  - atsuinatsu.samuifuyu@gmail.com
@@ -104,6 +118,8 @@ extra_rdoc_files: []
104
118
  files:
105
119
  - ".gitignore"
106
120
  - ".rspec"
121
+ - ".rubocop.yml"
122
+ - ".ruby-version"
107
123
  - ".travis.yml"
108
124
  - CODE_OF_CONDUCT.md
109
125
  - Gemfile
@@ -116,6 +132,8 @@ files:
116
132
  - dest/.keep
117
133
  - exe/redash_exporter
118
134
  - lib/redash_exporter.rb
135
+ - lib/redash_exporter/exporter.rb
136
+ - lib/redash_exporter/fetcher.rb
119
137
  - lib/redash_exporter/queries.rb
120
138
  - lib/redash_exporter/query.rb
121
139
  - lib/redash_exporter/version.rb
@@ -139,8 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
157
  - !ruby/object:Gem::Version
140
158
  version: '0'
141
159
  requirements: []
142
- rubyforge_project:
143
- rubygems_version: 3.0.0.beta3
160
+ rubygems_version: 3.0.3
144
161
  signing_key:
145
162
  specification_version: 4
146
163
  summary: Export Redash queries as files