application_lib.rb 1013 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. module ApplicationLib
  2. def self.included(base)
  3. base.extend(ClassMethods)
  4. end
  5. module ClassMethods
  6. =begin
  7. load adapter based on setting option
  8. result = self.load_adapter_by_setting('some_setting_with_class_name')
  9. returns
  10. result = Some::Classname
  11. =end
  12. def load_adapter_by_setting(setting)
  13. adapter = Setting.get(setting)
  14. return if adapter.blank?
  15. # load backend
  16. load_adapter(adapter)
  17. end
  18. =begin
  19. load adapter
  20. result = self.load_adapter('Some::Classname')
  21. returns
  22. result = Some::Classname
  23. =end
  24. def load_adapter(adapter)
  25. # load adapter
  26. # will only work on ruby 2.0
  27. #Object.const_get(adapter)
  28. # will work on ruby 1.9 and 2.0
  29. #adapter.split('::').inject(Object) do |mod, class_name|
  30. # mod.const_get(class_name)
  31. #end
  32. # will work with active_support
  33. adapter = adapter.constantize
  34. if !adapter
  35. raise "Can't load adapter '#{adapter_name}'"
  36. end
  37. adapter
  38. end
  39. end
  40. end