class RailsPackager::Runner
Constants
- DEFAULT_CONFIG
- JBUNDLE_COMMAND
This command is inserted after bundle install when jbundler usage is detected
Attributes
after[R]
before[R]
dir[R]
env[R]
excludes[R]
includes[R]
name[R]
package[R]
Public Class Methods
new(dir:, name: nil, config_file: nil)
click to toggle source
# File lib/rails_packager/runner.rb, line 33 def initialize(dir:, name: nil, config_file: nil) @files_file_tempfile = nil @dir = dir @name = name config = if config_file YAML.load_file(config_file) else {} end load_config(config) end
Public Instance Methods
close()
click to toggle source
# File lib/rails_packager/runner.rb, line 83 def close if @files_file_tempfile @files_file_tempfile.unlink @files_file_tempfile = nil end end
commands()
click to toggle source
# File lib/rails_packager/runner.rb, line 73 def commands before + [package] + after end
execute(verbose: false)
click to toggle source
# File lib/rails_packager/runner.rb, line 77 def execute(verbose: false) commands.each { |cmd| break unless cmd.execute(verbose: verbose) } ensure close end
exit_code()
click to toggle source
# File lib/rails_packager/runner.rb, line 94 def exit_code errored = commands.find { |cmd| !cmd.successful? } if errored errored.exit_code else 0 end end
files()
click to toggle source
# File lib/rails_packager/runner.rb, line 48 def files result = Dir.glob(File.join(dir, "**/*"), File::FNM_DOTMATCH).map do |file| file.sub(File.join(dir, "/"), "") end # Drop special directory files result.reject! { |f| f =~ %r{/\.\.?\z} || f =~ /\A\.\.?\z/ } result.select! { |f| includes.any? { |i| RailsPackager::Util.glob_match?(i, f) } } if includes result.reject! { |f| excludes.any? { |e| RailsPackager::Util.glob_match?(e, f) } } if excludes result end
files_file()
click to toggle source
# File lib/rails_packager/runner.rb, line 61 def files_file @files_file_tempfile ||= begin Tempfile.new("rails_packager_file_names").tap do |tempfile| files.each { |f| tempfile.puts f } tempfile.close end end @files_file_tempfile.path end
successful?()
click to toggle source
# File lib/rails_packager/runner.rb, line 90 def successful? commands.all?(&:successful?) end
Private Instance Methods
jbundler_in_use?()
click to toggle source
# File lib/rails_packager/runner.rb, line 134 def jbundler_in_use? File.exist? File.join(dir, "Jarfile") end
load_config(config)
click to toggle source
# File lib/rails_packager/runner.rb, line 110 def load_config(config) config = config.symbolize_keys customized_before = config.include?(:before) config = DEFAULT_CONFIG.merge(config) if !customized_before && jbundler_in_use? config[:before] = config[:before].dup config[:before].insert(2, JBUNDLE_COMMAND) end @includes = config[:include] @excludes = config[:exclude] @env = config[:env].inject({}) do |result, (key, value)| result[key] = replace_variables(value) result end @name = name.presence || replace_variables(config.fetch(:name) { File.basename(File.realpath(dir)) }) @before = config.fetch(:before, []).map { |x| RailsPackager::Command.parse(self, x) } @after = config.fetch(:after, []).map { |x| RailsPackager::Command.parse(self, x) } @package = RailsPackager::Command.parse(self, config[:package]) end
replace_variables(value)
click to toggle source
# File lib/rails_packager/runner.rb, line 106 def replace_variables(value) RailsPackager::Command.replace_variables(self, value) end