Skip to content

Commit

Permalink
Test against Rails 6.1
Browse files Browse the repository at this point in the history
  • Loading branch information
mshibuya committed Nov 28, 2020
1 parent df8ffb1 commit f0c46f1
Show file tree
Hide file tree
Showing 12 changed files with 139 additions and 24 deletions.
8 changes: 6 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,15 @@ jobs:
orm: active_record
adapter: sqlite3
- ruby: 2.7
gemfile: gemfiles/rails_6.0.gemfile
gemfile: gemfiles/rails_6.1.gemfile
orm: active_record
adapter: sqlite3
- ruby: 2.7
gemfile: gemfiles/rails_6.1.gemfile
orm: active_record
adapter: mysql2
- ruby: 2.7
gemfile: gemfiles/rails_6.0.gemfile
gemfile: gemfiles/rails_6.1.gemfile
orm: active_record
adapter: postgresql
- ruby: 2.6
Expand Down
1 change: 1 addition & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ inherit_from: .rubocop_todo.yml

AllCops:
Exclude:
- 'gemfiles/*'
- 'spec/dummy_app/bin/**/*'
- 'spec/dummy_app/db/schema.rb'
- 'spec/dummy_app/tmp/**/*'
Expand Down
17 changes: 17 additions & 0 deletions Appraisals
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,20 @@ appraise "rails-6.0" do
gem 'shrine-mongoid'
end
end

appraise "rails-6.1" do
gem 'rails', '~> 6.1.0.rc1'
gem 'haml'
gem 'sassc-rails', '~> 2.1'
gem 'devise', '~> 4.7'

group :test do
gem 'cancancan', '~> 3.0', github: 'ghiculescu/cancancan', branch: 'avoid-resolve_column_aliases-2'
gem 'rspec-rails', '>= 4.0.0.beta2'
end

group :active_record do
gem 'pg', '>= 1.0.0', platforms: :ruby
gem 'paper_trail', '>= 5.0'
end
end
55 changes: 55 additions & 0 deletions gemfiles/rails_6.1.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "appraisal", ">= 2.0"
gem "rails", "~> 6.1.0.rc1"
gem "haml"
gem "devise", "~> 4.7"
gem "sassc-rails", "~> 2.1"

group :active_record do
gem "paper_trail", ">= 5.0"
gem "pg", ">= 1.0.0", platforms: :ruby

platforms :ruby, :mswin, :mingw, :x64_mingw do
gem "mysql2", ">= 0.3.14"
gem "sqlite3", ">= 1.3"
end
end

group :development, :test do
gem "pry", ">= 0.9"
end

group :test do
gem "cancancan", "~> 3.0", github: "ghiculescu/cancancan", branch: "avoid-resolve_column_aliases-2"
gem "carrierwave", [">= 2.0.0.rc", "< 3"]
gem "database_cleaner", [">= 1.2", "!= 1.4.0", "!= 1.5.0"]
gem "dragonfly", "~> 1.0"
gem "factory_bot", ">= 4.2"
gem "generator_spec", ">= 0.8"
gem "launchy", ">= 2.2"
gem "mini_magick", ">= 3.4"
gem "paperclip", [">= 3.4", "!= 4.3.0"]
gem "poltergeist", "~> 1.5"
gem "pundit"
gem "rack-cache", require: "rack/cache"
gem "rspec-rails", ">= 4.0.0.beta2"
gem "rspec-expectations", "!= 3.8.3"
gem "rspec-retry"
gem "rubocop", "~> 0.68.1"
gem "rubocop-performance"
gem "simplecov", ">= 0.9", require: false
gem "simplecov-lcov", require: false
gem "shrine", "~> 2.0"
gem "shrine-memory"
gem "timecop", ">= 0.5"
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]

platforms :ruby_19 do
gem "tins", "~> 1.6.0", require: false
end
end

gemspec path: "../"
8 changes: 7 additions & 1 deletion lib/rails_admin/adapters/active_record.rb
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,13 @@ def base_class
delegate :primary_key, :table_name, to: :model, prefix: false

def encoding
case ::ActiveRecord::Base.connection_config[:adapter]
adapter =
if ::ActiveRecord::Base.respond_to?(:connection_db_config)
::ActiveRecord::Base.connection_db_config.configuration_hash[:adapter]
else
::ActiveRecord::Base.connection_config[:adapter]
end
case adapter
when 'postgresql'
::ActiveRecord::Base.connection.select_one("SELECT ''::text AS str;").values.first.encoding
when 'mysql2'
Expand Down
2 changes: 1 addition & 1 deletion lib/rails_admin/adapters/active_record/abstract_object.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def set_attributes(attributes)
end

def save(options = {validate: true})
object.save(options)
object.save(**options)
end

def method_missing(method_name, *args, &block)
Expand Down
4 changes: 2 additions & 2 deletions spec/dummy_app/config/database.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ postgresql:
database: rails_admin
username: postgres
password:
host: localhost
host: 127.0.0.1
encoding: utf8
pool: 5
timeout: 5000
Expand All @@ -18,7 +18,7 @@ mysql:
database: rails_admin
username: root
password:
host: localhost
host: 127.0.0.1
encoding: utf8
pool: 5
timeout: 5000
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class UpdateActiveStorageTables < ActiveRecord::Migration[5.0]
def change
add_column :active_storage_blobs, :service_name, :string, null: false, default: 'local'
create_table :active_storage_variant_records do |t|
t.belongs_to :blob, null: false, index: false
t.string :variation_digest, null: false

t.index %i[blob_id variation_digest], name: "index_active_storage_variant_records_uniqueness", unique: true
end
end
end
16 changes: 6 additions & 10 deletions spec/integration/fields/enum_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -141,21 +141,17 @@ def color_list

describe 'when serialize is enabled in ActiveRecord model', active_record: true do
before do
# ActiveRecord 4.2 momoizes result of serialized_attributes, so we have to clear it.
Team.remove_instance_variable(:@serialized_attributes) if Team.instance_variable_defined?(:@serialized_attributes)
Team.instance_eval do
class TeamWithSerializedEnum < Team
self.table_name = 'teams'
serialize :color
def color_enum
%w(blue green red)
end
end
visit new_path(model_name: 'team')
end

after do
Team.reset_column_information
Team.attribute_type_decorations.clear
Team.instance_eval { undef :color_enum }
RailsAdmin.config do |c|
c.included_models = [TeamWithSerializedEnum]
end
visit new_path(model_name: 'team_with_serialized_enum')
end

it 'makes enumeration multi-selectable' do
Expand Down
17 changes: 14 additions & 3 deletions spec/orm/active_record.rb
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,21 @@ def columns
end

def column(name, sql_type = nil, default = nil, null = true)
define_attribute(name.to_s,
connection.send(:lookup_cast_type, sql_type.to_s))
cast_type = connection.send(:lookup_cast_type, sql_type.to_s)
define_attribute(name.to_s, cast_type)
columns <<
ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, connection.send(:lookup_cast_type, sql_type.to_s), sql_type.to_s, null)
if ActiveRecord.version > Gem::Version.new('6.0')
type_metadata = ActiveRecord::ConnectionAdapters::SqlTypeMetadata.new(
sql_type: sql_type.to_s,
type: cast_type.type,
limit: cast_type.limit,
precision: cast_type.precision,
scale: cast_type.scale,
)
ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, type_metadata, null)
else
ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, cast_type, sql_type.to_s, null)
end
end

def columns_hash
Expand Down
13 changes: 10 additions & 3 deletions spec/rails_admin/adapters/active_record_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,15 @@
require 'timecop'

RSpec.describe 'RailsAdmin::Adapters::ActiveRecord', active_record: true do
let(:activerecord_config) do
if ::ActiveRecord::Base.respond_to? :connection_db_config
::ActiveRecord::Base.connection_db_config.configuration_hash
else
::ActiveRecord::Base.connection_config
end
end
let(:like) do
if ['postgresql', 'postgis'].include? ::ActiveRecord::Base.configurations[Rails.env]['adapter']
if ['postgresql', 'postgis'].include? activerecord_config[:adapter]
'(field ILIKE ?)'
else
'(LOWER(field) LIKE ?)'
Expand Down Expand Up @@ -122,7 +129,7 @@ class PlayerWithDefaultScope < Player
end

it 'supports multibyte querying' do
unless ::ActiveRecord::Base.configurations[Rails.env]['adapter'] == 'sqlite3'
unless activerecord_config[:adapter] == 'sqlite3'
results = abstract_model.all(query: @players[4].name)
expect(results).to eq(@players[4, 1])
end
Expand Down Expand Up @@ -269,7 +276,7 @@ def build_statement(type, value, operator)
end

it 'performs case-insensitive searches' do
unless ['postgresql', 'postgis'].include?(::ActiveRecord::Base.configurations[Rails.env]['adapter'])
unless ['postgresql', 'postgis'].include?(activerecord_config[:adapter])
expect(build_statement(:string, 'foo', 'default')).to eq([like, '%foo%'])
expect(build_statement(:string, 'FOO', 'default')).to eq([like, '%foo%'])
end
Expand Down
11 changes: 9 additions & 2 deletions spec/rails_admin/support/csv_converter_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,17 @@
subject { RailsAdmin::CSVConverter.new(objects, schema).to_csv(options) }

context 'when encoding FROM latin1', active_record: true do
let(:connection_config) do
if ActiveRecord::Base.respond_to?(:connection_db_config)
ActiveRecord::Base.connection_db_config.configuration_hash
else
ActiveRecord::Base.connection_config
end
end
let(:encoding) { '' }
let(:objects) { FactoryBot.create_list :player, 1, number: 1, name: 'Josè'.encode('ISO-8859-1') }
before do
case ActiveRecord::Base.connection_config[:adapter]
case connection_config[:adapter]
when 'postgresql'
@connection = ActiveRecord::Base.connection.instance_variable_get(:@connection)
@connection.set_client_encoding('latin1')
Expand All @@ -46,7 +53,7 @@
end
end
after do
case ActiveRecord::Base.connection_config[:adapter]
case connection_config[:adapter]
when 'postgresql'
@connection.set_client_encoding('utf8')
when 'mysql2'
Expand Down

0 comments on commit f0c46f1

Please sign in to comment.