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