slack-ruby-bot-server 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4f81d3aefa974e927adeaa66b98092695463ff4f4dc8d1c0294a0efb7c824c01
4
- data.tar.gz: 17731a13443a9c2cdc4e8bfa0183501c07395c670a04b4fa45efdaec503cd30e
3
+ metadata.gz: ce55bd11d1164eaaa7985395b77ac8d104f69adfd1a5d3ccd1e6a195e02aceb2
4
+ data.tar.gz: '08700bcdc5768db23d313ac4cdde14c4b315f83f407b26fcff764b0249d5ca31'
5
5
  SHA512:
6
- metadata.gz: d2f99691dda8529a626456196f0359fd0a16e5ee28c831e23f7fc061038fb95b34b9bb0dc10cba562490c2d2b8b84bf23530d6d2e489e7747100e360d7fef8f9
7
- data.tar.gz: ecb8a80e8c191111daab48367d7f9d2afa0a9ee0618d9ad339484af25e6a80cf36af9c047295a626b43403e94514343b19a383b7ecdb97d3875133fec8ab669f
6
+ metadata.gz: 4f2585a8f933f806ff9cb998e58d7a03efda4a0aee1afeccd5f07289156e37c8ccf9092058b19413a22986031c0a82cca7dd35a9f6dbc9d7211d0823b363e708
7
+ data.tar.gz: b5139b404dfc9c6c1b5027286126438e81da1c577805aedd3273f07e5e0f2ee9fdb89572d32f652d2e9c8f372c062b74c5ae948b4b2a0347383b908ac29648b9
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: danger
3
+ on: [pull_request]
4
+ jobs:
5
+ danger:
6
+ runs-on: ubuntu-latest
7
+ steps:
8
+ - uses: actions/checkout@v2
9
+ with:
10
+ fetch-depth: 0
11
+ - name: Set up Ruby
12
+ uses: ruby/setup-ruby@v1
13
+ with:
14
+ ruby-version: 2.6
15
+ bundler-cache: true
16
+ - name: Run Danger
17
+ env:
18
+ BUNDLE_GEMFILE: Gemfile.danger
19
+ run: |
20
+ bundle install
21
+ # the personal token is public, this is ok, base64 encode to avoid tripping Github
22
+ TOKEN=$(echo -n NWY1ZmM5MzEyMzNlYWY4OTZiOGU3MmI3MWQ3Mzk0MzgxMWE4OGVmYwo= | base64 --decode)
23
+ DANGER_GITHUB_API_TOKEN=$TOKEN bundle exec danger --verbose
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: test
3
+ on: [push, pull_request]
4
+ jobs:
5
+ lint:
6
+ name: RuboCop
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Set up Ruby
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: 2.7
14
+ bundler-cache: true
15
+ - name: Run RuboCop
16
+ run: bundle exec rubocop
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: test
3
+ on: [push, pull_request]
4
+ jobs:
5
+ test:
6
+ runs-on: ubuntu-latest
7
+ strategy:
8
+ matrix:
9
+ entry:
10
+ - { ruby: 2.6.2, mongoid: 6.4.8, mongodb: 4.4 }
11
+ - { ruby: 2.6.2, mongoid: 7.2.3, mongodb: 4.4 }
12
+ - { ruby: 2.6.2, mongoid: 7.3.0, mongodb: 4.4 }
13
+ name: test (ruby=${{ matrix.entry.ruby }}, mongoid=${{ matrix.entry.mongoid }}, mongodb=${{ matrix.entry.mongodb }})
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ - uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: ${{ matrix.entry.ruby }}
19
+ - uses: browser-actions/setup-geckodriver@latest
20
+ - run: geckodriver --version
21
+ - uses: supercharge/mongodb-github-action@1.7.0
22
+ with:
23
+ mongodb-version: ${{ matrix.entry.mongodb }}
24
+ - name: Test
25
+ uses: GabrielBB/xvfb-action@v1
26
+ env:
27
+ DATABASE_ADAPTER: mongoid
28
+ MONGOID_VERSION: ${{ matrix.entry.mongoid }}
29
+ with:
30
+ run: |
31
+ bundle install
32
+ bundle exec rake spec
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: test
3
+ on: [push, pull_request]
4
+ jobs:
5
+ test:
6
+ runs-on: ubuntu-latest
7
+ strategy:
8
+ matrix:
9
+ entry:
10
+ - { ruby: 2.6.2, postgresql: 11 }
11
+ name: test (ruby=${{ matrix.entry.ruby }}, postgresql=${{ matrix.entry.postgresql }})
12
+ steps:
13
+ - uses: actions/checkout@v2
14
+ - uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: ${{ matrix.entry.ruby }}
17
+ - uses: browser-actions/setup-geckodriver@latest
18
+ - run: geckodriver --version
19
+ - uses: harmon758/postgresql-action@v1
20
+ with:
21
+ postgresql version: ${{ matrix.entry.postgresql }}
22
+ postgresql db: slack_ruby_bot_server_test
23
+ postgresql user: test
24
+ postgresql password: password
25
+ - name: Test
26
+ uses: GabrielBB/xvfb-action@v1
27
+ env:
28
+ DATABASE_ADAPTER: activerecord
29
+ DATABASE_URL: postgres://test:password@localhost/slack_ruby_bot_server_test
30
+ with:
31
+ run: |
32
+ bundle install
33
+ bundle exec rake spec
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  ### Changelog
2
2
 
3
+ #### 1.2.1 (2022/03/06)
4
+
5
+ * [#140](https://github.com/slack-ruby/slack-ruby-bot-server/pull/140): Fix: `NameError` for `Boolean` types with mongoid >= 7.3.0 - [@dblock](https://github.com/dblock).
6
+ * [#142](https://github.com/slack-ruby/slack-ruby-bot-server/pull/142): Replace Travis-CI with GitHub Actions - [@dblock](https://github.com/dblock).
7
+
3
8
  #### 1.2.0 (2020/11/27)
4
9
 
5
10
  * [#133](https://github.com/slack-ruby/slack-ruby-bot-server/pull/133): Added `Team#oauth_version` and `#scope` - [@dblock](https://github.com/dblock).
data/Gemfile CHANGED
@@ -3,7 +3,7 @@ source 'https://rubygems.org'
3
3
  case ENV['DATABASE_ADAPTER']
4
4
  when 'mongoid' then
5
5
  gem 'kaminari-mongoid'
6
- gem 'mongoid'
6
+ gem 'mongoid', ENV['MONGOID_VERSION'] || '~> 7.3.0'
7
7
  gem 'mongoid-scroll'
8
8
  gem 'mongoid-shell'
9
9
  when 'activerecord' then
@@ -23,10 +23,11 @@ group :development, :test do
23
23
  gem 'bundler'
24
24
  gem 'byebug'
25
25
  gem 'capybara', '~> 2.15.1'
26
- gem 'database_cleaner'
26
+ gem 'database_cleaner', '~> 1.8.5'
27
27
  gem 'fabrication'
28
28
  gem 'faker'
29
- gem 'hyperclient'
29
+ gem 'faraday', '0.17.5'
30
+ gem 'hyperclient', '~> 0.9.3'
30
31
  gem 'rack-server-pages'
31
32
  gem 'rack-test'
32
33
  gem 'rake'
@@ -35,9 +36,5 @@ group :development, :test do
35
36
  gem 'selenium-webdriver', '~> 3.4.4'
36
37
  gem 'vcr'
37
38
  gem 'webmock'
38
- end
39
-
40
- group :test do
41
- gem 'danger-toc', '~> 0.2.0', require: false
42
- gem 'slack-ruby-danger', '~> 0.1.0', require: false
39
+ gem 'webrick', '~> 1.6.1'
43
40
  end
data/Gemfile.danger ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ group :test do
4
+ gem 'danger-toc', '~> 0.2.0', require: false
5
+ gem 'slack-ruby-danger', '~> 0.2.0', require: false
6
+ end
data/MIGRATING.md ADDED
@@ -0,0 +1,98 @@
1
+ ### Introduction
2
+
3
+ Slack recently [introduced granular permissions](https://medium.com/slack-developer-blog/more-precision-less-restrictions-a3550006f9c3) and is now requiring all new apps to use them. The old apps are called _classic_ apps. Slack also provided a [migration guide](https://api.slack.com/authentication/migration).
4
+
5
+ > As of December 4th, 2020 Slack no longer accept resubmissions from apps that are not using granular permissions. On November 18, 2021 Slack will start delisting apps that have not migrated to use granular permissions. So you better get going with a migration ASAP.
6
+
7
+ New bots cannot use real-time, and there's no way to automatically migrate existing installations - users must reinstall a newer version of the bot. This migration guide avoids a data migration by allowing you to operate both the old and the new version on top of the same database.
8
+
9
+ > The migration effectively involves replacing `slack-ruby-bot-server-rtm` with `slack-ruby-bot-server-events`.
10
+
11
+ ### Upgrade to Slack-Ruby-Bot-Server 1.2.0 and Slack-Ruby-Bot-Server-Rtm
12
+
13
+ Upgrade to the latest version of [slack-ruby-bot-server-rtm](https://github.com/slack-ruby/slack-ruby-bot-server-rtm) , which extracts real-time components. This involves replacing `SlackRubyBotServer::Server` with `SlackRubyBotServer::RealTime::Server`.
14
+
15
+ Upgrade to [slack-ruby-bot-server](https://github.com/slack-ruby/slack-ruby-bot-server) >= 1.2.0. This version introduces two new `Team` fields, `oauth_version` and `oauth_scope` to store which version of the bot performed the install. This allows slack-ruby-bot-server-rtm to ignore newer bots and only boot RTM for legacy bots.
16
+
17
+ See [UPGRADING](https://github.com/slack-ruby/slack-ruby-bot-server/blob/master/UPGRADING.md#upgrading-to--120) for more information on ActiveRecord database migrations.
18
+
19
+ Deploy your bot and make sure everything is working without any changes.
20
+
21
+ ### Create a New Slack App
22
+
23
+ In order not to affect existing users, [create a new Slack app](https://api.slack.com/apps) with new granular permissions and scopes. For example, to send messages to Slack you will need `chat:write`. To read messages in public channels, `channels:history`. To receive bot mentions you'll need `app_mentions:read` and to receive DMs, `im:history`.
24
+
25
+ ### Respond to Slack Events
26
+
27
+ #### App Mentions
28
+
29
+ A typical bot may want to respond to mentions, which is made very easy by the new [slack-ruby-bot-server-events-app-mentions](https://github.com/slack-ruby/slack-ruby-bot-server-events-app-mentions) gem. This is similar to the [commands in slack-ruby-bot](https://github.com/slack-ruby/slack-ruby-bot#commands-and-operators), but you'll need to do the work to actually migrate functionality to mentions, and not all variations of commands and operators are currently supported.
30
+
31
+ ```ruby
32
+ SlackRubyBotServer.configure do |config|
33
+ config.oauth_version = :v2
34
+ config.oauth_scope = ['app_mentions:read', 'im:history', 'chat:write']
35
+ end
36
+ ```
37
+
38
+ ```ruby
39
+ class Ping < SlackRubyBotServer::Events::AppMentions::Mention
40
+ mention 'ping'
41
+
42
+ def self.call(data)
43
+ client = Slack::Web::Client.new(token: data.team.token)
44
+ client.chat_postMessage(channel: data.channel, text: 'pong')
45
+ end
46
+ end
47
+ ```
48
+
49
+ See a [complete sample](https://github.com/slack-ruby/slack-ruby-bot-server-events-app-mentions-sample) for more details.
50
+
51
+ #### Other Messages
52
+
53
+ More advanced bots may want to handle all kinds of messages. For example, [slack-shellbot#22](https://github.com/slack-ruby/slack-shellbot/pull/22) configures scopes to receive the kitchen sink of events, then handles them carefully avoiding handling its own messages.
54
+
55
+ ```ruby
56
+ SlackRubyBotServer.configure do |config|
57
+ config.oauth_version = :v2
58
+ config.oauth_scope = ['chat:write', 'im:history', 'mpim:history', 'channels:history', 'groups:history']
59
+ end
60
+ ```
61
+
62
+ ```ruby
63
+ SlackRubyBotServer::Events.configure do |config|
64
+ config.on :event, 'event_callback', 'message' do |event|
65
+ # SlackShellbot::Commands::Base.logger.info event
66
+
67
+ next true if event['event']['subtype'] # updates, etc.
68
+ next true if event['authorizations'][0]['user_id'] == event['event']['user'] # self
69
+
70
+ team = Team.where(team_id: event['team_id']).first
71
+ next true unless team
72
+
73
+ data = Slack::Messages::Message.new(event['event'])
74
+
75
+ # handles event data here
76
+
77
+ true
78
+ end
79
+ end
80
+ ```
81
+
82
+ ### Deploy
83
+
84
+ Create a new app deployment, use the same database as your production bot. The new bot needs a configuration with the `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET` and `SLACK_SIGNING_SECRET` from the new app with granular permissions. Use the same database instance as the old RTM bot.
85
+
86
+ Now there are two versions of the app running on top of the same database: one is the legacy one, and the other is the granular scopes app. The old app will ignore new bot installations that use granular permissions. The new app should ignore any old bot installations. Thus both apps should work.
87
+
88
+ ### Switch DNS
89
+
90
+ Switch DNS, new bot registrations can use the new granular scopes app. Make sure in Slack the event URLs are configured properly to point to this DNS.
91
+
92
+ ### Slow Migration for Existing Teams
93
+
94
+ Existing teams can uninstall the old bot and re-install the new one. The old real-time implementation will stop working once the token has been switched, but the data will remain intact and the team will get reactivated using the new bot with granular permissions.
95
+
96
+ ### Long Version
97
+
98
+ See [this blog post](http://localhost:4000/2020/11/30/migrating-classic-slack-ruby-bots-to-granular-permissions.html) for a longer, opinionated version of this migration guide.
data/README.md CHANGED
@@ -2,8 +2,10 @@ Slack Ruby Bot Server
2
2
  =====================
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/slack-ruby-bot-server.svg)](https://badge.fury.io/rb/slack-ruby-bot-server)
5
- [![Build Status](https://travis-ci.org/slack-ruby/slack-ruby-bot-server.svg?branch=master)](https://travis-ci.org/slack-ruby/slack-ruby-bot-server)
6
5
  [![Code Climate](https://codeclimate.com/github/slack-ruby/slack-ruby-bot-server.svg)](https://codeclimate.com/github/slack-ruby/slack-ruby-bot-server)
6
+ [![mongodb](https://github.com/slack-ruby/slack-ruby-bot-server/actions/workflows/test-mongodb.yml/badge.svg)](https://github.com/slack-ruby/slack-ruby-bot-server/actions/workflows/test-mongodb.yml)
7
+ [![postgresql](https://github.com/slack-ruby/slack-ruby-bot-server/actions/workflows/test-postgresql.yml/badge.svg)](https://github.com/slack-ruby/slack-ruby-bot-server/actions/workflows/test-postgresql.yml)
8
+ [![rubocop](https://github.com/slack-ruby/slack-ruby-bot-server/actions/workflows/rubocop.yml/badge.svg)](https://github.com/slack-ruby/slack-ruby-bot-server/actions/workflows/rubocop.yml)
7
9
 
8
10
  Build a complete Slack bot service with Slack button integration, in Ruby.
9
11
 
@@ -34,15 +36,15 @@ Build a complete Slack bot service with Slack button integration, in Ruby.
34
36
 
35
37
  ## What is this?
36
38
 
37
- A library that contains a web server and a RESTful [Grape](http://github.com/ruby-grape/grape) API serving a Slack bot to multiple teams. Use in conjunction with [slack-ruby-bot-server-events](https://github.com/slack-ruby/slack-ruby-bot-server-events) to build a complete Slack bot service, or [slack-ruby-bot-server-rtm](https://github.com/slack-ruby/slack-ruby-bot-server-rtm) to build a Class RealTime Slack bot. Your customers can use a Slack button to install the bot.
39
+ A library that contains a web server and a RESTful [Grape](http://github.com/ruby-grape/grape) API serving a Slack bot to multiple teams. Use in conjunction with [slack-ruby-bot-server-events](https://github.com/slack-ruby/slack-ruby-bot-server-events) to build a complete Slack bot service, or [slack-ruby-bot-server-rtm](https://github.com/slack-ruby/slack-ruby-bot-server-rtm) to build a (legacy) Classic RealTime Slack bot. Your customers can use a Slack button to install the bot.
38
40
 
39
41
  ## Stable Release
40
42
 
41
- You're reading the documentation for the **stable** release of slack-ruby-bot-server, v1.2.0. See [UPGRADING](UPGRADING.md) when upgrading from an older version.
43
+ You're reading the documentation for the **stable** release of slack-ruby-bot-server. See [UPGRADING](UPGRADING.md) when upgrading from an older version. See [MIGRATING](MIGRATING.md) for help with migrating Legacy Slack Apps to Granular Scopes.
42
44
 
43
45
  ## Make Your Own
44
46
 
45
- This library alone will only register a new bot, but will not include any bot functionality. To make something useful, we recommend you get started from a [slack-ruby-bot-events-sample](https://github.com/slack-ruby/slack-ruby-bot-server-events-sample) app to bootstrap your project.
47
+ This library alone will only register a new bot, but will not include any bot functionality. To make something useful, we recommend you get started from either [slack-ruby-bot-server-events-app-mentions-sample](https://github.com/slack-ruby/slack-ruby-bot-server-events-app-mentions-sample) (handles a single kind of event), or [slack-ruby-bot-server-events-sample](https://github.com/slack-ruby/slack-ruby-bot-server-events-sample) (handles all kinds of events) to bootstrap your project.
46
48
 
47
49
  ## Usage
48
50
 
@@ -63,7 +65,7 @@ gem 'slack-ruby-bot-server'
63
65
 
64
66
  #### ActiveRecord
65
67
 
66
- Use ActiveRecord with, for example, PostgreSQL via [pg](https://github.com/ged/ruby-pg). Configure the database connection in `postgresql.yml`. Add the `activerecord`, `pg`, `otr-activerecord` and `cursor_pagination` gems to your Gemfile.
68
+ Use ActiveRecord with, for example, PostgreSQL via [pg](https://github.com/ged/ruby-pg). Add the `activerecord`, `pg`, `otr-activerecord` and `cursor_pagination` gems to your Gemfile.
67
69
 
68
70
  ```
69
71
  gem 'pg'
@@ -73,6 +75,40 @@ gem 'otr-activerecord'
73
75
  gem 'cursor_pagination'
74
76
  ```
75
77
 
78
+ Configure the database connection in `config/postgresql.yml`.
79
+
80
+ ```yaml
81
+ default: &default
82
+ adapter: postgresql
83
+ pool: 10
84
+ timeout: 5000
85
+ encoding: unicode
86
+
87
+ development:
88
+ <<: *default
89
+ database: bot_development
90
+
91
+ test:
92
+ <<: *default
93
+ database: bot_test
94
+
95
+ production:
96
+ <<: *default
97
+ database: bot
98
+ ```
99
+
100
+ Establish a connection in your startup code.
101
+
102
+ ```ruby
103
+ ActiveRecord::Base.establish_connection(
104
+ YAML.safe_load(
105
+ ERB.new(
106
+ File.read('config/postgresql.yml')
107
+ ).result, [], [], true
108
+ )[ENV['RACK_ENV']]
109
+ )
110
+ ```
111
+
76
112
  ### OAuth Version and Scopes
77
113
 
78
114
  Configure your app's [OAuth version](https://api.slack.com/authentication/oauth-v2) and [scopes](https://api.slack.com/legacy/oauth-scopes) as needed by your application.
data/UPGRADING.md CHANGED
@@ -23,6 +23,8 @@ class AddOauthFields < ActiveRecord::Migration[5.0]
23
23
  end
24
24
  ```
25
25
 
26
+ See [MIGRATING](MIGRATING.md) for help with migrating Legacy Slack Apps to Granular Scopes.
27
+
26
28
  ### Upgrading to >= 1.1.0
27
29
 
28
30
  #### Extracted RealTime (Legacy) Support
@@ -19,7 +19,7 @@ module SlackRubyBotServer
19
19
 
20
20
  desc 'Get all the teams.'
21
21
  params do
22
- optional :active, type: Boolean, desc: 'Return active teams only.'
22
+ optional :active, type: ::Grape::API::Boolean, desc: 'Return active teams only.'
23
23
  use :pagination
24
24
  end
25
25
  sort Team::SORT_ORDERS
@@ -10,7 +10,7 @@ module SlackRubyBotServer
10
10
  property :team_id, type: String, desc: 'Slack team ID.'
11
11
  property :name, type: String, desc: 'Team name.'
12
12
  property :domain, type: String, desc: 'Team domain.'
13
- property :active, type: Boolean, desc: 'Team is active.'
13
+ property :active, type: ::Grape::API::Boolean, desc: 'Team is active.'
14
14
  property :created_at, type: DateTime, desc: 'Date/time when the team was created.'
15
15
  property :updated_at, type: DateTime, desc: 'Date/time when the team was accepted, declined or canceled.'
16
16
 
@@ -10,7 +10,7 @@ class Team
10
10
  field :token, type: String
11
11
  field :oauth_scope, type: String
12
12
  field :oauth_version, type: String, default: 'v1'
13
- field :active, type: Boolean, default: true
13
+ field :active, type: Mongoid::Boolean, default: true
14
14
  field :bot_user_id, type: String
15
15
  field :activated_user_id, type: String
16
16
  field :activated_user_access_token, type: String
@@ -1,3 +1,3 @@
1
1
  module SlackRubyBotServer
2
- VERSION = '1.2.0'.freeze
2
+ VERSION = '1.2.1'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-ruby-bot-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-28 00:00:00.000000000 Z
11
+ date: 2022-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async
@@ -158,18 +158,23 @@ extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
160
  - ".github/FUNDING.yml"
161
+ - ".github/workflows/danger.yml"
162
+ - ".github/workflows/rubocop.yml"
163
+ - ".github/workflows/test-mongodb.yml"
164
+ - ".github/workflows/test-postgresql.yml"
161
165
  - ".gitignore"
162
166
  - ".rspec"
163
167
  - ".rubocop.yml"
164
168
  - ".rubocop_todo.yml"
165
- - ".travis.yml"
166
169
  - CHANGELOG.md
167
170
  - CONTRIBUTING.md
168
171
  - DEBUGGING.md
169
172
  - Dangerfile
170
173
  - Gemfile
174
+ - Gemfile.danger
171
175
  - Guardfile
172
176
  - LICENSE
177
+ - MIGRATING.md
173
178
  - README.md
174
179
  - RELEASING.md
175
180
  - Rakefile
data/.travis.yml DELETED
@@ -1,33 +0,0 @@
1
- language: ruby
2
-
3
- cache: bundler
4
-
5
- matrix:
6
- include:
7
- - rvm: 2.6.2
8
- script:
9
- - bundle exec danger
10
- services:
11
- - xvfb
12
- - rvm: 2.6.2
13
- env: DATABASE_ADAPTER=activerecord
14
- services:
15
- - xvfb
16
- - postgresql
17
- - rvm: 2.6.2
18
- env: DATABASE_ADAPTER=mongoid
19
- services:
20
- - xvfb
21
- - mongodb
22
-
23
- addons:
24
- firefox: 54.0
25
-
26
- before_install:
27
- - wget https://github.com/mozilla/geckodriver/releases/download/v0.18.0/geckodriver-v0.18.0-linux64.tar.gz
28
- - mkdir geckodriver
29
- - tar -xzf geckodriver-v0.18.0-linux64.tar.gz -C geckodriver
30
- - export PATH=$PATH:$PWD/geckodriver
31
-
32
- script:
33
- - bundle exec rake