提交 f8e7904d 编写于 作者: K kennyj

Add support runner hook.

上级 5cc9c7e3
......@@ -158,6 +158,14 @@ def load_console(app=self)
self
end
# Load the application runner and invoke the registered hooks.
# Check <tt>Rails::Railtie.runner</tt> for more info.
def load_runner(app=self)
initialize_runner
super
self
end
# Stores some of the Rails initial environment parameters which
# will be used by middlewares and engines to configure themselves.
def env_config
......@@ -304,6 +312,9 @@ def initialize_console #:nodoc:
require "rails/console/helpers"
end
def initialize_runner #:nodoc:
end
def build_original_fullpath(env)
path_info = env["PATH_INFO"]
query_string = env["QUERY_STRING"]
......
......@@ -41,6 +41,7 @@
require APP_PATH
Rails.application.require_environment!
Rails.application.load_runner
if code_or_file.nil?
$stderr.puts "Run '#{$0} -h' for help."
......
......@@ -437,6 +437,11 @@ def load_console(app=self)
super
end
def load_runner(app=self)
railties.all { |r| r.load_runner(app) }
super
end
def eager_load!
railties.all(&:eager_load!)
......
......@@ -145,6 +145,12 @@ def console(&blk)
@load_console
end
def runner(&blk)
@load_runner ||= []
@load_runner << blk if blk
@load_runner
end
def generators(&blk)
@generators ||= []
@generators << blk if blk
......@@ -179,6 +185,10 @@ def load_console(app=self)
self.class.console.each { |block| block.call(app) }
end
def load_runner(app=self)
self.class.runner.each { |block| block.call(app) }
end
def load_tasks(app=self)
extend Rake::DSL if defined? Rake::DSL
self.class.rake_tasks.each { |block| self.instance_exec(app, &block) }
......
......@@ -57,5 +57,15 @@ def test_should_set_dollar_program_name_to_file
assert_match "script/program_name.rb", Dir.chdir(app_path) { `bundle exec rails runner "script/program_name.rb"` }
end
def test_with_hook
add_to_config <<-RUBY
runner do |app|
app.config.ran = true
end
RUBY
assert_match "true", Dir.chdir(app_path) { `bundle exec rails runner "puts Rails.application.config.ran"` }
end
end
end
......@@ -163,6 +163,22 @@ class MyTie < Rails::Railtie
assert $ran_block
end
test "runner block is executed when MyApp.load_runner is called" do
$ran_block = false
class MyTie < Rails::Railtie
runner do
$ran_block = true
end
end
require "#{app_path}/config/environment"
assert !$ran_block
AppTemplate::Application.load_runner
assert $ran_block
end
test "railtie can add initializers" do
$ran_block = false
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册