sunstone 6.1.0.1 → 6.1.0.2
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 +4 -4
- data/.github/workflows/main.yml +141 -0
- data/README.md +39 -3
- data/ext/active_record/relation/calculations.rb +6 -14
- data/lib/arel/visitors/sunstone.rb +1 -0
- data/lib/sunstone.rb +1 -0
- data/lib/sunstone/version.rb +1 -1
- data/test/active_record/query_test.rb +8 -0
- data/test/test_helper.rb +1 -0
- metadata +3 -3
- data/.travis.yml +0 -68
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 52f0e0a557ddc1ec6d7dcc9728d3cfbf602d8c467d1647571cb887b56755e3cc
         | 
| 4 | 
            +
              data.tar.gz: 8db1bd8849700b80328ac2cf1248ff5260659d0afc49648e694fae33790c79cc
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a656ce5545ac0ad4a3f660f61857e8068a9c1f59060d4e9f9f06b1d80d2f6daca73e3317e02b35669a100ea1f8c578695f8ca0cc3a9eb2f00fc908708c1d18ff
         | 
| 7 | 
            +
              data.tar.gz: 3395da82c6d52adc2029570a459f98cb7311c428a3f92c9f598d61ae8f0b7c5c7a354bb4d88933a6096e2cd5271997f929535f9ad2a35cda2c066d59472dae72
         | 
| @@ -0,0 +1,141 @@ | |
| 1 | 
            +
            name: CI
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            on:
         | 
| 4 | 
            +
              push:
         | 
| 5 | 
            +
                branches: [ master ]
         | 
| 6 | 
            +
              pull_request:
         | 
| 7 | 
            +
                branches: [ master ]
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            jobs:
         | 
| 10 | 
            +
              sunstone:
         | 
| 11 | 
            +
                name: Sunstone Test
         | 
| 12 | 
            +
                runs-on: ubuntu-20.04
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                steps:
         | 
| 15 | 
            +
                  - uses: ruby/setup-ruby@v1
         | 
| 16 | 
            +
                    with:
         | 
| 17 | 
            +
                      ruby-version: 3.0
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  - uses: actions/checkout@v2
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                  - run: bundle
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  - run: bundle exec rake test
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              ar-postgresql:
         | 
| 26 | 
            +
                name: ActiveRecord PostgresQL Test
         | 
| 27 | 
            +
                strategy:
         | 
| 28 | 
            +
                  matrix:
         | 
| 29 | 
            +
                    rails: [v6.1.3]
         | 
| 30 | 
            +
                    
         | 
| 31 | 
            +
                runs-on: ubuntu-20.04
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                steps:
         | 
| 34 | 
            +
                  - name: Install Postgresql
         | 
| 35 | 
            +
                    run: |
         | 
| 36 | 
            +
                      sudo apt-get install curl ca-certificates gnupg
         | 
| 37 | 
            +
                      curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
         | 
| 38 | 
            +
                      sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
         | 
| 39 | 
            +
                      sudo apt-get update
         | 
| 40 | 
            +
                      sudo apt-get install postgresql-13
         | 
| 41 | 
            +
                      sudo systemctl start postgresql@13-main.service
         | 
| 42 | 
            +
                      sudo -u postgres createuser runner --superuser
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                  - uses: ruby/setup-ruby@v1
         | 
| 45 | 
            +
                    with:
         | 
| 46 | 
            +
                      ruby-version: 3.0
         | 
| 47 | 
            +
                      
         | 
| 48 | 
            +
                  - uses: actions/checkout@v2
         | 
| 49 | 
            +
                
         | 
| 50 | 
            +
                  - name: Download Rails
         | 
| 51 | 
            +
                    run: |
         | 
| 52 | 
            +
                      git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
         | 
| 53 | 
            +
                      pushd ~/rails
         | 
| 54 | 
            +
                      cat /home/runner/work/_temp/*.sh
         | 
| 55 | 
            +
                      sed -i "s/Gem.ruby, '-w'/Gem.ruby, '-w0'/" ~/rails/activerecord/Rakefile
         | 
| 56 | 
            +
                      sed -i "s/t.warning = true/t.warning = false/g" ~/rails/activerecord/Rakefile
         | 
| 57 | 
            +
                      sed -i "/require 'support\/connection'/a \$LOAD_PATH.unshift\(File.expand_path\(ENV['GITHUB_WORKSPACE']\)\)\nrequire 'sunstone'" ~/rails/activerecord/test/cases/helper.rb
         | 
| 58 | 
            +
                      rm ~/rails/Gemfile.lock
         | 
| 59 | 
            +
                      sed -i "/# Active Record./a gem 'sunstone', path: File.expand_path\(ENV['GITHUB_WORKSPACE']\)" ~/rails/Gemfile
         | 
| 60 | 
            +
                      cat ~/rails/Gemfile
         | 
| 61 | 
            +
                      bundle update --jobs=3 --retry=3
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  - run: |
         | 
| 64 | 
            +
                      pushd ~/rails/activerecord
         | 
| 65 | 
            +
                      bundle exec rake db:postgresql:rebuild postgresql:test
         | 
| 66 | 
            +
                      bundle exec rake db:postgresql:rebuild postgresql:isolated_test
         | 
| 67 | 
            +
                      
         | 
| 68 | 
            +
              ar-sqlite:
         | 
| 69 | 
            +
                name: ActiveRecord SQLite Test
         | 
| 70 | 
            +
                strategy:
         | 
| 71 | 
            +
                  matrix:
         | 
| 72 | 
            +
                    rails: [v6.1.3]
         | 
| 73 | 
            +
                    
         | 
| 74 | 
            +
                runs-on: ubuntu-20.04
         | 
| 75 | 
            +
             | 
| 76 | 
            +
                steps:
         | 
| 77 | 
            +
                  - uses: ruby/setup-ruby@v1
         | 
| 78 | 
            +
                    with:
         | 
| 79 | 
            +
                      ruby-version: 3.0
         | 
| 80 | 
            +
                      
         | 
| 81 | 
            +
                  - uses: actions/checkout@v2
         | 
| 82 | 
            +
                
         | 
| 83 | 
            +
                  - name: Download Rails
         | 
| 84 | 
            +
                    run: |
         | 
| 85 | 
            +
                      git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
         | 
| 86 | 
            +
                      pushd ~/rails
         | 
| 87 | 
            +
                      cat /home/runner/work/_temp/*.sh
         | 
| 88 | 
            +
                      sed -i "s/Gem.ruby, '-w'/Gem.ruby, '-w0'/" ~/rails/activerecord/Rakefile
         | 
| 89 | 
            +
                      sed -i "s/t.warning = true/t.warning = false/g" ~/rails/activerecord/Rakefile
         | 
| 90 | 
            +
                      sed -i "/require 'support\/connection'/a \$LOAD_PATH.unshift\(File.expand_path\(ENV['GITHUB_WORKSPACE']\)\)\nrequire 'sunstone'" ~/rails/activerecord/test/cases/helper.rb
         | 
| 91 | 
            +
                      rm ~/rails/Gemfile.lock
         | 
| 92 | 
            +
                      sed -i "/# Active Record./a gem 'sunstone', path: File.expand_path\(ENV['GITHUB_WORKSPACE']\)" ~/rails/Gemfile
         | 
| 93 | 
            +
                      cat ~/rails/Gemfile
         | 
| 94 | 
            +
                      bundle update --jobs=3 --retry=3
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  - run: |
         | 
| 97 | 
            +
                      pushd ~/rails/activerecord
         | 
| 98 | 
            +
                      bundle exec rake sqlite3:test
         | 
| 99 | 
            +
                      rm test/db/*.sqlite3 test/fixtures/*.sqlite3
         | 
| 100 | 
            +
                      bundle exec rake sqlite3:isolated_test
         | 
| 101 | 
            +
                      rm test/db/*.sqlite3 test/fixtures/*.sqlite3
         | 
| 102 | 
            +
                      bundle exec rake sqlite3_mem:test
         | 
| 103 | 
            +
                    
         | 
| 104 | 
            +
              ar-mysql:
         | 
| 105 | 
            +
                name: ActiveRecord MySQL Test
         | 
| 106 | 
            +
                strategy:
         | 
| 107 | 
            +
                  matrix:
         | 
| 108 | 
            +
                    rails: [v6.1.3]
         | 
| 109 | 
            +
                    
         | 
| 110 | 
            +
                runs-on: ubuntu-20.04
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                steps:
         | 
| 113 | 
            +
                  - name: Install MySQL
         | 
| 114 | 
            +
                    run: |
         | 
| 115 | 
            +
                      sudo /etc/init.d/mysql start
         | 
| 116 | 
            +
                      mysql -uroot -proot -e "CREATE USER 'rails'@'%';"
         | 
| 117 | 
            +
                      mysql -uroot -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'rails'@'%' WITH GRANT OPTION;"
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                  - uses: ruby/setup-ruby@v1
         | 
| 120 | 
            +
                    with:
         | 
| 121 | 
            +
                      ruby-version: 3.0
         | 
| 122 | 
            +
                      
         | 
| 123 | 
            +
                  - uses: actions/checkout@v2
         | 
| 124 | 
            +
                
         | 
| 125 | 
            +
                  - name: Download Rails
         | 
| 126 | 
            +
                    run: |
         | 
| 127 | 
            +
                      git clone --branch ${{ matrix.rails }} https://github.com/rails/rails.git ~/rails
         | 
| 128 | 
            +
                      pushd ~/rails
         | 
| 129 | 
            +
                      cat /home/runner/work/_temp/*.sh
         | 
| 130 | 
            +
                      sed -i "s/Gem.ruby, '-w'/Gem.ruby, '-w0'/" ~/rails/activerecord/Rakefile
         | 
| 131 | 
            +
                      sed -i "s/t.warning = true/t.warning = false/g" ~/rails/activerecord/Rakefile
         | 
| 132 | 
            +
                      sed -i "/require 'support\/connection'/a \$LOAD_PATH.unshift\(File.expand_path\(ENV['GITHUB_WORKSPACE']\)\)\nrequire 'sunstone'" ~/rails/activerecord/test/cases/helper.rb
         | 
| 133 | 
            +
                      rm ~/rails/Gemfile.lock
         | 
| 134 | 
            +
                      sed -i "/# Active Record./a gem 'sunstone', path: File.expand_path\(ENV['GITHUB_WORKSPACE']\)" ~/rails/Gemfile
         | 
| 135 | 
            +
                      cat ~/rails/Gemfile
         | 
| 136 | 
            +
                      bundle update --jobs=3 --retry=3
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                  - run: |
         | 
| 139 | 
            +
                      pushd ~/rails/activerecord
         | 
| 140 | 
            +
                      bundle exec rake db:mysql:rebuild mysql2:test
         | 
| 141 | 
            +
                      bundle exec rake db:mysql:rebuild mysql2:isolated_test
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,8 +1,44 @@ | |
| 1 | 
            -
            # Sunstone | 
| 1 | 
            +
            # Sunstone
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
            APIs  | 
| 3 | 
            +
            Sunstone is an [ActiveRecord](https://rubygems.org/gems/activerecord) adapter for quering
         | 
| 4 | 
            +
            APIs conforming to [Standard API](https://github.com/waratuman/standardapi).
         | 
| 5 5 |  | 
| 6 | 
            +
            Configuration
         | 
| 7 | 
            +
            -------------
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ### Rails
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            Add `sunstone` to your Gemfile:
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            ```ruby
         | 
| 14 | 
            +
            gem 'sunstone'
         | 
| 15 | 
            +
            ```
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            Update `config/database.yml`"
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            ```yaml
         | 
| 20 | 
            +
            development:
         | 
| 21 | 
            +
              adapter: sunstone
         | 
| 22 | 
            +
              url: https://mystanda.rd/api
         | 
| 23 | 
            +
              api_key: ..optional..
         | 
| 24 | 
            +
              user_agent: ..optional..
         | 
| 25 | 
            +
            ```
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            ### Standalone ActiveRecord
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            Initialize the connection on `ActiveRecord::Base` or your abstract model (`ApplicationRecord` for example)
         | 
| 30 | 
            +
             | 
| 31 | 
            +
            ```ruby
         | 
| 32 | 
            +
            ActiveRecord::Base.establish_connection(
         | 
| 33 | 
            +
              adapter: 'sunstone',
         | 
| 34 | 
            +
              url: 'https://mystanda.rd/api'
         | 
| 35 | 
            +
            )
         | 
| 36 | 
            +
            ```
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            Usage
         | 
| 39 | 
            +
            -----
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            Mention fitler / etc...
         | 
| 6 42 |  | 
| 7 43 | 
             
            TODO:
         | 
| 8 44 | 
             
            =====
         | 
| @@ -2,30 +2,22 @@ module ActiveRecord | |
| 2 2 | 
             
              module Calculations
         | 
| 3 3 |  | 
| 4 4 | 
             
                def pluck(*column_names)
         | 
| 5 | 
            -
                  if loaded? &&  | 
| 5 | 
            +
                  if loaded? && (column_names.map(&:to_s) - @klass.attribute_names - @klass.attribute_aliases.keys).empty?
         | 
| 6 6 | 
             
                    return records.pluck(*column_names)
         | 
| 7 7 | 
             
                  end
         | 
| 8 | 
            -
             | 
| 8 | 
            +
                  
         | 
| 9 9 | 
             
                  if has_include?(column_names.first)
         | 
| 10 10 | 
             
                    relation = apply_join_dependency
         | 
| 11 11 | 
             
                    relation.pluck(*column_names)
         | 
| 12 12 | 
             
                  elsif klass.connection.is_a?(ActiveRecord::ConnectionAdapters::SunstoneAPIAdapter)
         | 
| 13 13 | 
             
                    load
         | 
| 14 | 
            -
                    return records.pluck(*column_names.map{|n| n.sub(/^#{klass.table_name}\./, "")})
         | 
| 14 | 
            +
                    return records.pluck(*column_names.map{|n| n.to_s.sub(/^#{klass.table_name}\./, "")})
         | 
| 15 15 | 
             
                  else
         | 
| 16 16 | 
             
                    klass.disallow_raw_sql!(column_names)
         | 
| 17 | 
            -
                    columns = arel_columns(column_names)
         | 
| 18 17 | 
             
                    relation = spawn
         | 
| 19 | 
            -
                    relation.select_values =  | 
| 20 | 
            -
                    
         | 
| 21 | 
            -
                    result | 
| 22 | 
            -
                      if where_clause.contradiction?
         | 
| 23 | 
            -
                        ActiveRecord::Result.new([], [])
         | 
| 24 | 
            -
                      else
         | 
| 25 | 
            -
                        klass.connection.select_all(relation.arel, nil)
         | 
| 26 | 
            -
                      end
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
                    type_cast_pluck_values(result, columns)
         | 
| 18 | 
            +
                    relation.select_values = column_names
         | 
| 19 | 
            +
                    result = skip_query_cache_if_necessary { klass.connection.select_all(relation.arel, nil) }
         | 
| 20 | 
            +
                    result.cast_values(klass.attribute_types)
         | 
| 29 21 | 
             
                  end
         | 
| 30 22 | 
             
                end
         | 
| 31 23 |  | 
    
        data/lib/sunstone.rb
    CHANGED
    
    | @@ -41,6 +41,7 @@ require File.expand_path(File.join(__FILE__, '../../ext/active_record/finder_met | |
| 41 41 |  | 
| 42 42 | 
             
            if ActiveRecord::VERSION::MAJOR == 6 && ActiveRecord::VERSION::MINOR == 1
         | 
| 43 43 | 
             
              # Patch to allow Rails 6.1 pass url to adapter, all other versions work
         | 
| 44 | 
            +
              require 'active_record/database_configurations'
         | 
| 44 45 | 
             
              class ActiveRecord::DatabaseConfigurations::UrlConfig
         | 
| 45 46 | 
             
                private
         | 
| 46 47 | 
             
                def build_url_hash
         | 
    
        data/lib/sunstone/version.rb
    CHANGED
    
    
| @@ -119,5 +119,13 @@ class ActiveRecord::QueryTest < ActiveSupport::TestCase | |
| 119 119 | 
             
                query = MessagePack.unpack(CGI.unescape(uri.query))
         | 
| 120 120 | 
             
                assert_equal({"where"=>{"ownerships"=>{"id"=>{"eq"=>1}}}}, query)
         | 
| 121 121 | 
             
              end
         | 
| 122 | 
            +
              
         | 
| 123 | 
            +
              test 'Arel::Nodes::HomogeneousIn' do
         | 
| 124 | 
            +
                webmock(:get, "/ships", { where: {id: {in: [10,12]} }, limit: 100, offset: 0 }).to_return({
         | 
| 125 | 
            +
                  body: [].to_json
         | 
| 126 | 
            +
                })
         | 
| 127 | 
            +
             | 
| 128 | 
            +
                Ship.where(id: [10,12]).to_a
         | 
| 129 | 
            +
              end
         | 
| 122 130 |  | 
| 123 131 | 
             
            end
         | 
    
        data/test/test_helper.rb
    CHANGED
    
    | @@ -69,6 +69,7 @@ class ActiveSupport::TestCase | |
| 69 69 |  | 
| 70 70 | 
             
                stub_request(method, /^#{ActiveRecord::Base.connection.instance_variable_get(:@connection).url}/).with do |req|
         | 
| 71 71 | 
             
                  if query
         | 
| 72 | 
            +
                    puts unpack(req&.uri&.query&.sub(/=true$/, '')) if req&.uri&.query
         | 
| 72 73 | 
             
                    req&.uri&.path == path && req.uri.query && unpack(req.uri.query.sub(/=true$/, '')) == query
         | 
| 73 74 | 
             
                  else
         | 
| 74 75 | 
             
                    req&.uri&.path == path && req.uri.query.nil?
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sunstone
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 6.1.0. | 
| 4 | 
            +
              version: 6.1.0.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jon Bracy
         | 
| 8 8 | 
             
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2021- | 
| 11 | 
            +
            date: 2021-03-23 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rake
         | 
| @@ -255,9 +255,9 @@ executables: [] | |
| 255 255 | 
             
            extensions: []
         | 
| 256 256 | 
             
            extra_rdoc_files: []
         | 
| 257 257 | 
             
            files:
         | 
| 258 | 
            +
            - ".github/workflows/main.yml"
         | 
| 258 259 | 
             
            - ".gitignore"
         | 
| 259 260 | 
             
            - ".tm_properties"
         | 
| 260 | 
            -
            - ".travis.yml"
         | 
| 261 261 | 
             
            - Gemfile
         | 
| 262 262 | 
             
            - LICENSE
         | 
| 263 263 | 
             
            - README.md
         | 
    
        data/.travis.yml
    DELETED
    
    | @@ -1,68 +0,0 @@ | |
| 1 | 
            -
            dist: bionic
         | 
| 2 | 
            -
            language: ruby
         | 
| 3 | 
            -
            sudo: false
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            cache:
         | 
| 6 | 
            -
              bundler: true
         | 
| 7 | 
            -
              directories:
         | 
| 8 | 
            -
                - /home/travis/.rvm/gems
         | 
| 9 | 
            -
             | 
| 10 | 
            -
            rvm:
         | 
| 11 | 
            -
              - 2.7
         | 
| 12 | 
            -
              - 3.0
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            env:
         | 
| 15 | 
            -
              matrix:
         | 
| 16 | 
            -
                - RAILS_VERSION=v6.1.0 TASK='db:mysql:rebuild mysql2:test'
         | 
| 17 | 
            -
                - RAILS_VERSION=v6.1.0 TASK='db:mysql:rebuild mysql2:isolated_test'
         | 
| 18 | 
            -
                - RAILS_VERSION=v6.1.0 TASK='db:postgresql:rebuild postgresql:test'
         | 
| 19 | 
            -
                - RAILS_VERSION=v6.1.0 TASK='db:postgresql:rebuild postgresql:isolated_test'
         | 
| 20 | 
            -
                - RAILS_VERSION=v6.1.0 TASK='sqlite3:test'
         | 
| 21 | 
            -
                - RAILS_VERSION=v6.1.0 TASK='sqlite3:isolated_test'
         | 
| 22 | 
            -
                - RAILS_VERSION=v6.1.0 TASK='sqlite3_mem:test'
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            services:
         | 
| 25 | 
            -
              - mysql
         | 
| 26 | 
            -
            addons:
         | 
| 27 | 
            -
              postgresql: "13"
         | 
| 28 | 
            -
              apt:
         | 
| 29 | 
            -
                packages:
         | 
| 30 | 
            -
                - postgresql-13
         | 
| 31 | 
            -
                - postgresql-client-13
         | 
| 32 | 
            -
             | 
| 33 | 
            -
            before_install:
         | 
| 34 | 
            -
              - sudo sed -i 's/port = 5433/port = 5432/' /etc/postgresql/13/main/postgresql.conf
         | 
| 35 | 
            -
              - sudo cp /etc/postgresql/{9.3,13}/main/pg_hba.conf
         | 
| 36 | 
            -
              - sudo pg_ctlcluster 13 main restart
         | 
| 37 | 
            -
              - unset BUNDLE_GEMFILE
         | 
| 38 | 
            -
              - gem update --system
         | 
| 39 | 
            -
              - gem update bundler
         | 
| 40 | 
            -
              - gem install bundler --version 1.17.3
         | 
| 41 | 
            -
              - mysql -e "create user rails@localhost;"
         | 
| 42 | 
            -
              - mysql -e "grant all privileges on activerecord_unittest.* to rails@localhost;"
         | 
| 43 | 
            -
              - mysql -e "grant all privileges on activerecord_unittest2.* to rails@localhost;"
         | 
| 44 | 
            -
              - mysql -e "grant all privileges on inexistent_activerecord_unittest.* to rails@localhost;"
         | 
| 45 | 
            -
              - mysql -e "create database activerecord_unittest default character set utf8mb4;"
         | 
| 46 | 
            -
              - mysql -e "create database activerecord_unittest2 default character set utf8mb4;"
         | 
| 47 | 
            -
             | 
| 48 | 
            -
            install:
         | 
| 49 | 
            -
              - git clone --branch $RAILS_VERSION https://github.com/rails/rails.git ~/build/rails
         | 
| 50 | 
            -
             | 
| 51 | 
            -
            before_script:
         | 
| 52 | 
            -
              - sed -i "s/t.warning = true/t.warning = false/g" Rakefile
         | 
| 53 | 
            -
              - pushd ~/build/rails
         | 
| 54 | 
            -
              - git status
         | 
| 55 | 
            -
              - sed -i "s/Gem.ruby, '-w'/Gem.ruby, '-w0'/" ~/build/rails/activerecord/Rakefile
         | 
| 56 | 
            -
              - sed -i "s/t.warning = true/t.warning = false/g" ~/build/rails/activerecord/Rakefile
         | 
| 57 | 
            -
              - sed -i "/require 'support\/connection'/a \$LOAD_PATH.unshift\(File.expand_path\('~\/build\/malomalo\/sunstone\/lib'\)\)\nrequire 'sunstone'" ~/build/rails/activerecord/test/cases/helper.rb
         | 
| 58 | 
            -
              - cat ~/build/rails/Gemfile
         | 
| 59 | 
            -
              - rm ~/build/rails/Gemfile.lock
         | 
| 60 | 
            -
              - "sed -i \"/# Active Record./a gem 'sunstone', path: File.expand_path\\('~\\/build\\/malomalo\\/sunstone'\\)\" ~/build/rails/Gemfile"
         | 
| 61 | 
            -
              - cat ~/build/rails/Gemfile
         | 
| 62 | 
            -
              - bundle update --jobs=3 --retry=3
         | 
| 63 | 
            -
              - popd
         | 
| 64 | 
            -
              - bundle install --jobs=3 --retry=3
         | 
| 65 | 
            -
             | 
| 66 | 
            -
            script:
         | 
| 67 | 
            -
              - bundle exec rake test
         | 
| 68 | 
            -
              - cd ~/build/rails/activerecord && bundle exec rake $TASK
         |