Class: Rails::Command::RunnerCommand

Inherits:
Base show all
Includes:
EnvironmentArgument
Defined in:
railties/lib/rails/commands/runner/runner_command.rb

Overview

:nodoc:

Instance Method Summary collapse

Methods inherited from Base

banner, base_name, class_usage, command_name, default_command_root, desc, engine?, executable, exit_on_failure?, help, hide_command!, inherited, namespace, perform, printing_commands, usage_path

Methods included from Actions

#boot_application!, #load_environment_config!, #load_generators, #load_tasks, #require_application!, #set_application_directory!

Instance Method Details

#perform(code_or_file = nil, *command_argv) ⇒ Object

[View source]

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
# File 'railties/lib/rails/commands/runner/runner_command.rb', line 22

def perform(code_or_file = nil, *command_argv)
  unless code_or_file
    help
    exit 1
  end

  boot_application!
  Rails.application.load_runner

  ARGV.replace(command_argv)

  if code_or_file == "-"
    Rails.application.executor.wrap(source: "application.runner.railties") do
      eval($stdin.read, TOPLEVEL_BINDING, "stdin")
    end
  elsif File.exist?(code_or_file)
    expanded_file_path = File.expand_path code_or_file
    $0 = expanded_file_path
    Rails.application.executor.wrap(source: "application.runner.railties") do
      Kernel.load expanded_file_path
    end
  else
    begin
      Rails.application.executor.wrap(source: "application.runner.railties") do
        eval(code_or_file, TOPLEVEL_BINDING, __FILE__, __LINE__)
      end
    rescue SyntaxError, NameError => e
      if looks_like_a_file_path?(code_or_file)
        error "The file #{code_or_file} could not be found, please check and try again."
        error "Run '#{self.class.executable} -h' for help."
      else
        error "Please specify a valid ruby command or the path of a script to run."
        error "Run '#{self.class.executable} -h' for help."
        error ""
        error e
      end

      exit 1
    end
  end
end