Class: Departure::RailsAdapter

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/departure/rails_adapter.rb

Defined Under Namespace

Classes: BaseAdapter, MustImplementError, UnsupportedRailsVersionError, V7_2_Adapter, V8_0_Adapter, V8_1_Mysql2Adapter, V8_1_TrilogyAdapter

Class Method Summary collapse

Class Method Details

.current_versionObject



24
25
26
# File 'lib/departure/rails_adapter.rb', line 24

def current_version
  ActiveRecord::VERSION
end

.for(ar_version, db_connection_adapter: nil) ⇒ Object

rubocop:disable Metrics/PerceivedComplexity



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/departure/rails_adapter.rb', line 33

def for(ar_version, db_connection_adapter: nil)
  # rubocop:enable Metrics/PerceivedComplexity
  if ar_version::MAJOR == 8 && ar_version::MINOR.positive?
    if db_connection_adapter == 'trilogy'
      V8_1_TrilogyAdapter
    else
      V8_1_Mysql2Adapter
    end
  elsif ar_version::MAJOR == 8
    V8_0_Adapter
  elsif ar_version::MAJOR >= 7 && ar_version::MINOR >= 2
    V7_2_Adapter
  else
    raise UnsupportedRailsVersionError, "Unsupported Rails version: #{ar_version}"
  end
end

.for_current(**args) ⇒ Object



28
29
30
# File 'lib/departure/rails_adapter.rb', line 28

def for_current(**args)
  self.for(current_version, **args)
end

.register_integrations(**args) ⇒ Object



13
14
15
# File 'lib/departure/rails_adapter.rb', line 13

def register_integrations(**args)
  for_current(**args).register_integrations
end

.version_matches?(version_string, compatibility_string = current_version::STRING) ⇒ Boolean

Returns:

  • (Boolean)


17
18
19
20
21
22
# File 'lib/departure/rails_adapter.rb', line 17

def version_matches?(version_string, compatibility_string = current_version::STRING)
  raise "Invalid Gem Version: '#{version_string}'" unless Gem::Version.correct?(version_string)

  requirement = Gem::Requirement.new(compatibility_string)
  requirement.satisfied_by?(Gem::Version.new(version_string))
end