Navigation Menu

Skip to content

Commit

Permalink
Merge pull request #20326 from hderms/dh/fix_task_bug
Browse files Browse the repository at this point in the history
Fix rake method definition leaking onto Object
  • Loading branch information
rafaelfranca committed May 28, 2015
2 parents 4b606d0 + ae5c3c3 commit a75f6cf
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 16 deletions.
34 changes: 18 additions & 16 deletions railties/lib/rails/tasks/framework.rake
Expand Up @@ -32,35 +32,37 @@ namespace :rails do
FileUtils.cp_r src_name, dst_name
end
end
end
end
end

namespace :update do
def invoke_from_app_generator(method)
app_generator.send(method)
end
class RailsUpdate
def self.invoke_from_app_generator(method)
app_generator.send(method)
end

def app_generator
@app_generator ||= begin
require 'rails/generators'
require 'rails/generators/rails/app/app_generator'
gen = Rails::Generators::AppGenerator.new ["rails"], { with_dispatchers: true },
destination_root: Rails.root
File.exist?(Rails.root.join("config", "application.rb")) ?
gen.send(:app_const) : gen.send(:valid_const?)
gen
def self.app_generator
@app_generator ||= begin
require 'rails/generators'
require 'rails/generators/rails/app/app_generator'
gen = Rails::Generators::AppGenerator.new ["rails"], { with_dispatchers: true },
destination_root: Rails.root
File.exist?(Rails.root.join("config", "application.rb")) ?
gen.send(:app_const) : gen.send(:valid_const?)
gen
end
end
end

# desc "Update config/boot.rb from your current rails install"
task :configs do
invoke_from_app_generator :create_boot_file
invoke_from_app_generator :update_config_files
RailsUpdate.invoke_from_app_generator :create_boot_file
RailsUpdate.invoke_from_app_generator :update_config_files
end

# desc "Adds new executables to the application bin/ directory"
task :bin do
invoke_from_app_generator :create_bin_files
RailsUpdate.invoke_from_app_generator :create_bin_files
end
end
end
48 changes: 48 additions & 0 deletions railties/test/application/rake/framework_test.rb
@@ -0,0 +1,48 @@
require "isolation/abstract_unit"
require "active_support/core_ext/string/strip"

module ApplicationTests
module RakeTests
class FrameworkTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation

def setup
build_app
boot_rails
FileUtils.rm_rf("#{app_path}/config/environments")
end

def teardown
teardown_app
end

def load_tasks
require 'rake'
require 'rdoc/task'
require 'rake/testtask'

Rails.application.load_tasks
end

test 'requiring the rake task should not define method .app_generator on Object' do
require "#{app_path}/config/environment"

load_tasks

assert_raise NameError do
Object.method(:app_generator)
end
end

test 'requiring the rake task should not define method .invoke_from_app_generator on Object' do
require "#{app_path}/config/environment"

load_tasks

assert_raise NameError do
Object.method(:invoke_from_app_generator)
end
end
end
end
end

0 comments on commit a75f6cf

Please sign in to comment.