aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/engine/commands_tasks.rb
blob: d6effdb732c96d7a0d22b6ff547bef84f93ce093 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
require "rails/commands/rake_proxy"
require "rails/commands/common_commands_tasks"
require "active_support/core_ext/string/strip"

module Rails
  class Engine
    class CommandsTasks # :nodoc:
      include Rails::RakeProxy
      include Rails::CommonCommandsTasks

      attr_reader :argv

      def initialize(argv)
        @argv = argv
      end

      private

        def commands
          formatted_rake_tasks
        end

        def command_whitelist
          %w(generate destroy version help test)
        end

        def help_message
          <<-EOT.strip_heredoc
            Usage: rails COMMAND [ARGS]

            The common Rails commands available for engines are:
             generate    Generate new code (short-cut alias: "g")
             destroy     Undo code generated with "generate" (short-cut alias: "d")
             test        Run tests (short-cut alias: "t")

            All commands can be run with -h for more information.

            If you want to run any commands that need to be run in context
            of the application, like `rails server` or `rails console`,
            you should do it from application's directory (typically test/dummy).

            In addition to those commands, there are:
          EOT
        end

        def require_application_and_environment!
          require ENGINE_PATH
        end

        def load_tasks
          Rake.application.init("rails")
          Rake.application.load_rakefile
        end

        def load_generators
          engine = ::Rails::Engine.find(ENGINE_ROOT)
          Rails::Generators.namespace = engine.railtie_namespace
          engine.load_generators
        end
    end
  end
end