summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2016-07-04 20:19:21 +0200
committerAzul <azul@riseup.net>2016-07-05 08:56:05 +0200
commit638acc59a241e141cf0fc9ccbf4e3c5578b98f0c (patch)
tree82c09920af4053b42eaac22365af239078491000
parent949e17c7c30c5b179ba6545782ae995178481f78 (diff)
Fix db:migrate and similar tasks
We saw errors from duplicate loading of LocalEmail and LoginFormatValidation. The latter resulted in a crash. In an attempt to ensure all subclasses of Couchrest::Model::Base are loaded Couchrest::Model::Utils::Migrate requires all files in app/models. We have an extension that does the same for the engines. During this process LoginFormatValidation and LocalEmail were autoloaded when 'identity' was required. Afterwards they were required again. It looks like rails' autoload mechanism does not play nicely with require. So to make sure they are not autoloaded first move the concerns and helper classes into the lib directory and require them explicitly.
-rw-r--r--app/models/identity.rb2
-rw-r--r--app/models/user.rb2
-rw-r--r--engines/support/app/models/account_extension/tickets.rb13
-rw-r--r--engines/support/config/initializers/account_lifecycle.rb2
-rw-r--r--engines/support/lib/account_extension/tickets.rb15
-rw-r--r--lib/email.rb (renamed from app/models/email.rb)0
-rw-r--r--lib/local_email.rb (renamed from app/models/local_email.rb)1
-rw-r--r--lib/login_format_validation.rb (renamed from app/models/login_format_validation.rb)0
8 files changed, 22 insertions, 13 deletions
diff --git a/app/models/identity.rb b/app/models/identity.rb
index f987e4e..92f8f7a 100644
--- a/app/models/identity.rb
+++ b/app/models/identity.rb
@@ -1,3 +1,5 @@
+require 'login_format_validation'
+require 'local_email'
#
# Identity states:
#
diff --git a/app/models/user.rb b/app/models/user.rb
index cb093cf..206c0df 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,3 +1,5 @@
+require 'login_format_validation'
+
class User < CouchRest::Model::Base
include LoginFormatValidation
diff --git a/engines/support/app/models/account_extension/tickets.rb b/engines/support/app/models/account_extension/tickets.rb
deleted file mode 100644
index f38d5fd..0000000
--- a/engines/support/app/models/account_extension/tickets.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-module AccountExtension::Tickets
- extend ActiveSupport::Concern
-
- def destroy_with_tickets(destroy_identities=false)
- Ticket.destroy_all_from(self.user)
- destroy_without_tickets(destroy_identities)
- end
-
- included do
- alias_method_chain :destroy, :tickets
- end
-
-end
diff --git a/engines/support/config/initializers/account_lifecycle.rb b/engines/support/config/initializers/account_lifecycle.rb
index d9f04c1..9060757 100644
--- a/engines/support/config/initializers/account_lifecycle.rb
+++ b/engines/support/config/initializers/account_lifecycle.rb
@@ -1,3 +1,5 @@
+require 'account_extension/tickets'
+
ActiveSupport.on_load(:account) do
include AccountExtension::Tickets
end
diff --git a/engines/support/lib/account_extension/tickets.rb b/engines/support/lib/account_extension/tickets.rb
new file mode 100644
index 0000000..63f4873
--- /dev/null
+++ b/engines/support/lib/account_extension/tickets.rb
@@ -0,0 +1,15 @@
+module AccountExtension
+ module Tickets
+ extend ActiveSupport::Concern
+
+ def destroy_with_tickets(destroy_identities=false)
+ Ticket.destroy_all_from(self.user)
+ destroy_without_tickets(destroy_identities)
+ end
+
+ included do
+ alias_method_chain :destroy, :tickets
+ end
+
+ end
+end
diff --git a/app/models/email.rb b/lib/email.rb
index 4090275..4090275 100644
--- a/app/models/email.rb
+++ b/lib/email.rb
diff --git a/app/models/local_email.rb b/lib/local_email.rb
index ded7baf..7c592e1 100644
--- a/app/models/local_email.rb
+++ b/lib/local_email.rb
@@ -1,3 +1,4 @@
+require 'email'
class LocalEmail < Email
BLACKLIST_FROM_RFC2142 = [
diff --git a/app/models/login_format_validation.rb b/lib/login_format_validation.rb
index c1fcf70..c1fcf70 100644
--- a/app/models/login_format_validation.rb
+++ b/lib/login_format_validation.rb