module Mjml
Constants
- VERSION
-
Version number no longer matches MJML.io version
Attributes
Public Class Methods
Source
# File lib/mjml.rb, line 103 def self.check_for_bun_mjml_binary return unless Mjml.which('bun') # HINT: Bun always prioritizes local bins first and falls back to global installations mjml_bin = 'bun run mjml' return mjml_bin if check_version(mjml_bin) end
Source
# File lib/mjml.rb, line 74 def self.check_for_custom_mjml_binary if const_defined?('BIN') && Mjml::BIN.present? logger.warn('Setting `Mjml::BIN` is deprecated and will be removed in a future version! ' \ 'Please use `Mjml.mjml_binary=` instead.') self.mjml_binary = Mjml::BIN remove_const 'BIN' end return if mjml_binary.blank? return mjml_binary if check_version(mjml_binary) raise "MJML.mjml_binary is set to '#{mjml_binary}' but MJML-Rails could not validate that " \ 'it is a valid MJML binary. Please check your configuration.' end
Source
# File lib/mjml.rb, line 117 def self.check_for_global_mjml_binary mjml_bin = Mjml.which('mjml') return unless mjml_bin return mjml_bin if mjml_bin.present? && check_version(mjml_bin) end
Source
# File lib/mjml.rb, line 90 def self.check_for_mjml_package(package_manager, bin_command, binary_path) pm_bin = Mjml.which(package_manager) return unless pm_bin stdout, _, status = Open3.capture3("#{pm_bin} #{bin_command}") return unless status.success? mjml_bin = File.join(stdout.chomp, *binary_path) return mjml_bin if check_version(mjml_bin) rescue Errno::ENOENT # package manager is not installed nil end
Source
# File lib/mjml.rb, line 124 def self.check_for_mrml_binary return unless Mjml.use_mrml MRML.present? rescue NameError Mjml.mjml_binary_error_string = 'Couldn\'t find MRML - did you add \'mrml\' to your Gemfile?' false end
Source
# File lib/mjml.rb, line 112 def self.check_for_package_mjml_binary check_for_mjml_package('npm', 'root', ['.bin', 'mjml']) || check_for_mjml_package('yarn', 'bin mjml', []) end
Source
# File lib/mjml.rb, line 39 def self.check_version(bin) stdout, _, status = run_mjml('--version', mjml_bin: bin) status.success? && stdout.include?("mjml-core: #{Mjml.mjml_binary_version_supported}") rescue StandardError false end
Source
# File lib/mjml.rb, line 133 def self.discover_mjml_bin logger.warn('`Mjml.discover_mjml_bin` is deprecated and has no effect anymore! ' \ 'Please use `Mjml.mjml_binary=` to set a custom MJML binary.') end
Source
# File lib/mjml.rb, line 145 def logger @logger ||= Logger.new($stdout).tap do |log| log.progname = name end end
Source
# File lib/mjml.rb, line 46 def self.run_mjml(args, mjml_bin: valid_mjml_binary) Open3.capture3("#{mjml_bin} #{args}") end
Source
# File lib/mjml.rb, line 138 def self.setup yield self if block_given? end
Source
# File lib/mjml.rb, line 61 def self.valid_mjml_binary self.valid_mjml_binary = @@valid_mjml_binary || check_for_custom_mjml_binary || check_for_mrml_binary || check_for_bun_mjml_binary || check_for_package_mjml_binary || check_for_global_mjml_binary return @@valid_mjml_binary if @@valid_mjml_binary puts Mjml.mjml_binary_error_string end
Source
# File lib/mjml.rb, line 50 def self.which(command) if Gem.win_platform? stdout, _, status = Open3.capture3("where #{command}") else stdout, _, status = Open3.capture3("which #{command}") end status.success? ? stdout.chomp : nil rescue Errno::ENOENT nil end