class Alchemy::Generators::Base

Private Instance Methods

conditional_template(source, destination) click to toggle source
# File lib/generators/alchemy/base.rb, line 12
def conditional_template(source, destination)
  files = Dir.glob(destination.gsub(/\.([a-z]+)$/, "*"))
  if files.any?
    ext = File.extname(files.first)[1..]

    # If view already exists using a different template engine, change
    # source and destination file names to use that engine.
    if ext != template_engine.to_s
      say_status :warning, "View uses unexpected template engine '#{ext}'.", :cyan
      destination = destination.gsub(/#{template_engine}$/, ext)
      source = source.gsub(/#{template_engine}$/, ext)
    end
  end

  template source, destination
end
load_alchemy_yaml(name) click to toggle source
# File lib/generators/alchemy/base.rb, line 36
def load_alchemy_yaml(name)
  YAML.safe_load(
    ERB.new(File.read(Rails.root.join("config", "alchemy", name))).result,
    permitted_classes: YAML_PERMITTED_CLASSES,
    aliases: true
  )
rescue Errno::ENOENT
  puts "\nERROR: Could not read config/alchemy/#{name} file. Please run: `rails generate alchemy:install`"
end
template_engine() click to toggle source
# File lib/generators/alchemy/base.rb, line 29
def template_engine
  # Rails is clever enough to default this to whatever template
  # engine is configured through its generator configuration,
  # but we'll default it to erb anyway, just in case.
  options[:template_engine] || "erb"
end