schema_plus_views 0.3.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/prs.yml +194 -0
  3. data/.gitignore +1 -0
  4. data/.simplecov +20 -0
  5. data/Gemfile +4 -1
  6. data/README.md +58 -31
  7. data/Rakefile +2 -0
  8. data/gemfiles/Gemfile.base +1 -1
  9. data/gemfiles/activerecord-5.2/Gemfile.base +4 -0
  10. data/gemfiles/activerecord-5.2/Gemfile.mysql2 +10 -0
  11. data/gemfiles/activerecord-5.2/Gemfile.postgresql +10 -0
  12. data/gemfiles/{activerecord-4.2 → activerecord-5.2}/Gemfile.sqlite3 +3 -3
  13. data/gemfiles/activerecord-6.0/Gemfile.base +4 -0
  14. data/gemfiles/activerecord-6.0/Gemfile.mysql2 +10 -0
  15. data/gemfiles/activerecord-6.0/Gemfile.postgresql +10 -0
  16. data/gemfiles/activerecord-6.0/Gemfile.sqlite3 +10 -0
  17. data/lib/schema_plus/views/active_record/connection_adapters/abstract_adapter.rb +21 -5
  18. data/lib/schema_plus/views/active_record/connection_adapters/mysql2_adapter.rb +7 -11
  19. data/lib/schema_plus/views/active_record/connection_adapters/postgresql_adapter.rb +76 -17
  20. data/lib/schema_plus/views/active_record/connection_adapters/sqlite3_adapter.rb +7 -9
  21. data/lib/schema_plus/views/active_record/migration/command_recorder.rb +5 -1
  22. data/lib/schema_plus/views/middleware.rb +35 -34
  23. data/lib/schema_plus/views/schema_dump.rb +28 -0
  24. data/lib/schema_plus/views/version.rb +3 -1
  25. data/lib/schema_plus/views.rb +3 -0
  26. data/lib/schema_plus_views.rb +2 -0
  27. data/schema_dev.yml +7 -2
  28. data/schema_plus_views.gemspec +10 -9
  29. data/spec/dumper_spec.rb +60 -10
  30. data/spec/introspection_spec.rb +54 -6
  31. data/spec/middleware_spec.rb +3 -18
  32. data/spec/migration_spec.rb +108 -58
  33. data/spec/named_schemas_spec.rb +10 -42
  34. data/spec/sanity_spec.rb +2 -0
  35. data/spec/spec_helper.rb +16 -3
  36. metadata +39 -56
  37. data/.travis.yml +0 -18
  38. data/gemfiles/activerecord-4.2/Gemfile.base +0 -3
  39. data/gemfiles/activerecord-4.2/Gemfile.mysql2 +0 -10
  40. data/gemfiles/activerecord-4.2/Gemfile.postgresql +0 -10
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  class Item < ActiveRecord::Base
@@ -13,100 +15,148 @@ describe "Migration" do
13
15
 
14
16
  let(:migration) { ActiveRecord::Migration }
15
17
  let(:connection) { ActiveRecord::Base.connection }
16
- let(:schema) { ActiveRecord::Schema }
17
18
 
18
19
  before(:each) do
19
20
  define_schema_and_data
20
21
  end
21
22
 
22
- context "creation" do
23
- it "should create correct views" do
24
- expect(AOnes.all.collect(&:s)).to eq(%W[one_one one_two])
25
- expect(ABOnes.all.collect(&:s)).to eq(%W[one_one])
23
+ shared_examples 'view checks' do |options = {}|
24
+ context "creation" do
25
+ it "should create correct views" do
26
+ expect(AOnes.all.collect(&:s)).to eq(%W[one_one one_two])
27
+ expect(ABOnes.all.collect(&:s)).to eq(%W[one_one])
28
+ end
26
29
  end
27
- end
28
30
 
29
- context "duplicate creation" do
30
- before(:each) do
31
- migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=1)')
32
- end
31
+ context "duplicate creation" do
32
+ before(:each) do
33
+ migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=1)', options)
34
+ end
33
35
 
34
- it "should raise an error by default" do
35
- expect {migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)')}.to raise_error ActiveRecord::StatementInvalid
36
- end
36
+ it "should raise an error by default" do
37
+ expect { migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)', options) }.to raise_error ActiveRecord::StatementInvalid
38
+ end
37
39
 
38
- it "should override existing definition if :force true" do
39
- migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)', :force => true)
40
- expect(connection.view_definition('dupe_me')).to match(%r{WHERE .*a.*=.*2}i)
41
- end
42
-
43
- context "Postgres and MySQL only", :sqlite3 => :skip do
44
- it "should override existing definition if :allow_replace is true" do
45
- migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)', :allow_replace => true)
40
+ it "should override existing definition if :force true" do
41
+ migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)', options.merge(force: true))
46
42
  expect(connection.view_definition('dupe_me')).to match(%r{WHERE .*a.*=.*2}i)
47
43
  end
48
- end
49
- end
50
44
 
51
- context "dropping" do
52
- it "should raise an error if the view doesn't exist" do
53
- expect { migration.drop_view('doesnt_exist') }.to raise_error ActiveRecord::StatementInvalid
45
+ unless options[:materialized]
46
+ context "Postgres and MySQL only", :sqlite3 => :skip do
47
+ it "should override existing definition if :allow_replace is true" do
48
+ migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)', options.merge(allow_replace: true))
49
+ expect(connection.view_definition('dupe_me')).to match(%r{WHERE .*a.*=.*2}i)
50
+ end
51
+ end
52
+ end
54
53
  end
55
54
 
56
- it "should fail silently when using if_exists option" do
57
- expect { migration.drop_view('doesnt_exist', :if_exists => true) }.not_to raise_error
55
+ context "dropping" do
56
+ it "should raise an error if the view doesn't exist" do
57
+ expect { migration.drop_view('doesnt_exist', options) }.to raise_error ActiveRecord::StatementInvalid
58
+ end
59
+
60
+ it "should fail silently when using if_exists option" do
61
+ expect { migration.drop_view('doesnt_exist', options.merge(if_exists: true)) }.not_to raise_error
62
+ end
63
+
64
+ context "with a view that exists" do
65
+ before { migration.create_view('view_that_exists', 'SELECT * FROM items WHERE (a=1)', options) }
66
+
67
+ it "should succeed" do
68
+ migration.drop_view('view_that_exists', options)
69
+ expect(connection.views).not_to include('view_that_exists')
70
+ end
71
+ end
58
72
  end
59
73
 
60
- context "with a view that exists" do
61
- before { migration.create_view('view_that_exists', 'SELECT * FROM items WHERE (a=1)') }
74
+ describe "rollback" do
75
+ it "properly rolls back a create_view" do
76
+ m = build_migration do
77
+ define_method(:change) {
78
+ create_view :copy, "SELECT * FROM items", options
79
+ }
80
+ end
81
+ m.migrate(:up)
82
+ expect(connection.views).to include("copy")
83
+ m.migrate(:down)
84
+ expect(connection.views).not_to include("copy")
85
+ end
62
86
 
63
- it "should succeed" do
64
- migration.drop_view('view_that_exists')
65
- expect(connection.views).not_to include('view_that_exists')
87
+ it "raises error for drop_view" do
88
+ m = build_migration do
89
+ define_method(:change) {
90
+ drop_view :a_ones, options
91
+ }
92
+ end
93
+ expect { m.migrate(:down) }.to raise_error(::ActiveRecord::IrreversibleMigration)
66
94
  end
67
95
  end
68
96
  end
69
97
 
70
- describe "rollback" do
71
- it "properly rolls back a create_view" do
72
- m = Class.new ::ActiveRecord::Migration do
73
- define_method(:change) {
74
- create_view :copy, "SELECT * FROM items"
75
- }
98
+ describe 'regular views' do
99
+ before(:each) do
100
+ apply_migration do
101
+ create_view :a_ones, Item.select('b, s').where(:a => 1)
102
+ create_view :ab_ones, "select s from a_ones where b = 1"
76
103
  end
77
- m.migrate(:up)
78
- expect(connection.views).to include("copy")
79
- m.migrate(:down)
80
- expect(connection.views).not_to include("copy")
81
104
  end
82
105
 
83
- it "raises error for drop_view" do
84
- m = Class.new ::ActiveRecord::Migration do
85
- define_method(:change) {
86
- drop_view :a_ones
87
- }
106
+ include_examples 'view checks'
107
+ end
108
+
109
+ describe 'materialized views', postgresql: :only do
110
+ before(:each) do
111
+ apply_migration do
112
+ create_view :a_ones, Item.select('b, s').where(:a => 1), materialized: true
113
+ create_view :ab_ones, "select s from items where a = 1 AND b = 1", materialized: true
88
114
  end
89
- expect { m.migrate(:down) }.to raise_error(::ActiveRecord::IrreversibleMigration)
90
115
  end
91
- end
92
116
 
117
+ include_examples 'view checks', materialized: true
118
+
119
+ describe 'refreshing the view' do
120
+ it "refreshes the view" do
121
+ expect(AOnes.count).to eq(2)
122
+ Item.create!(a: 1, b: 3, s: 'one_three')
123
+ expect(AOnes.count).to eq(2)
124
+ connection.refresh_view('a_ones')
125
+ expect(AOnes.count).to eq(3)
126
+ end
127
+ end
128
+
129
+ context 'with indexes' do
130
+ it 'allows creating indexes on the materialized view' do
131
+ apply_migration do
132
+ add_index :a_ones, :s
133
+ add_index :a_ones, :b, unique: true
134
+ end
135
+
136
+ expect(connection.indexes(:a_ones)).to contain_exactly(
137
+ have_attributes(columns: ['s'], unique: false),
138
+ have_attributes(columns: ['b'], unique: true)
139
+ )
140
+ end
141
+ end
142
+ end
93
143
 
94
144
  protected
95
145
 
96
146
  def define_schema_and_data
97
- connection.views.each do |view| connection.drop_view view end
98
- connection.tables.each do |table| connection.drop_table table, cascade: true end
99
-
100
- schema.define do
147
+ connection.views.each do |view|
148
+ connection.drop_view view
149
+ end
150
+ connection.tables.each do |table|
151
+ connection.drop_table table, cascade: true
152
+ end
101
153
 
154
+ apply_migration do
102
155
  create_table :items, :force => true do |t|
103
156
  t.integer :a
104
157
  t.integer :b
105
- t.string :s
158
+ t.string :s
106
159
  end
107
-
108
- create_view :a_ones, Item.select('b, s').where(:a => 1)
109
- create_view :ab_ones, "select s from a_ones where b = 1"
110
160
  end
111
161
  connection.execute "insert into items (a, b, s) values (1, 1, 'one_one')"
112
162
  connection.execute "insert into items (a, b, s) values (1, 2, 'one_two')"
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe "with multiple schemas" do
@@ -6,10 +8,10 @@ describe "with multiple schemas" do
6
8
  end
7
9
 
8
10
  before(:each) do
9
- newdb = case connection.adapter_name
10
- when /^mysql/i then "CREATE SCHEMA IF NOT EXISTS schema_plus_views_test2"
11
- when /^postgresql/i then "CREATE SCHEMA schema_plus_views_test2"
12
- when /^sqlite/i then "ATTACH ':memory:' AS schema_plus_views_test2"
11
+ newdb = case
12
+ when SchemaDev::Rspec::Helpers.mysql? then "CREATE SCHEMA IF NOT EXISTS schema_plus_views_test2"
13
+ when SchemaDev::Rspec::Helpers.postgresql? then "CREATE SCHEMA schema_plus_views_test2"
14
+ when SchemaDev::Rspec::Helpers.sqlite3? then "ATTACH ':memory:' AS schema_plus_views_test2"
13
15
  end
14
16
  begin
15
17
  ActiveRecord::Base.connection.execute newdb
@@ -28,10 +30,10 @@ describe "with multiple schemas" do
28
30
  end
29
31
 
30
32
  connection.execute 'DROP TABLE IF EXISTS schema_plus_views_test2.users'
31
- connection.execute 'CREATE TABLE schema_plus_views_test2.users (id ' + case connection.adapter_name
32
- when /^mysql/i then "integer primary key auto_increment"
33
- when /^postgresql/i then "serial primary key"
34
- when /^sqlite/i then "integer primary key autoincrement"
33
+ connection.execute 'CREATE TABLE schema_plus_views_test2.users (id ' + case
34
+ when SchemaDev::Rspec::Helpers.mysql? then "integer primary key auto_increment"
35
+ when SchemaDev::Rspec::Helpers.postgresql? then "serial primary key"
36
+ when SchemaDev::Rspec::Helpers.sqlite3? then "integer primary key autoincrement"
35
37
  end + ", login varchar(255))"
36
38
  end
37
39
 
@@ -60,38 +62,4 @@ describe "with multiple schemas" do
60
62
  end
61
63
  end
62
64
 
63
- context "when using PostGIS", :postgresql => :only do
64
- before(:all) do
65
- begin
66
- connection.execute "CREATE SCHEMA postgis"
67
- rescue ActiveRecord::StatementInvalid => e
68
- raise unless e.message =~ /already exists/
69
- end
70
- end
71
-
72
- around(:each) do |example|
73
- begin
74
- connection.execute "SET search_path to '$user','public','postgis'"
75
- example.run
76
- ensure
77
- connection.execute "SET search_path to '$user','public'"
78
- end
79
- end
80
-
81
- before(:each) do
82
- allow(connection).to receive(:adapter_name).and_return('PostGIS')
83
- end
84
-
85
- it "should hide views in postgis schema" do
86
- begin
87
- connection.create_view "postgis.hidden", "select 1", :force => true
88
- connection.create_view :myview, "select 2", :force => true
89
- expect(connection.views).to eq(["myview"])
90
- ensure
91
- connection.execute 'DROP VIEW postgis.hidden' rescue nil
92
- connection.execute 'DROP VIEW myview' rescue nil
93
- end
94
- end
95
- end
96
-
97
65
  end
data/spec/sanity_spec.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
 
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'simplecov'
2
- require 'simplecov-gem-profile'
3
- SimpleCov.start "gem"
4
+ SimpleCov.start
4
5
 
5
6
  $LOAD_PATH.unshift(File.dirname(__FILE__))
6
7
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
@@ -12,7 +13,7 @@ require 'schema_dev/rspec'
12
13
 
13
14
  SchemaDev::Rspec.setup
14
15
 
15
- Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
16
+ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
16
17
 
17
18
  RSpec.configure do |config|
18
19
  config.warnings = true
@@ -29,4 +30,16 @@ RSpec.configure do |config|
29
30
  end
30
31
  end
31
32
 
33
+ def apply_migration(config = {}, &block)
34
+ ActiveRecord::Schema.define do
35
+ instance_eval &block
36
+ end
37
+ end
38
+
39
+ def build_migration(version: 5.0, &block)
40
+ Class.new(::ActiveRecord::Migration[version]) do
41
+ instance_eval &block
42
+ end
43
+ end
44
+
32
45
  SimpleCov.command_name "[ruby #{RUBY_VERSION} - ActiveRecord #{::ActiveRecord::VERSION::STRING} - #{ActiveRecord::Base.connection.adapter_name}]"
metadata CHANGED
@@ -1,71 +1,77 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_plus_views
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ronen barzel
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-24 00:00:00.000000000 Z
11
+ date: 2022-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.2'
20
+ - - "<"
18
21
  - !ruby/object:Gem::Version
19
- version: '4.2'
22
+ version: '6.1'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '5.2'
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '4.2'
32
+ version: '6.1'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: schema_plus_core
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - "~>"
32
38
  - !ruby/object:Gem::Version
33
- version: '1.0'
39
+ version: '3.0'
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
44
  - - "~>"
39
45
  - !ruby/object:Gem::Version
40
- version: '1.0'
46
+ version: '3.0'
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: bundler
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - "~>"
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
- version: '1.7'
53
+ version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - "~>"
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
- version: '1.7'
60
+ version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: rake
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
65
  - - "~>"
60
66
  - !ruby/object:Gem::Version
61
- version: '10.0'
67
+ version: '13.0'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
- version: '10.0'
74
+ version: '13.0'
69
75
  - !ruby/object:Gem::Dependency
70
76
  name: rspec
71
77
  requirement: !ruby/object:Gem::Requirement
@@ -86,60 +92,37 @@ dependencies:
86
92
  requirements:
87
93
  - - "~>"
88
94
  - !ruby/object:Gem::Version
89
- version: '3.6'
95
+ version: '4.1'
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
100
  - - "~>"
95
101
  - !ruby/object:Gem::Version
96
- version: '3.6'
97
- - !ruby/object:Gem::Dependency
98
- name: simplecov
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: simplecov-gem-profile
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- description:
102
+ version: '4.1'
103
+ description:
126
104
  email:
127
105
  - ronen@barzel.org
128
106
  executables: []
129
107
  extensions: []
130
108
  extra_rdoc_files: []
131
109
  files:
110
+ - ".github/workflows/prs.yml"
132
111
  - ".gitignore"
133
- - ".travis.yml"
112
+ - ".simplecov"
134
113
  - Gemfile
135
114
  - LICENSE.txt
136
115
  - README.md
137
116
  - Rakefile
138
117
  - gemfiles/Gemfile.base
139
- - gemfiles/activerecord-4.2/Gemfile.base
140
- - gemfiles/activerecord-4.2/Gemfile.mysql2
141
- - gemfiles/activerecord-4.2/Gemfile.postgresql
142
- - gemfiles/activerecord-4.2/Gemfile.sqlite3
118
+ - gemfiles/activerecord-5.2/Gemfile.base
119
+ - gemfiles/activerecord-5.2/Gemfile.mysql2
120
+ - gemfiles/activerecord-5.2/Gemfile.postgresql
121
+ - gemfiles/activerecord-5.2/Gemfile.sqlite3
122
+ - gemfiles/activerecord-6.0/Gemfile.base
123
+ - gemfiles/activerecord-6.0/Gemfile.mysql2
124
+ - gemfiles/activerecord-6.0/Gemfile.postgresql
125
+ - gemfiles/activerecord-6.0/Gemfile.sqlite3
143
126
  - lib/schema_plus/views.rb
144
127
  - lib/schema_plus/views/active_record/connection_adapters/abstract_adapter.rb
145
128
  - lib/schema_plus/views/active_record/connection_adapters/mysql2_adapter.rb
@@ -147,6 +130,7 @@ files:
147
130
  - lib/schema_plus/views/active_record/connection_adapters/sqlite3_adapter.rb
148
131
  - lib/schema_plus/views/active_record/migration/command_recorder.rb
149
132
  - lib/schema_plus/views/middleware.rb
133
+ - lib/schema_plus/views/schema_dump.rb
150
134
  - lib/schema_plus/views/version.rb
151
135
  - lib/schema_plus_views.rb
152
136
  - schema_dev.yml
@@ -162,7 +146,7 @@ homepage: https://github.com/SchemaPlus/schema_plus_views
162
146
  licenses:
163
147
  - MIT
164
148
  metadata: {}
165
- post_install_message:
149
+ post_install_message:
166
150
  rdoc_options: []
167
151
  require_paths:
168
152
  - lib
@@ -170,16 +154,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
154
  requirements:
171
155
  - - ">="
172
156
  - !ruby/object:Gem::Version
173
- version: '0'
157
+ version: '2.5'
174
158
  required_rubygems_version: !ruby/object:Gem::Requirement
175
159
  requirements:
176
160
  - - ">="
177
161
  - !ruby/object:Gem::Version
178
162
  version: '0'
179
163
  requirements: []
180
- rubyforge_project:
181
- rubygems_version: 2.2.2
182
- signing_key:
164
+ rubygems_version: 3.0.8
165
+ signing_key:
183
166
  specification_version: 4
184
167
  summary: Adds support for views to ActiveRecord
185
168
  test_files:
data/.travis.yml DELETED
@@ -1,18 +0,0 @@
1
- # This file was auto-generated by the schema_dev tool, based on the data in
2
- # ./schema_dev.yml
3
- # Please do not edit this file; any changes will be overwritten next time
4
- # schema_dev gets run.
5
- ---
6
- sudo: false
7
- rvm:
8
- - 2.1.5
9
- gemfile:
10
- - gemfiles/activerecord-4.2/Gemfile.mysql2
11
- - gemfiles/activerecord-4.2/Gemfile.postgresql
12
- - gemfiles/activerecord-4.2/Gemfile.sqlite3
13
- env: POSTGRESQL_DB_USER=postgres MYSQL_DB_USER=travis
14
- addons:
15
- postgresql: '9.4'
16
- before_script: bundle exec rake create_databases
17
- after_script: bundle exec rake drop_databases
18
- script: bundle exec rake travis
@@ -1,3 +0,0 @@
1
- eval File.read File.expand_path('../../Gemfile.base', __FILE__)
2
-
3
- gem "activerecord", "~> 4.2.6"
@@ -1,10 +0,0 @@
1
- require "pathname"
2
- eval(Pathname.new(__FILE__).dirname.join("Gemfile.base").read, binding)
3
-
4
- platform :ruby do
5
- gem "mysql2", '>= 0.3.18', '< 0.5'
6
- end
7
-
8
- platform :jruby do
9
- gem 'activerecord-jdbcmysql-adapter'
10
- end
@@ -1,10 +0,0 @@
1
- require "pathname"
2
- eval(Pathname.new(__FILE__).dirname.join("Gemfile.base").read, binding)
3
-
4
- platform :ruby do
5
- gem "pg"
6
- end
7
-
8
- platform :jruby do
9
- gem 'activerecord-jdbcpostgresql-adapter'
10
- end