Switch to using the zeitwork autoloader

This commit is contained in:
Tom Hughes 2020-12-10 14:46:41 +00:00
parent 786b8cce65
commit eada36ff96
50 changed files with 71 additions and 148 deletions

View file

@ -130,6 +130,7 @@ group :development do
gem "annotate"
gem "better_errors"
gem "binding_of_caller"
gem "debug_inspector", "< 1.0.0"
gem "listen"
gem "vendorer"
end

View file

@ -140,7 +140,7 @@ GEM
rexml
crass (1.0.6)
dalli (2.7.11)
debug_inspector (1.0.0)
debug_inspector (0.0.3)
deep_merge (1.2.1)
delayed_job (4.1.9)
activesupport (>= 3.0, < 6.2)
@ -486,6 +486,7 @@ DEPENDENCIES
composite_primary_keys (~> 12.0.0)
config
dalli
debug_inspector (< 1.0.0)
delayed_job_active_record
dynamic_form
erb_lint

View file

@ -31,9 +31,6 @@ module OpenStreetMap
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W[#{config.root}/lib]
# Continue to use the classic autoloader for now
config.autoloader = :classic
# Force requests from old versions of IE (<= IE8) to be UTF-8 encoded.
# This has defaulted to false since rails 6.0
config.action_view.default_enforce_utf8 = true

View file

@ -0,0 +1,59 @@
if defined?(ActiveRecord::ConnectionAdapters::AbstractAdapter)
module OpenStreetMap
module ActiveRecord
module AbstractAdapter
def add_index_options(table_name, column_name, options = {})
columns = options.delete(:columns)
index_name, index_type, index_columns, index_options, algorithm, using = super(table_name, column_name, options)
[index_name, index_type, columns || index_columns, index_options, algorithm, using]
end
end
module PostgreSQLAdapter
def quote_column_name(name)
Array(name).map { |n| super(n) }.join(", ")
end
def add_primary_key(table_name, column_name, _options = {})
table_name = quote_table_name(table_name)
column_name = quote_column_name(column_name)
execute "ALTER TABLE #{table_name} ADD PRIMARY KEY (#{column_name})"
end
def remove_primary_key(table_name)
table_name = quote_table_name(table_name)
execute "ALTER TABLE #{table_name} DROP PRIMARY KEY"
end
def alter_primary_key(table_name, new_columns)
constraint_name = quote_table_name("#{table_name}_pkey")
table_name = quote_table_name(table_name)
new_columns = quote_column_name(new_columns)
execute "ALTER TABLE #{table_name} DROP CONSTRAINT #{constraint_name}"
execute "ALTER TABLE #{table_name} ADD PRIMARY KEY (#{new_columns})"
end
def create_enumeration(enumeration_name, values)
execute "CREATE TYPE #{enumeration_name} AS ENUM ('#{values.join '\',\''}')"
end
def drop_enumeration(enumeration_name)
execute "DROP TYPE #{enumeration_name}"
end
def rename_enumeration(old_name, new_name)
old_name = quote_table_name(old_name)
new_name = quote_table_name(new_name)
execute "ALTER TYPE #{old_name} RENAME TO #{new_name}"
end
end
end
end
ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend(OpenStreetMap::ActiveRecord::AbstractAdapter)
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(OpenStreetMap::ActiveRecord::PostgreSQLAdapter)
end

View file

@ -0,0 +1,9 @@
Rails.autoloaders.each do |autoloader|
autoloader.inflector.inflect(
"gpx" => "GPX",
"id" => "ID",
"osm" => "OSM",
"rubyvm" => "RubyVM",
"utf8" => "UTF8"
)
end

View file

@ -1,5 +1,3 @@
require "migrate"
class CreateOsmDb < ActiveRecord::Migration[4.2]
def self.up
create_table "current_nodes", :id => false do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class CleanupOsmDb < ActiveRecord::Migration[4.2]
def self.up
change_column "current_nodes", "latitude", :float, :limit => 53, :null => false

View file

@ -1,5 +1,3 @@
require "migrate"
class SqlSessionStoreSetup < ActiveRecord::Migration[4.2]
def self.up
create_table "sessions" do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class UserEnhancements < ActiveRecord::Migration[4.2]
def self.up
add_column "diary_entries", "latitude", :float, :limit => 53

View file

@ -1,5 +1,3 @@
require "migrate"
class TileTracepoints < ActiveRecord::Migration[4.2]
class Tracepoint < ApplicationRecord
self.table_name = "gps_points"

View file

@ -1,5 +1,3 @@
require "migrate"
class TileNodes < ActiveRecord::Migration[4.2]
class Node < ApplicationRecord
self.table_name = "current_nodes"

View file

@ -1,5 +1,3 @@
require "migrate"
class AddRelations < ActiveRecord::Migration[4.2]
def self.up
# enums work like strings but are more efficient

View file

@ -1,5 +1,3 @@
require "migrate"
class RemoveSegments < ActiveRecord::Migration[4.2]
def self.up
have_segs = select_value("SELECT count(*) FROM current_segments").to_i.nonzero?

View file

@ -1,5 +1,3 @@
require "migrate"
class DiaryComments < ActiveRecord::Migration[4.2]
def self.up
create_table "diary_comments", :id => false do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class CreateAcls < ActiveRecord::Migration[4.2]
def self.up
create_table "acls", :id => false do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class PopulateNodeTagsAndRemove < ActiveRecord::Migration[4.2]
def self.up
have_nodes = select_value("SELECT count(*) FROM current_nodes").to_i.nonzero?

View file

@ -1,5 +1,3 @@
require "migrate"
class MoveToInnodb < ActiveRecord::Migration[4.2]
@conv_tables = %w[nodes ways way_tags way_nodes current_way_tags relation_members relations relation_tags current_relation_tags]

View file

@ -1,5 +1,3 @@
require "migrate"
class KeyConstraints < ActiveRecord::Migration[4.2]
def self.up
# Primary keys

View file

@ -1,5 +1,3 @@
require "migrate"
class AddChangesets < ActiveRecord::Migration[4.2]
@conv_user_tables = %w[current_nodes current_relations current_ways nodes relations ways]

View file

@ -1,5 +1,3 @@
require "migrate"
class OrderRelationMembers < ActiveRecord::Migration[4.2]
def self.up
# add sequence column. rails won't let us define an ordering here,

View file

@ -1,5 +1,3 @@
require "migrate"
class AddEndTimeToChangesets < ActiveRecord::Migration[4.2]
def self.up
# swap the boolean closed-or-not for a time when the changeset will

View file

@ -1,5 +1,3 @@
require "migrate"
class AddMoreChangesetIndexes < ActiveRecord::Migration[4.2]
def self.up
add_index "changesets", ["created_at"], :name => "changesets_created_at_idx"

View file

@ -1,5 +1,3 @@
require "migrate"
class AddUserForeignKeys < ActiveRecord::Migration[4.2]
def change
add_foreign_key :changesets, :users, :name => "changesets_user_id_fkey"

View file

@ -1,5 +1,3 @@
require "migrate"
class AddForeignKeys < ActiveRecord::Migration[4.2]
def self.up
add_foreign_key :changeset_tags, :changesets, :column => :id, :name => "changeset_tags_id_fkey"

View file

@ -1,4 +1,3 @@
require "migrate"
require "rexml/document"
class CreateCountries < ActiveRecord::Migration[4.2]

View file

@ -1,5 +1,3 @@
require "migrate"
class CreateLanguages < ActiveRecord::Migration[4.2]
def change
create_table :languages, :id => false do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class ChangeUserLocale < ActiveRecord::Migration[4.2]
def self.up
remove_foreign_key :users, :column => :locale, :name => "users_locale_fkey"

View file

@ -1,5 +1,3 @@
require "migrate"
class AddMoreControlsToGpxFiles < ActiveRecord::Migration[4.2]
class Trace < ApplicationRecord
self.table_name = "gpx_files"

View file

@ -1,5 +1,3 @@
require "migrate"
class AddForeignKeysToOauthTables < ActiveRecord::Migration[4.2]
def change
add_foreign_key :oauth_tokens, :users, :name => "oauth_tokens_user_id_fkey"

View file

@ -1,5 +1,3 @@
require "migrate"
class CreateUserRoles < ActiveRecord::Migration[4.2]
class User < ApplicationRecord
end

View file

@ -1,5 +1,3 @@
require "migrate"
class CreateUserBlocks < ActiveRecord::Migration[4.2]
def change
create_table :user_blocks do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class AlterUserRolesAndBlocks < ActiveRecord::Migration[4.2]
class UserRole < ApplicationRecord
end

View file

@ -1,5 +1,3 @@
require "migrate"
class AddStatusToUser < ActiveRecord::Migration[4.2]
class User < ApplicationRecord
end

View file

@ -1,5 +1,3 @@
require "migrate"
class AddMapBugTables < ActiveRecord::Migration[4.2]
def self.up
create_enumeration :map_bug_status_enum, %w[open closed hidden]

View file

@ -1,5 +1,3 @@
require "migrate"
class RefactorMapBugTables < ActiveRecord::Migration[4.2]
def self.up
create_table :map_bug_comment do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class ChangeMapBugCommentType < ActiveRecord::Migration[4.2]
def self.up
change_column :map_bug_comment, :comment, :text

View file

@ -1,5 +1,3 @@
require "migrate"
class AddDateClosed < ActiveRecord::Migration[4.2]
def self.up
add_column :map_bugs, :date_closed, :timestamp

View file

@ -1,5 +1,3 @@
require "migrate"
class AddMapBugCommentEvent < ActiveRecord::Migration[4.2]
def self.up
create_enumeration :map_bug_event_enum, %w[opened closed reopened commented hidden]

View file

@ -1,5 +1,3 @@
require "migrate"
class RenameBugsToNotes < ActiveRecord::Migration[4.2]
def self.up
rename_enumeration "map_bug_status_enum", "note_status_enum"

View file

@ -1,5 +1,3 @@
require "migrate"
class AddLowercaseUserIndexes < ActiveRecord::Migration[4.2]
def up
add_index :users, [], :columns => "LOWER(display_name)", :name => "users_display_name_lower_idx"

View file

@ -1,5 +1,3 @@
require "migrate"
class AddTextFormat < ActiveRecord::Migration[4.2]
def up
create_enumeration :format_enum, %w[html markdown text]

View file

@ -1,5 +1,3 @@
require "migrate"
class CreateRedactions < ActiveRecord::Migration[4.2]
def change
create_table :redactions do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class DropSessionTable < ActiveRecord::Migration[4.2]
def up
drop_table "sessions"

View file

@ -1,5 +1,3 @@
require "migrate"
class AddUserAndDescriptionToRedaction < ActiveRecord::Migration[4.2]
def change
add_column :redactions, :user_id, :bigint, :null => false

View file

@ -1,5 +1,3 @@
require "migrate"
class AddTextIndexToNoteComments < ActiveRecord::Migration[4.2]
def up
add_index :note_comments, [], :columns => "to_tsvector('english', body)", :using => "GIN", :name => "index_note_comments_on_body"

View file

@ -1,5 +1,3 @@
require "migrate"
class CreateChangesetComments < ActiveRecord::Migration[4.2]
def change
create_table :changeset_comments do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class AddJoinTableBetweenUsersAndChangesets < ActiveRecord::Migration[4.2]
def change
create_table :changesets_subscribers, :id => false do |t|

View file

@ -1,5 +1,3 @@
require "migrate"
class CreateIssuesAndReports < ActiveRecord::Migration[5.0]
def up
create_enumeration :issue_status_enum, %w[open ignored resolved]

View file

@ -1,5 +1,3 @@
require "migrate"
class AddJoinTableBetweenUsersAndDiaryEntries < ActiveRecord::Migration[4.2]
def self.up
create_table :diary_entry_subscriptions, :id => false do |t|

View file

@ -1,57 +0,0 @@
module OpenStreetMap
module ActiveRecord
module AbstractAdapter
def add_index_options(table_name, column_name, options = {})
columns = options.delete(:columns)
index_name, index_type, index_columns, index_options, algorithm, using = super(table_name, column_name, options)
[index_name, index_type, columns || index_columns, index_options, algorithm, using]
end
end
module PostgreSQLAdapter
def quote_column_name(name)
Array(name).map { |n| super(n) }.join(", ")
end
def add_primary_key(table_name, column_name, _options = {})
table_name = quote_table_name(table_name)
column_name = quote_column_name(column_name)
execute "ALTER TABLE #{table_name} ADD PRIMARY KEY (#{column_name})"
end
def remove_primary_key(table_name)
table_name = quote_table_name(table_name)
execute "ALTER TABLE #{table_name} DROP PRIMARY KEY"
end
def alter_primary_key(table_name, new_columns)
constraint_name = quote_table_name("#{table_name}_pkey")
table_name = quote_table_name(table_name)
new_columns = quote_column_name(new_columns)
execute "ALTER TABLE #{table_name} DROP CONSTRAINT #{constraint_name}"
execute "ALTER TABLE #{table_name} ADD PRIMARY KEY (#{new_columns})"
end
def create_enumeration(enumeration_name, values)
execute "CREATE TYPE #{enumeration_name} AS ENUM ('#{values.join '\',\''}')"
end
def drop_enumeration(enumeration_name)
execute "DROP TYPE #{enumeration_name}"
end
def rename_enumeration(old_name, new_name)
old_name = quote_table_name(old_name)
new_name = quote_table_name(new_name)
execute "ALTER TYPE #{old_name} RENAME TO #{new_name}"
end
end
end
end
ActiveRecord::ConnectionAdapters::AbstractAdapter.prepend(OpenStreetMap::ActiveRecord::AbstractAdapter)
ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.prepend(OpenStreetMap::ActiveRecord::PostgreSQLAdapter)