The incorrect code:
It will fail if a plugin requires a gem, which contain a file with the plugin.rb
name.
An example of problem gem is airbrake
.
If a plugin requires the airbrake
gem, then Discourse incorrectly theats the lib/airbrake/delayed_job/plugin.rb
file as a Discourse plugin, and fails with the message:
/vagrant/plugins/df-core/gems/2.3.1/gems/airbrake-5.6.1/lib/airbrake/delayed_job/plugin.rb:6:in
<module:Plugins>': uninitialized constant Delayed (NameError) from /vagrant/plugins/df-core/gems/2.3.1/gems/airbrake-5.6.1/lib/airbrake/delayed_job/plugin.rb:2:in
module:Delayed’
from /vagrant/plugins/df-core/gems/2.3.1/gems/airbrake-5.6.1/lib/airbrake/delayed_job/plugin.rb:1:inactivate!' from /vagrant/lib/plugin/instance.rb:312:in
instance_eval’
from /vagrant/lib/plugin/instance.rb:312:inactivate!' from /vagrant/lib/discourse.rb:108:in
block in activate_plugins!’
from /vagrant/lib/discourse.rb:105:ineach' from /vagrant/lib/discourse.rb:105:in
activate_plugins!’
from /vagrant/config/application.rb:165:in<class:Application>' from /vagrant/config/application.rb:19:in
module:Discourse’
from /vagrant/config/application.rb:18:in<top (required)>' from /home/vagrant/.rvm/gems/ruby-2.3.1/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:78:in
require’
from /home/vagrant/.rvm/gems/ruby-2.3.1/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:78:inblock in server' from /home/vagrant/.rvm/gems/ruby-2.3.1/gems/railties-4.2.7.1/lib/rails/commands/commands_tasks.rb:75:in
tap’