Skip to content

Commit 570cbf3

Browse files
800 Remove dependency on require_all
From require_all's changelog: 2.0.0: Merged PR #24 (jarmo/require_all#24) Prior to version 2, RequireAll attempted to automatically resolve dependencies between files, thus allowing them to be required in any order. Whilst convenient, the approach used (of rescuing NameErrors and later retrying files that failed to load) was fundamentally unsafe and can result in incorrect behaviour (for example issue #8, plus more detail and discussion in #21). Thanks to Joe Horsnell (@joehorsnell) This commit removes the dependency on the require_all gem by using Ruby's `#require` method wherever it is needed.
1 parent 2820b51 commit 570cbf3

18 files changed

+26
-6
lines changed

Gemfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@ source 'https://rubygems.org'
22

33
gem 'minitest'
44
gem 'rake'
5-
gem 'require_all'
65
gem 'rubocop', '0.36.0'
76
gem 'simplecov'

bin/generate

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
require_relative '../lib/helper'
44
require 'generator'
5+
require 'generator/command_line'
56

67
paths = Generator::Paths.new(track: EXERCISM_RUBY_ROOT, metadata: METADATA_REPOSITORY_PATH)
78

lib/generator.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
require 'require_all'
2-
require_rel 'generator' # Include everything in the 'generator' subdirectory
1+
require 'generator/implementation'
32

43
module Generator
54
# Immutable value object for storing paths

lib/generator/command_line.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
require 'logger'
2+
require 'generator/command_line/generator_optparser'
3+
require 'generator/repository'
24

35
module Generator
46
class CommandLine

lib/generator/command_line/generator_optparser.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'optparse'
2+
require 'generator/files/generator_cases'
23

34
module Generator
45
class GeneratorOptparser

lib/generator/exercise_case.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
require 'ostruct'
2+
require 'generator/exercise_case/assertion'
3+
require 'generator/exercise_case/case_helpers'
4+
require 'generator/underscore'
25

36
module Generator
47
class ExerciseCase

lib/generator/files/metadata_files.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
require 'generator/files'
2+
13
module Generator
24
module Files
35
module MetadataFiles

lib/generator/files/track_files.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'erb'
2+
require 'generator/files'
23

34
module Generator
45
module Files

lib/generator/implementation.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require 'delegate'
22
require 'forwardable'
3+
require_relative 'template_values'
34

45
module Generator
56
class Implementation

lib/generator/repository.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
require 'generator/files/metadata_files'
2+
require 'generator/files/track_files'
3+
14
module Generator
25
class Repository
36
include Files::TrackFiles

test/generator/case_values_test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
require_relative '../test_helper'
2+
require 'generator/exercise_case'
3+
require 'generator/case_values'
24

35
module Generator
46
class ComplexCase < ExerciseCase

test/generator/command_line_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require_relative '../test_helper'
2+
require 'generator/command_line'
23

34
module Generator
45
class CommandLineTest < Minitest::Test

test/generator/files/metadata_files_test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
require_relative '../../test_helper.rb'
2+
require 'generator/files/metadata_files'
3+
24
module Generator
35
module Files
46
class MetadataFilesTest < Minitest::Test

test/generator/files/track_files_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require_relative '../../test_helper.rb'
2+
require 'generator/files/track_files'
23

34
module Generator
45
module Files

test/generator/implementation_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require_relative '../test_helper'
2+
require 'generator/git_command'
23

34
module Generator
45
class ImplementationTest < Minitest::Test

test/tasks/exercise_test.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require_relative '../test_helper'
2+
require 'generator/exercise'
23
require 'tmpdir'
34

45
class ExerciseTest < Minitest::Test

test/tasks/exercise_test_tasks_test.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
require_relative '../test_helper'
2+
require 'tasks/exercise'
3+
require 'tasks/exercise_test_tasks'
24

35
class ExerciseTestTasksTest < Minitest::Test
46
def test_all_exercises_task

test/test_helper.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
$LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
22

3-
require 'require_all'
4-
53
unless ENV['CI']
64
require 'simplecov'
75

@@ -31,4 +29,4 @@
3129
require 'minitest/autorun'
3230

3331
# So we can be sure we have coverage on the whole lib directory:
34-
require_all 'lib'
32+
Dir.glob('lib/*.rb').each { |file| require file.gsub(%r{(^lib\/|\.rb$)}, '') }

0 commit comments

Comments
 (0)