Module: GemBench
- Defined in:
- lib/gem_bench/scout.rb,
lib/gem_bench.rb,
lib/gem_bench/team.rb,
lib/gem_bench/jersey.rb,
lib/gem_bench/player.rb,
lib/gem_bench/version.rb,
lib/gem_bench/strict_version_gem.rb,
lib/gem_bench/gemfile_line_tokenizer.rb,
lib/gem_bench/strict_version_requirement.rb
Overview
Re-write a gem to a temp directory, re-namespace the primary namespace of that gem module, and load it. If the original gem defines multiple top-level namespaces, they can all be renamed by providing more key value pairs. If the original gem monkey patches other libraries, that behavior can’t be isolated, so YMMV.
NOTE: Non-top-level namespaces do not need to be renamed, as they are isolated within their parent namespace.
Usage
jersey = GemBench::Jersey.new(
gem_name: "alt_memery"
trades: {
"Memery" => "AltMemery"
},
metadata: {
something: "a value here",
something_else: :obviously,
},
)
jersey.doff_and_don
# The re-namespaced constant is now available!
AltMemery # => AltMemery
Defined Under Namespace
Modules: Version Classes: GemfileLineTokenizer, Jersey, Player, Scout, StrictVersionGem, StrictVersionRequirement, Team
Constant Summary collapse
- USAGE =
"[GemBench] Usage: Require another gem in this session to evaluate it.\n\tExample:\n\t\trequire 'rails'\n\t\tGemBench.check({verbose: true})\n"
- RAILTIE_REGEX =
/Rails::Engine|Rails::Railtie/
- TRASH_REGEX =
/^(\s*)(\#+.*)?$/
- REQUIRE_FALSE_REGEX =
/^[^#]+require((:\s*)|(\s*=>\s*))false.*/
- DEPENDENCY_REGEX_PROC =
->(name) { /^\s*[^#]*\s*gem\s+['"]{1}#{name}['"]{1}/ }
- PATH_GLOB =
->(name) { "#{name}*/lib/**/*.rb" }
- EXCLUDE_FILE_PATTERN_REGEX_PROC =
->(name) { %r{#{name}/test|features|spec|bin|exe} }
- DO_NOT_SCAN =
[]
- PLAYER_STATES =
{ starter: :starter, bench: :bench, }
Class Attribute Summary collapse
-
.roster ⇒ Object
Returns the value of attribute roster.
Class Method Summary collapse
- .check(verbose: false) ⇒ Object
- .find(look_for_regex: GemBench::RAILTIE_REGEX, exclude_file_pattern_regex_proc: GemBench::EXCLUDE_FILE_PATTERN_REGEX_PROC, verbose: false) ⇒ Object
- .list_missing_version_constraints(verbose: false) ⇒ Object
- .versions_present?(verbose: false) ⇒ Boolean
Class Attribute Details
.roster ⇒ Object
Returns the value of attribute roster.
28 29 30 |
# File 'lib/gem_bench.rb', line 28 def roster @roster end |
Class Method Details
.check(verbose: false) ⇒ Object
30 31 32 |
# File 'lib/gem_bench.rb', line 30 def check(verbose: false) @roster = GemBench::Team.new({verbose: verbose}) end |
.find(look_for_regex: GemBench::RAILTIE_REGEX, exclude_file_pattern_regex_proc: GemBench::EXCLUDE_FILE_PATTERN_REGEX_PROC, verbose: false) ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/gem_bench.rb', line 44 def find(look_for_regex: GemBench::RAILTIE_REGEX, exclude_file_pattern_regex_proc: GemBench::EXCLUDE_FILE_PATTERN_REGEX_PROC, verbose: false) @roster = GemBench::Team.new({ look_for_regex: look_for_regex, exclude_file_pattern_regex_proc: exclude_file_pattern_regex_proc, verbose: verbose, }) end |
.list_missing_version_constraints(verbose: false) ⇒ Object
39 40 41 42 |
# File 'lib/gem_bench.rb', line 39 def list_missing_version_constraints(verbose: false) @roster = GemBench::StrictVersionRequirement.new({verbose: verbose}) @roster.list_missing_version_constraints end |
.versions_present?(verbose: false) ⇒ Boolean
34 35 36 37 |
# File 'lib/gem_bench.rb', line 34 def versions_present?(verbose: false) @roster = GemBench::StrictVersionRequirement.new({verbose: verbose}) @roster.versions_present? end |