Feature #36320 » 0001-Fix-autoloading-plugin-classes.patch
| config/environments/test.rb | ||
|---|---|---|
| 18 | 18 |
# preloads Rails for running tests, you may have to set it to true. |
| 19 | 19 |
config.eager_load = false |
| 20 | 20 | |
| 21 |
config.enable_reloading = true |
|
| 22 | ||
| 21 | 23 |
# Configure public file server for tests with Cache-Control for performance. |
| 22 | 24 |
config.public_file_server.enabled = true |
| 23 | 25 |
config.public_file_server.headers = {
|
| lib/redmine/plugin_loader.rb | ||
|---|---|---|
| 126 | 126 |
# Add the plugin directories to rails autoload paths |
| 127 | 127 |
engine_cfg = Rails::Engine::Configuration.new(directory.to_s) |
| 128 | 128 |
engine_cfg.paths.add 'lib', eager_load: true |
| 129 |
engine_cfg.eager_load_paths.each do |dir|
|
|
| 129 |
engine_cfg.paths.eager_load.each do |dir|
|
|
| 130 | 130 |
Rails.autoloaders.main.push_dir dir |
| 131 | 131 |
Rails.application.config.watchable_dirs[dir] = [:rb] |
| 132 | 132 |
end |
| test/fixtures/plugins/foo_plugin/app/models/foo.rb | ||
|---|---|---|
| 1 |
# frozen_string_literal: true |
|
| 2 | ||
| 3 |
class Foo < ActiveRecord::Base |
|
| 4 |
end |
|
| test/unit/lib/redmine/plugin_loader_test.rb | ||
|---|---|---|
| 27 | 27 |
@klass.directory = Rails.root.join('test/fixtures/plugins')
|
| 28 | 28 |
@klass.public_directory = Rails.root.join('tmp/public/plugin_assets')
|
| 29 | 29 |
@klass.load |
| 30 |
Rails.autoloaders.main.reload |
|
| 30 | 31 |
end |
| 31 | 32 | |
| 32 | 33 |
def teardown |
| ... | ... | |
| 55 | 56 |
assert File.exist?("#{@klass.public_directory}/foo_plugin/stylesheets/foo.css")
|
| 56 | 57 |
end |
| 57 | 58 | |
| 59 |
def test_autoload |
|
| 60 |
assert_equal true, Object.const_defined?(:Foo) |
|
| 61 |
end |
|
| 62 | ||
| 58 | 63 |
def clear_public |
| 59 | 64 |
FileUtils.rm_rf 'tmp/public' |
| 60 | 65 |
end |