diff options
Diffstat (limited to 'railties/lib/rails/engine')
-rw-r--r-- | railties/lib/rails/engine/commands.rb | 9 | ||||
-rw-r--r-- | railties/lib/rails/engine/configuration.rb | 90 | ||||
-rw-r--r-- | railties/lib/rails/engine/railties.rb | 23 | ||||
-rw-r--r-- | railties/lib/rails/engine/updater.rb | 21 |
4 files changed, 143 insertions, 0 deletions
diff --git a/railties/lib/rails/engine/commands.rb b/railties/lib/rails/engine/commands.rb new file mode 100644 index 0000000000..05218640c6 --- /dev/null +++ b/railties/lib/rails/engine/commands.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +unless defined?(APP_PATH) + if File.exist?(File.expand_path("test/dummy/config/application.rb", ENGINE_ROOT)) + APP_PATH = File.expand_path("test/dummy/config/application", ENGINE_ROOT) + end +end + +require "rails/commands" diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb new file mode 100644 index 0000000000..4143b3c881 --- /dev/null +++ b/railties/lib/rails/engine/configuration.rb @@ -0,0 +1,90 @@ +# frozen_string_literal: true + +require "rails/railtie/configuration" + +module Rails + class Engine + class Configuration < ::Rails::Railtie::Configuration + attr_reader :root + attr_accessor :middleware + attr_writer :eager_load_paths, :autoload_once_paths, :autoload_paths + + def initialize(root = nil) + super() + @root = root + @generators = app_generators.dup + @middleware = Rails::Configuration::MiddlewareStackProxy.new + end + + # Holds generators configuration: + # + # config.generators do |g| + # g.orm :data_mapper, migration: true + # g.template_engine :haml + # g.test_framework :rspec + # end + # + # If you want to disable color in console, do: + # + # config.generators.colorize_logging = false + # + def generators + @generators ||= Rails::Configuration::Generators.new + yield(@generators) if block_given? + @generators + end + + def paths + @paths ||= begin + paths = Rails::Paths::Root.new(@root) + + paths.add "app", eager_load: true, + glob: "{*,*/concerns}", + exclude: %w(assets javascript) + paths.add "app/assets", glob: "*" + paths.add "app/controllers", eager_load: true + paths.add "app/channels", eager_load: true, glob: "**/*_channel.rb" + paths.add "app/helpers", eager_load: true + paths.add "app/models", eager_load: true + paths.add "app/mailers", eager_load: true + paths.add "app/views" + + paths.add "lib", load_path: true + paths.add "lib/assets", glob: "*" + paths.add "lib/tasks", glob: "**/*.rake" + + paths.add "config" + paths.add "config/environments", glob: "#{Rails.env}.rb" + paths.add "config/initializers", glob: "**/*.rb" + paths.add "config/locales", glob: "*.{rb,yml}" + paths.add "config/routes.rb" + + paths.add "db" + paths.add "db/migrate" + paths.add "db/seeds.rb" + + paths.add "vendor", load_path: true + paths.add "vendor/assets", glob: "*" + + paths + end + end + + def root=(value) + @root = paths.path = Pathname.new(value).expand_path + end + + def eager_load_paths + @eager_load_paths ||= paths.eager_load + end + + def autoload_once_paths + @autoload_once_paths ||= paths.autoload_once + end + + def autoload_paths + @autoload_paths ||= paths.autoload_paths + end + end + end +end diff --git a/railties/lib/rails/engine/railties.rb b/railties/lib/rails/engine/railties.rb new file mode 100644 index 0000000000..052b74c880 --- /dev/null +++ b/railties/lib/rails/engine/railties.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Rails + class Engine < Railtie + class Railties + include Enumerable + attr_reader :_all + + def initialize + @_all ||= ::Rails::Railtie.subclasses.map(&:instance) + + ::Rails::Engine.subclasses.map(&:instance) + end + + def each(*args, &block) + _all.each(*args, &block) + end + + def -(others) + _all - others + end + end + end +end diff --git a/railties/lib/rails/engine/updater.rb b/railties/lib/rails/engine/updater.rb new file mode 100644 index 0000000000..be7a47124a --- /dev/null +++ b/railties/lib/rails/engine/updater.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +require "rails/generators" +require "rails/generators/rails/plugin/plugin_generator" + +module Rails + class Engine + class Updater + class << self + def generator + @generator ||= Rails::Generators::PluginGenerator.new ["plugin"], + { engine: true }, { destination_root: ENGINE_ROOT } + end + + def run(action) + generator.send(action) + end + end + end + end +end |