superset 0.5.2 → 0.5.4

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: 063136fe3a4d039c48ce40c5cf060f212af35a3833c6d24ce9315f5465931c5d
4
- data.tar.gz: 4310dc351ea932247d997ac2c2a48078c900ca7023845a1859140e4372d1cd8c
3
+ metadata.gz: 1bbc188dc9c0b749966c3a8bd6f0fdd4d142efbf547959c3408f4d62909f4125
4
+ data.tar.gz: c96b91064cf76252ccc1c59c7a15bb047bfaba3c4a7eba27f39c20e14582e28c
5
5
  SHA512:
6
- metadata.gz: e21a7c945bfc292fe86e444b65c14c90dc6a2090554dfe3e2a9a01dd7810a4e3dcaf05aaee39a958523a2343797277163ebcc60d6ff1e3e1e6933fd0355e4a2b
7
- data.tar.gz: ad56b23990af5c6823c098bcc4798bcb0dff1e2d2a02ee3f41bdec46e7ca637bf57811d0dcee2938ded9ef55c1efc5fd44cda860c9feb649f2cd39db5c941dd4
6
+ metadata.gz: c0459c247e0f1a52e1e6dbaf822224e56ce30d52305b0bab8c4d157584523bb8c64046e216cf39f8b9a3ccf746f9f541bddc8ea861944a09659615d818e249ef
7
+ data.tar.gz: bf8667266c2ae050fe2a32dd83d5ee3ae74b47434c330fedddc200619a1844da33b7e544445e5c3afeca28ee028dc64751ef3252b5e12677ec359e2a97a59952
data/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  ## Changelog
2
2
 
3
+ ## 0.5.4 - 2026-09-23
4
+
5
+ * **Fix:** `require 'enumerate_it'` in `lib/superset.rb`. `require "superset"` raised `RequireAll::LoadError: ... uninitialized constant EnumerateIt` — `ObjectType` (in `lib/superset/enumerations/object_type.rb`) subclasses `EnumerateIt::Base`, and enumerate_it has been a declared gemspec dependency since it was introduced, but nothing ever required it. **0.5.3 installs but cannot be loaded**; upgrade straight to 0.5.4
6
+ * **Fix the reason it was missed:** `spec/spec_helper.rb` required the gem's own dependencies (happi, enumerate_it, faraday, terminal-table) and then loaded `lib/` by globbing `Dir["./lib/**/*.rb"]`, so the suite supplied the requires that `lib/` was missing and never loaded `lib/superset.rb` at all. 341 examples passed against a gem that could not be required. spec_helper now does only `require "superset"`, exactly as a consumer does
7
+ * Add `spec/superset_load_spec.rb`, asserting the public surface resolves from a plain `require "superset"` along with the activesupport, ostruct and enumerate_it core extensions — each of which has caused a load-time `NameError` at some point
8
+ * Add a `package` CI job that builds the gem, installs it standalone and requires it from outside the repo. The spec suite runs with `lib/` on the load path, so it cannot catch a file excluded from `spec.files` or a dependency missing from the gemspec
9
+
10
+ ## 0.5.3 - 2026-09-23
11
+
12
+ * **Fix:** make the gem actually work on Faraday 2. 0.5.2 loosened the `faraday` constraint from `~> 1.10` to `>= 1.10` but adapted none of the code, so any consumer resolving Faraday 2 hit `NoMethodError: undefined method 'authorization' for an instance of Faraday::Connection` on every request through `Superset::Client` and `Superset::GuestToken`. Replaced `f.authorization :Bearer, token` with `f.request :authorization, 'Bearer', token`, which works on both Faraday 1.10+ and 2.x
13
+ * **Fix:** `require 'faraday/multipart'` in `Superset::Client` and `Superset::Dashboard::Import`. Faraday stopped autoloading faraday-multipart in 2.0, so `f.request :multipart` raised ":multipart is not registered on Faraday::Request"; it resolved only because happi happened to require it first — the same transitive-dependency trap as the `FaradayMiddleware::ParseJson` bug in 0.5.1. This gem declares faraday-multipart itself, so it now requires it itself
14
+ * Use `Faraday::Multipart::FilePart` instead of `Faraday::UploadIO` in `Dashboard::Import#payload`. Not a live break (faraday-multipart 1.x still aliases `UploadIO` to the same class once loaded), but FilePart is the maintained name and does not depend on that legacy alias
15
+ * Add `Dashboard::Import#payload` specs. Every existing import example stubbed `#response`, so `#payload` had never executed under test
16
+ * **Fix:** `require 'ostruct'` in `Dashboard::List` and `Services::DashboardLoader`. Both use `OpenStruct` but it only ever loaded transitively via activesupport <= 7.1; on activesupport 8.x the gem failed to load at all. Also declared as a gemspec dependency, since ostruct becomes a bundled gem in Ruby 3.5
17
+ * Stop tracking `Gemfile.lock`. This is a library; the committed lockfile pinned faraday 1.10.3 and is the direct reason the widened constraint was never exercised locally
18
+ * **Fix:** declare `happi` (`~> 1.0`) as a runtime dependency in the gemspec. `Superset::Client` subclasses `Happi::Client`, but happi was declared only in the `Gemfile` as a git ref — so the published gem listed no happi at all and raised `NameError` on first require for anyone installing it from a package host. happi 1.0.0 is on RubyGems and is byte-identical to the git tag this gem was developed against; the `Gemfile` git pin is now redundant and has been removed
19
+ * **Fix:** declare and require `activesupport` (`>= 7.1`). `lib/` calls it in ~96 places — `present?`, `blank?`, `with_indifferent_access`, `deep_symbolize_keys`, and `humanize` in `Display#table` — but the gem neither declared nor required it; it loaded only because happi depends on activesupport. Requires the four core extensions actually used rather than `active_support/all`
20
+ * Raise `required_ruby_version` from `>= 3` to `>= 3.2`. The old floor was never true: `Superset::Client` subclasses `Happi::Client`, and happi v1.0.0 requires ruby >= 3.2, so a bundle cannot resolve on 3.0 or 3.1. Nothing in `lib/` needs syntax newer than 3.0 — the floor is entirely happi's
21
+ * Make eight specs ruby-version agnostic. They hardcoded ruby 3.4's `Hash#inspect` output (`"k" => v`, not `"k"=>v`), so the suite only passed on the one ruby the strings were pasted from — leaving the declared `>= 3.2` floor untested. Expectations are now derived from the same source data the code stringifies
22
+ * Add `.github/workflows/ci.yml`, running the suite across ruby 3.2/3.3/3.4 and both ends of the declared faraday range (`gemfiles/faraday_1.gemfile`, `gemfiles/faraday_2.gemfile`). Buildkite already ran rspec on every PR, but against the committed `Gemfile.lock`, so CI only ever exercised faraday 1.10.3 — a single point inside the declared `>= 1.10` range, which is how 0.5.2 shipped a Faraday 2 break with a green build
23
+ * **Fix:** `Superset::Client#raise_error` no longer `puts` to stdout on every failed API call. A library should not write to its consumer's console, and the message is already carried by the raised exception; it now goes to `Superset.logger` (configurable since 0.5.0). The dead `binding.pry` comment beside it is gone, and `#raise_error` has specs for the first time
24
+ * Populate gem metadata (`homepage_uri`, `source_code_uri`, `changelog_uri`, `bug_tracker_uri`, `documentation_uri`, `rubygems_mfa_required`) — these were all commented out, so the rubygems.org page showed no links
25
+ * Stop shipping development scaffolding in the packaged gem. Installs previously included `Dockerfile`, `docker-compose*.yml`, `.buildkite/`, `.github/`, `gemfiles/`, `Rakefile`, `AGENTS.md`, `CLAUDE.md`, `RELEASING.md` and `env.sample`; the gem now contains `lib/`, the docs, README, CHANGELOG and LICENSE
26
+
3
27
  ## 0.5.2 - 2026-08-28
4
28
 
5
29
  * Add tag-triggered release workflow (`.github/workflows/release.yml`) that publishes to RubyGems.org via OIDC trusted publishing and to GitHub Packages via the Actions `GITHUB_TOKEN` — no long-lived credentials stored anywhere. Refuses to publish unless the pushed tag's commit is reachable from `develop`. See `RELEASING.md` for the release steps and one-time RubyGems.org Trusted Publisher setup
@@ -1,3 +1,4 @@
1
+ require 'faraday/multipart'
1
2
  require 'faraday-cookie_jar'
2
3
 
3
4
  module Superset
@@ -48,8 +49,7 @@ module Superset
48
49
  response.body
49
50
  end
50
51
 
51
- puts "API Error: #{message}" # display the error message for console debugging
52
- # binding.pry # helpfull to debug the response
52
+ Superset.logger.error("API Error: #{message}")
53
53
 
54
54
  raise errors[response.status].new(message, response) # message is not being surfaced from Happi correctly, :(
55
55
  end
@@ -75,7 +75,7 @@ module Superset
75
75
 
76
76
  def connection
77
77
  @connection ||= Faraday.new(superset_host) do |f|
78
- f.authorization :Bearer, access_token
78
+ f.request :authorization, 'Bearer', access_token
79
79
  f.use :cookie_jar # persist the Flask session cookie across the csrf_token GET and the write
80
80
  f.response :json, content_type: 'application/json'
81
81
 
@@ -20,6 +20,8 @@
20
20
  # Superset::Dashboard::Import.new(source: '/tmp/dashboard').perform
21
21
  #
22
22
 
23
+ require 'faraday/multipart'
24
+
23
25
  module Superset
24
26
  module Dashboard
25
27
  class Import < Request
@@ -58,7 +60,7 @@ module Superset
58
60
 
59
61
  def payload
60
62
  {
61
- formData: Faraday::UploadIO.new(source_zip_file, "application/zip"),
63
+ formData: Faraday::Multipart::FilePart.new(source_zip_file, "application/zip"),
62
64
  overwrite: overwrite.to_s
63
65
  }
64
66
  end
@@ -2,6 +2,8 @@
2
2
  # Usage: Superset::Dashboard::List.new(page_num: 1, title_contains: 'Test').list
3
3
  # Usage: Superset::Dashboard::List.new(tags_equal: ['embedded', 'product:acme']).list
4
4
 
5
+ require 'ostruct'
6
+
5
7
  module Superset
6
8
  module Dashboard
7
9
  class List < Superset::Request
@@ -73,7 +73,7 @@ module Superset
73
73
 
74
74
  def connection
75
75
  @connection ||= Faraday.new(authenticator.superset_host) do |f|
76
- f.authorization :Bearer, access_token
76
+ f.request :authorization, 'Bearer', access_token
77
77
  f.use :cookie_jar # replay the Flask session cookie from the csrf_token GET on the POST
78
78
  f.response :json, content_type: 'application/json'
79
79
  f.request :json
@@ -1,6 +1,7 @@
1
1
  # Given a path, load all yaml files
2
2
 
3
3
  require 'superset/file_utilities'
4
+ require 'ostruct'
4
5
  require 'yaml'
5
6
 
6
7
  module Superset
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Superset
4
- VERSION = "0.5.2"
4
+ VERSION = "0.5.4"
5
5
  end
data/lib/superset.rb CHANGED
@@ -3,9 +3,15 @@
3
3
  require 'require_all'
4
4
  require 'terminal-table'
5
5
  require 'happi'
6
+ require 'enumerate_it'
6
7
  require 'logger'
7
8
  require 'json'
8
9
 
10
+ require 'active_support/core_ext/object/blank'
11
+ require 'active_support/core_ext/hash/indifferent_access'
12
+ require 'active_support/core_ext/hash/keys'
13
+ require 'active_support/core_ext/string/inflections'
14
+
9
15
  require_relative "superset/configuration"
10
16
  require_rel "superset/credential"
11
17
  require_relative "superset/authenticator"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superset
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - jbat
@@ -9,6 +9,34 @@ bindir: bin
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: activesupport
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '7.1'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '7.1'
26
+ - !ruby/object:Gem::Dependency
27
+ name: happi
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
12
40
  - !ruby/object:Gem::Dependency
13
41
  name: json
14
42
  requirement: !ruby/object:Gem::Requirement
@@ -23,6 +51,20 @@ dependencies:
23
51
  - - ">="
24
52
  - !ruby/object:Gem::Version
25
53
  version: '2.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: ostruct
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0.5'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0.5'
26
68
  - !ruby/object:Gem::Dependency
27
69
  name: terminal-table
28
70
  requirement: !ruby/object:Gem::Requirement
@@ -197,26 +239,14 @@ executables: []
197
239
  extensions: []
198
240
  extra_rdoc_files: []
199
241
  files:
200
- - ".buildkite/pipeline.yml"
201
- - ".rspec"
202
- - ".rubocop.yml"
203
- - ".ruby-version"
204
- - AGENTS.md
205
242
  - CHANGELOG.md
206
- - CLAUDE.md
207
- - Dockerfile
208
243
  - LICENSE
209
244
  - README.md
210
- - RELEASING.md
211
- - Rakefile
212
245
  - doc/duplicate_dashboards.md
213
246
  - doc/migrating_dashboards_across_environments.md
214
247
  - doc/publishing.md
215
248
  - doc/setting_up_personal_api_credentials.md
216
249
  - doc/usage.md
217
- - docker-compose.override.yml
218
- - docker-compose.yml
219
- - env.sample
220
250
  - lib/superset.rb
221
251
  - lib/superset/authenticator.rb
222
252
  - lib/superset/base_put_request.rb
@@ -290,11 +320,16 @@ files:
290
320
  - lib/superset/tag/get.rb
291
321
  - lib/superset/tag/list.rb
292
322
  - lib/superset/version.rb
293
- - log/README.md
294
323
  homepage: https://github.com/rdytech/superset-client
295
324
  licenses:
296
325
  - MIT
297
- metadata: {}
326
+ metadata:
327
+ homepage_uri: https://github.com/rdytech/superset-client
328
+ source_code_uri: https://github.com/rdytech/superset-client/tree/develop
329
+ changelog_uri: https://github.com/rdytech/superset-client/blob/develop/CHANGELOG.md
330
+ bug_tracker_uri: https://github.com/rdytech/superset-client/issues
331
+ documentation_uri: https://github.com/rdytech/superset-client/blob/develop/README.md
332
+ rubygems_mfa_required: 'true'
298
333
  rdoc_options: []
299
334
  require_paths:
300
335
  - lib
@@ -302,7 +337,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
302
337
  requirements:
303
338
  - - ">="
304
339
  - !ruby/object:Gem::Version
305
- version: '3'
340
+ version: '3.2'
306
341
  required_rubygems_version: !ruby/object:Gem::Requirement
307
342
  requirements:
308
343
  - - ">="
@@ -1,16 +0,0 @@
1
- steps:
2
- - label: ":rspec:"
3
- command: bin/setup && bundle exec rspec
4
- plugins:
5
- docker-compose#v3.0.3:
6
- run: app
7
- volumes:
8
- - ./coverage:/app/coverage
9
- - ./log:/app/log
10
- timeout: 10
11
- agents:
12
- queue: docker-heavy
13
- artifact_paths:
14
- - "coverage/.resultset*.json"
15
- - "log/*.log"
16
- - "log/*.xml"
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,13 +0,0 @@
1
- AllCops:
2
- TargetRubyVersion: 3.0
3
-
4
- Style/StringLiterals:
5
- Enabled: true
6
- EnforcedStyle: double_quotes
7
-
8
- Style/StringLiteralsInInterpolation:
9
- Enabled: true
10
- EnforcedStyle: double_quotes
11
-
12
- Layout/LineLength:
13
- Max: 120
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.4.4
data/AGENTS.md DELETED
@@ -1,105 +0,0 @@
1
- # Agents
2
-
3
- This file provides guidance to AI coding agents working with code in this repository.
4
-
5
- ## Commands
6
-
7
- ```bash
8
- # Install dependencies
9
- bundle install
10
-
11
- # Open interactive console (auto-loads .env)
12
- bin/console
13
-
14
- # Run full test suite
15
- rspec
16
-
17
- # Run a single test file
18
- rspec spec/path/to/test_spec.rb
19
-
20
- # Run a single test by line number
21
- rspec spec/path/to/test_spec.rb:42
22
-
23
- # Lint
24
- rubocop
25
-
26
- # Run specs + rubocop together
27
- rake
28
- ```
29
-
30
- Docker equivalents: prefix commands with `docker-compose run --rm app`.
31
-
32
- ### Environment Setup
33
-
34
- Copy `env.sample` to `.env` and fill in:
35
- - `SUPERSET_HOST` — API base URL (required)
36
- - `SUPERSET_API_USERNAME` / `SUPERSET_API_PASSWORD` — API credentials (required)
37
- - `SUPERSET_ENVIRONMENT` — optional; loads `.env-{ENVIRONMENT}` instead
38
- - `CONSOLE_TIMEOUT` — seconds before auto-logout in console (default 1800)
39
-
40
- ## Architecture
41
-
42
- ### Request Framework
43
-
44
- All API interactions inherit from `Superset::Request` (`lib/superset/request.rb`). Subclasses implement:
45
- - `route` — returns the API path (e.g., `"dashboard/#{id}"`)
46
- - `filters` — returns a filter query string or `""`
47
- - `list_attributes` — array of field names used for terminal table display
48
-
49
- **Patterns by HTTP verb:**
50
- - **GET/LIST** — inherit `Superset::Request`, implement `route` and `filters`
51
- - **PUT** — inherit `Superset::BasePutRequest`, takes `target_id:` and `params:`, implement `route`
52
- - **DELETE/POST** — call `client.delete(route)` or `client.post(route, params)` directly
53
-
54
- Pagination is built into `Superset::Request` (default page size: 100, max: 1000). List classes accept `page_num:` and `page_size:` kwargs.
55
-
56
- ### Authentication Flow
57
-
58
- 1. `Superset::Client` (extends `Happi::Client`) includes `Credential::ApiUser` and creates a `Superset::Authenticator`
59
- 2. `Authenticator` POSTs to `api/v1/security/login` and extracts `access_token`
60
- 3. `Client#connection` builds a Faraday connection with Bearer token; supports both JSON and multipart modes (`config.use_json`)
61
-
62
- ### Query Filter Syntax
63
-
64
- Superset uses an ORM-like filter string format:
65
- ```
66
- filters:!((col:column_name,opr:operation,value:value)),
67
- ```
68
- Common operations: `ct` (contains), `eq` (equals), `neq` (not equals), `rel_o_m`, `rel_m_m`, `dashboard_tags`.
69
-
70
- ### Service Layer
71
-
72
- `lib/superset/services/` contains complex multi-step workflows. The main one is `DuplicateDashboard`, which:
73
- 1. Validates source/target IDs, schema existence, and data sovereignty rules (all chart datasets must share the same DB schema)
74
- 2. Copies the dashboard and its charts
75
- 3. Duplicates datasets pointing to the target schema
76
- 4. Rewires chart JSON metadata and filter configs to the new dataset IDs
77
- 5. Optionally sets embedded config, tags, and publishes
78
- 6. **Rolls back all created objects on failure**
79
-
80
- `ImportDashboardAcrossEnvironment` handles cross-environment migration via export/import ZIP files.
81
-
82
- ### Display Mixin
83
-
84
- `Superset::Display` (`lib/superset/display.rb`) is included in `Superset::Request` and provides `list`, `rows`, `to_h`, and `ids`. Requires `list_attributes` and `result` to be implemented by the subclass.
85
-
86
- ### Resource–Relationship Model
87
-
88
- - **Dashboards** contain **Charts**
89
- - **Charts** reference **Datasets** (datasources)
90
- - **Dashboard JSON metadata** stores layout, chart positions, and filter configurations
91
- - **Filters** reference Datasets for filter values
92
- - Duplication/migration requires updating all these cross-references
93
-
94
- ### Conventions
95
-
96
- - Namespace: `Superset::<ResourceType>::<Action>` (e.g., `Superset::Dashboard::List`)
97
- - `perform` — executes a state-changing action, returns `self`
98
- - `response` — raw (cached) HTTP response
99
- - `result` — extracts `response['result']`
100
- - Constructor filter params follow naming: `title_contains:`, `title_equals:`, etc.
101
- - Logging goes through `Superset.logger`; by default writes to `log/superset-client.log`. Consumers can inject any `::Logger`-compatible object via `Superset.configure { |c| c.logger = your_logger }`.
102
-
103
- ### Console Helpers
104
-
105
- In `bin/console`: `sshelp` (alias: `superset_class_list`) lists all available `Superset::` classes. On startup, `Superset::Database::List.call` prints available DB connections.
data/CLAUDE.md DELETED
@@ -1 +0,0 @@
1
- See [AGENTS.md](AGENTS.md) for project context and development instructions.
data/Dockerfile DELETED
@@ -1,17 +0,0 @@
1
- # 1: Use ruby 3.4.4 as base:
2
- FROM ruby:3.4.4
3
-
4
- RUN apt-get update && \
5
- apt-get install -y --no-install-recommends \
6
- build-essential
7
-
8
- ENV BUNDLER_VERSION='2.4.22'
9
- RUN gem install bundler -v ${BUNDLER_VERSION}
10
-
11
- # 2: We'll set the application path as the working directory
12
- WORKDIR /app
13
-
14
- # 3: We'll add the app's binaries path to $PATH:
15
- ENV PATH=$PATH:/app/bin
16
-
17
- ENV BUNDLE_GITHUB__HTTPS=true BUNDLE_MAJOR_DEPRECATIONS=true
data/RELEASING.md DELETED
@@ -1,32 +0,0 @@
1
- # Releasing superset
2
-
3
- Publishing is only ever done by GitHub Actions (`.github/workflows/release.yml`), triggered by
4
- a `vX.Y.Z` tag whose commit is reachable from `develop`. Tags on any other branch are rejected by
5
- the workflow before anything is built. No one needs local publishing credentials — the workflow
6
- authenticates to RubyGems.org via OIDC trusted publishing and to GitHub Packages via the
7
- Actions-provided `GITHUB_TOKEN`.
8
-
9
- ## Cutting a release
10
-
11
- 1. Bump `Superset::VERSION` in `lib/superset/version.rb`.
12
- 2. Add a new `## X.Y.Z - YYYY-MM-DD` entry to the top of `CHANGELOG.md` describing the changes.
13
- 3. Commit both changes and get them onto `develop` (PR + merge, as normal).
14
- 4. From an up-to-date `develop`, tag the commit and push the tag:
15
-
16
- ```bash
17
- git tag vX.Y.Z
18
- git push origin vX.Y.Z
19
- ```
20
-
21
- 5. Watch the "Release" workflow run in the Actions tab.
22
- 6. Confirm the new version shows up on [rubygems.org](https://rubygems.org/gems/superset) and on
23
- [GitHub Packages](https://github.com/rdytech/superset-client/pkgs/rubygems/superset).
24
-
25
- ## One-time setup
26
-
27
- - **RubyGems.org**: an existing owner of the `superset` gem must add a Trusted Publisher for
28
- `rdytech/superset-client`, workflow `release.yml` (no environment). See
29
- [Trusted Publishing: adding a publisher](https://guides.rubygems.org/trusted-publishing/adding-a-publisher/).
30
- Until this is done, the "Publish to RubyGems.org" step will fail.
31
- - **GitHub Packages**: nothing to configure — the workflow's `packages: write` permission is
32
- sufficient.
data/Rakefile DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
5
-
6
- RSpec::Core::RakeTask.new(:spec)
7
-
8
- require "rubocop/rake_task"
9
-
10
- RuboCop::RakeTask.new
11
-
12
- task default: %i[spec rubocop]
@@ -1,10 +0,0 @@
1
- version: '3'
2
-
3
- volumes:
4
- bundle-data:
5
- driver: local
6
-
7
- services:
8
- app:
9
- volumes:
10
- - bundle-data:/usr/local/bundle
data/docker-compose.yml DELETED
@@ -1,8 +0,0 @@
1
- version: '3'
2
-
3
- services:
4
- app:
5
- build: .
6
- command: setup
7
- volumes:
8
- - .:/app
data/env.sample DELETED
@@ -1,9 +0,0 @@
1
- SUPERSET_HOST="http://localhost:8080/"
2
-
3
- # general api calls
4
- SUPERSET_API_USERNAME="USERNAME"
5
- SUPERSET_API_PASSWORD="PASSWORD"
6
-
7
- # embedded user guest token api calls
8
- # SUPERSET_EMBEDDED_USERNAME="EMBEDDED-USERNAME"
9
- # SUPERSET_EMBEDDED_PASSWORD="EMBEDDED-PASSWORD"
data/log/README.md DELETED
@@ -1,4 +0,0 @@
1
- Log outputs of specific superset scription processes to be sent here.
2
-
3
- Dashboard Duplication Logs current logged to
4
- - log/superset-client.log