Skip to content

Commit 661a535

Browse files
byRehamMatthew Elwell
authored andcommitted
Release 3.0
Rewrite due to new logic, add Config, Flag and Flags::Collection, Errors objects, implement part of the flags engine when enable_local_evaluation is set to false Set up gitflow actions, update tests Implement Flags Engine Set up rspec, add end to end tests, fixes Fix checkout with submodules Use Flagsmith as the namespace, add Flagsmith::Client to instantiate the SDK. Make all hashes from parsed JSON with symbol keys Fix issue with support changes of hash arguments for ruby later 3.0 https://www.ruby-lang.org/en/news/2019/12/12/separation-of-positional-and-keyword-arguments-in-ruby-3-0/ Engine::Core test coverage Use segment priority Test coverage of SDK Small fixes after testing Make #get_identity_feature_states_dict private, fix FeatureSegment priority Rename Features::State to FeatureState Add Github action to publish gem
1 parent cfc8c9c commit 661a535

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+2624
-231
lines changed

.github/workflows/publish.yaml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# This workflow will build the gem from gemspec and publish
2+
3+
name: Push Ruby Gem
4+
5+
on:
6+
push:
7+
tags:
8+
- '*'
9+
10+
jobs:
11+
release:
12+
runs-on: ubuntu-latest
13+
env:
14+
GEM_HOST_API_KEY: ${{ secrets.GEM_HOST_API_KEY }}
15+
steps:
16+
- uses: actions/checkout@v3
17+
with:
18+
fetch-depth: 0 # need all the commits
19+
- uses: ruby/setup-ruby@v1
20+
with:
21+
ruby-version: .ruby-version
22+
bundler-cache: true
23+
- name: Configure Git
24+
run: |
25+
git config --local user.email "[email protected]"
26+
git config --local user.name "GitHub Action"
27+
- name: Bump and Commit
28+
run: |
29+
git push --follow-tags
30+
- name: Buld and Push to rubygems.org
31+
run: |
32+
rake release[remote]
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# This workflow uses actions that are not certified by GitHub.
2+
# They are provided by a third-party and are governed by
3+
# separate terms of service, privacy policy, and support
4+
# documentation.
5+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7+
8+
name: CI RSpec Tests
9+
10+
on:
11+
pull_request:
12+
types:
13+
- opened
14+
- synchronize
15+
- reopened
16+
- ready_for_review
17+
18+
push:
19+
branches:
20+
- main
21+
22+
permissions:
23+
contents: read
24+
25+
jobs:
26+
test:
27+
name: CI
28+
runs-on: ubuntu-latest
29+
strategy:
30+
matrix:
31+
ruby-version: ['2.4', '2.5', '2.6', '2.7', '3.0', '3.1']
32+
33+
steps:
34+
- uses: actions/checkout@v3
35+
with:
36+
submodules: recursive
37+
- name: Set up Ruby
38+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
39+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
40+
uses: ruby/setup-ruby@v1
41+
with:
42+
ruby-version: ${{ matrix.ruby-version }}
43+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
44+
- name: Run tests
45+
run: bundle exec rspec spec

.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
/pkg/
1414
/spec/reports/
1515
/spec/examples.txt
16+
.rspec_status
1617
/test/tmp/
1718
/test/version_tmp/
1819
/tmp/
@@ -51,7 +52,7 @@ build-iPhoneSimulator/
5152
# intended to run in multiple environments; otherwise, check them in:
5253
# Gemfile.lock
5354
# .ruby-version
54-
# .ruby-gemset
55+
.ruby-gemset
5556

5657
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
57-
.rvmrc
58+
.rvmrc

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "spec/engine-test-data"]
2+
path = spec/engine-test-data
3+
url = [email protected]:Flagsmith/engine-test-data.git

.rspec

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
--format documentation
2+
--color

.rubocop.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ inherit_from: .rubocop_todo.yml
22

33
Layout/HashAlignment:
44
AllowMultipleStyles: true
5-
EnforcedColonStyle: separator
5+
EnforcedColonStyle: key
66
AllCops:
77
NewCops: enable
88
SuggestExtensions: false
9+
Exclude:
10+
- 'spec/**/*'

.rubocop_todo.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
Metrics/BlockLength:
1313
Exclude:
1414
- '**/*.gemspec'
15-
- 'spec/flagsmith_spec.rb'
1615

1716
# Offense count: 1
1817
# Configuration parameters: AllowedMethods.

.ruby-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2.4.0

Gemfile.lock

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,50 @@ PATH
33
specs:
44
flagsmith (2.0.0)
55
faraday
6+
faraday-retry
67
faraday_middleware
8+
semantic
79

810
GEM
911
remote: https://rubygems.org/
1012
specs:
1113
ast (2.4.1)
14+
coderay (1.1.3)
1215
diff-lcs (1.4.4)
13-
faraday (1.2.0)
16+
faraday (1.10.0)
17+
faraday-em_http (~> 1.0)
18+
faraday-em_synchrony (~> 1.0)
19+
faraday-excon (~> 1.1)
20+
faraday-httpclient (~> 1.0)
21+
faraday-multipart (~> 1.0)
22+
faraday-net_http (~> 1.0)
23+
faraday-net_http_persistent (~> 1.0)
24+
faraday-patron (~> 1.0)
25+
faraday-rack (~> 1.0)
26+
faraday-retry (~> 1.0)
27+
ruby2_keywords (>= 0.0.4)
28+
faraday-em_http (1.0.0)
29+
faraday-em_synchrony (1.0.0)
30+
faraday-excon (1.1.0)
31+
faraday-httpclient (1.0.1)
32+
faraday-multipart (1.0.3)
1433
multipart-post (>= 1.2, < 3)
15-
ruby2_keywords
16-
faraday_middleware (1.0.0)
34+
faraday-net_http (1.0.1)
35+
faraday-net_http_persistent (1.2.0)
36+
faraday-patron (1.0.0)
37+
faraday-rack (1.0.0)
38+
faraday-retry (1.0.3)
39+
faraday_middleware (1.2.0)
1740
faraday (~> 1.0)
1841
gem-release (2.2.0)
42+
method_source (1.0.0)
1943
multipart-post (2.1.1)
2044
parallel (1.20.1)
2145
parser (3.0.0.0)
2246
ast (~> 2.4.1)
47+
pry (0.14.1)
48+
coderay (~> 1.1)
49+
method_source (~> 1.0)
2350
rainbow (3.0.0)
2451
rake (13.0.3)
2552
regexp_parser (2.0.3)
@@ -49,7 +76,8 @@ GEM
4976
rubocop-ast (1.3.0)
5077
parser (>= 2.7.1.5)
5178
ruby-progressbar (1.10.1)
52-
ruby2_keywords (0.0.2)
79+
ruby2_keywords (0.0.5)
80+
semantic (1.6.1)
5381
unicode-display_width (1.7.0)
5482

5583
PLATFORMS
@@ -59,9 +87,10 @@ DEPENDENCIES
5987
bundler
6088
flagsmith!
6189
gem-release
90+
pry
6291
rake
6392
rspec
6493
rubocop
6594

6695
BUNDLED WITH
67-
1.17.2
96+
2.3.14

Rakefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,8 @@ require 'rspec/core/rake_task'
55

66
RSpec::Core::RakeTask.new(:spec)
77

8-
task default: :spec
8+
require 'rubocop/rake_task'
9+
10+
RuboCop::RakeTask.new
11+
12+
task default: %i[spec rubocop]

0 commit comments

Comments
 (0)