class ObjectifiedEnvironmentsGenerator

Constants

CLASS_COMMENTS
DEFAULT_ENVIRONMENT_SUPERCLASS
ENVIRONMENTS_MODULE
ENVIRONMENT_HIERARCHY

Public Instance Methods

create_environment_files() click to toggle source
# File lib/objectified_environments_generator.rb, line 6
def create_environment_files
  needed_environments = all_environments.select { |e| (! environment_defined?(e)) }

  needed_environments.each do |environment|
    create_environment(environment)
  end

  create_superclasses_for(needed_environments)
end

Private Instance Methods

all_environments() click to toggle source
# File lib/objectified_environments_generator.rb, line 175
def all_environments
  config_environments | [ current_environment ]
end
config_dir() click to toggle source
# File lib/objectified_environments_generator.rb, line 187
def config_dir
  @config_dir ||= File.expand_path(File.join(Rails.root, 'config'))
end
config_environments() click to toggle source
# File lib/objectified_environments_generator.rb, line 179
def config_environments
  return [ ] unless File.directory?(config_environments_dir)

  Dir.entries(config_environments_dir).map do |entry|
    $1.downcase if entry =~ /^([A-Z0-9_]+)\.rb$/i
  end.compact
end
config_environments_dir() click to toggle source
# File lib/objectified_environments_generator.rb, line 191
def config_environments_dir
  @config_environments_dir ||= File.join(config_dir, 'environments')
end
config_lib_dir() click to toggle source
# File lib/objectified_environments_generator.rb, line 195
def config_lib_dir
  @config_lib_dir ||= File.join(config_dir, 'lib')
end
content_for_environment(environment) click to toggle source
# File lib/objectified_environments_generator.rb, line 151
  def content_for_environment(environment)
    %{#{CLASS_COMMENTS[environment.camelize] || ''}
module #{ENVIRONMENTS_MODULE}
  class #{environment.camelize} < #{superclass_for_environment(environment)}
    # Add your own method definitions here!
  end
end
}
  end
create_environment(environment) click to toggle source
# File lib/objectified_environments_generator.rb, line 17
def create_environment(environment)
  target_file = File.join(objenv_dir, "#{environment.underscore}.rb")

  if File.exist?(target_file)
    puts "skip #{target_file}"
  else
    create_file(target_file) do
      content_for_environment(environment)
    end
  end
end
create_superclasses_for(environments) click to toggle source
# File lib/objectified_environments_generator.rb, line 29
def create_superclasses_for(environments)
  superclasses = environments.map { |e| superclass_for_environment(e) }.uniq
  superclasses -= [ "ObjectifiedEnvironments::Base" ]
  superclasses = superclasses.map do |sc|
    if sc =~ /::([A-Z0-9_]+)$/i
      $1
    else
      sc
    end
  end

  unless superclasses.length == 0
    superclasses.each { |sc| create_environment(sc) }
    create_superclasses_for(superclasses)
  end
end
current_environment() click to toggle source
# File lib/objectified_environments_generator.rb, line 203
def current_environment
  Rails.env
end
environment_defined?(environment) click to toggle source
# File lib/objectified_environments_generator.rb, line 165
def environment_defined?(environment)
  target_class_name = "#{ENVIRONMENTS_MODULE}::#{environment.camelize}"
  begin
    target_class_name.constantize
    true
  rescue NameError => ne
    false
  end
end
objenv_dir() click to toggle source
# File lib/objectified_environments_generator.rb, line 199
def objenv_dir
  @objenv_dir ||= File.join(config_lib_dir, ENVIRONMENTS_MODULE.underscore)
end
superclass_for_environment(environment) click to toggle source
# File lib/objectified_environments_generator.rb, line 161
def superclass_for_environment(environment)
  ENVIRONMENT_HIERARCHY[environment.camelize] || DEFAULT_ENVIRONMENT_SUPERCLASS
end