Module: AutoFreeze

Defined in:
lib/auto_freeze.rb,
lib/auto_freeze/version.rb

Overview

Set frozen_string_literals: true when requiring gems.

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.setup!(auto_freeze: true, excluded_gems: []) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/auto_freeze.rb', line 9

def setup!(auto_freeze: true, excluded_gems: [])
  # Freezolite uses File.fnmatch for its patterns.
  # It also uses load_iseq(<absolute_path>) callback for its around hook.
  # So to freeze gem, we need to find the absolute path using `Gem.path`.
  include_patterns = if auto_freeze.is_a?(Array)
    auto_freeze.flat_map do |gem|
      Gem::Specification.find_by_full_name(gem).full_require_paths.map do |require_path|
        File.join(require_path, "*.rb")
      end
    end
  else
    Gem.path.map { |path| File.join(path, "*.rb") }
  end

  exclude_patterns = excluded_gems.map { |gem_name| File.join("**", gem_name, "**") }

  freezolite_setup(
    patterns: include_patterns,
    exclude_patterns: exclude_patterns
  )
end