Class: DynamicLinks::StrategyFactory
- Inherits:
-
Object
- Object
- DynamicLinks::StrategyFactory
- Defined in:
- lib/dynamic_links/strategy_factory.rb
Constant Summary collapse
- VALID_SHORTENING_STRATEGIES =
[:md5, :sha256, :crc32, :nano_id, :redis_counter, :mock].freeze
Class Method Summary collapse
- .ensure_nanoid_available ⇒ Object
- .ensure_redis_available ⇒ Object
- .get_strategy(strategy_name) ⇒ Object
Class Method Details
.ensure_nanoid_available ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/dynamic_links/strategy_factory.rb', line 27 def self.ensure_nanoid_available begin require 'nanoid' rescue LoadError raise 'Missing dependency: Please add "nanoid" to your Gemfile to use NanoIdStrategy.' end end |
.ensure_redis_available ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/dynamic_links/strategy_factory.rb', line 35 def self.ensure_redis_available begin require 'redis' rescue LoadError raise 'Missing dependency: Please add "redis" to your Gemfile to use RedisCounterStrategy.' end begin require 'connection_pool' rescue LoadError raise 'Missing dependency: Please add "connection_pool" to your Gemfile to use RedisCounterStrategy.' end end |
.get_strategy(strategy_name) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/dynamic_links/strategy_factory.rb', line 6 def self.get_strategy(strategy_name) case strategy_name when :md5 ShorteningStrategies::MD5Strategy.new when :sha256 ShorteningStrategies::SHA256Strategy.new when :crc32 ShorteningStrategies::CRC32Strategy.new when :nano_id ensure_nanoid_available ShorteningStrategies::NanoIDStrategy.new when :redis_counter ensure_redis_available ShorteningStrategies::RedisCounterStrategy.new when :mock ShorteningStrategies::MockStrategy.new else raise "Unknown strategy: #{strategy_name}" end end |