Module: Poodle::Rails
- Defined in:
- lib/poodle/rails.rb,
lib/poodle/rails/railtie.rb
Overview
Rails integration module for Poodle SDK
Defined Under Namespace
Classes: Railtie
Class Attribute Summary collapse
-
.configuration ⇒ Configuration?
readonly
The global configuration.
Class Method Summary collapse
-
.auto_configure! ⇒ Configuration
Auto-configure from Rails credentials and environment.
-
.client ⇒ Client
Get the global Poodle client for Rails.
-
.configure {|Configuration| ... } ⇒ Configuration
Configure Poodle for Rails applications.
-
.configure_api_key(config, config_hash) ⇒ Object
private
Configure API key from various sources.
-
.configure_base_url(config, config_hash) ⇒ Object
private
Configure base URL from various sources.
-
.configure_debug_mode(config, config_hash) ⇒ Object
private
Configure debug mode from various sources.
-
.configure_timeout(config, config_hash) ⇒ Object
private
Configure timeout from various sources.
-
.configured? ⇒ Boolean
Check if Poodle is configured.
-
.rails_config ⇒ Hash
Get configuration from Rails environment.
-
.reset! ⇒ void
Reset the configuration and client (useful for testing).
Class Attribute Details
.configuration ⇒ Configuration? (readonly)
35 36 37 |
# File 'lib/poodle/rails.rb', line 35 def configuration @configuration end |
Class Method Details
.auto_configure! ⇒ Configuration
Auto-configure from Rails credentials and environment
103 104 105 106 107 108 109 110 111 112 |
# File 'lib/poodle/rails.rb', line 103 def auto_configure! config_hash = rails_config configure do |config| configure_api_key(config, config_hash) configure_base_url(config, config_hash) configure_timeout(config, config_hash) configure_debug_mode(config, config_hash) end end |
.client ⇒ Client
Get the global Poodle client for Rails
63 64 65 66 67 |
# File 'lib/poodle/rails.rb', line 63 def client raise "Poodle not configured. Call Poodle::Rails.configure first." unless @configuration @client ||= Client.new(@configuration) end |
.configure {|Configuration| ... } ⇒ Configuration
Configure Poodle for Rails applications
49 50 51 52 53 |
# File 'lib/poodle/rails.rb', line 49 def configure @configuration = Configuration.new yield(@configuration) if block_given? @configuration end |
.configure_api_key(config, config_hash) ⇒ Object (private)
Configure API key from various sources
120 121 122 123 124 125 126 127 |
# File 'lib/poodle/rails.rb', line 120 def configure_api_key(config, config_hash) # Try Rails credentials first, then environment variables if defined?(::Rails) && ::Rails.application.credentials.respond_to?(:poodle_api_key) config.api_key = ::Rails.application.credentials.poodle_api_key end config.api_key ||= config_hash[:api_key] || ENV.fetch("POODLE_API_KEY", nil) end |
.configure_base_url(config, config_hash) ⇒ Object (private)
Configure base URL from various sources
133 134 135 |
# File 'lib/poodle/rails.rb', line 133 def configure_base_url(config, config_hash) config.base_url = config_hash[:base_url] || ENV["POODLE_BASE_URL"] || config.base_url end |
.configure_debug_mode(config, config_hash) ⇒ Object (private)
Configure debug mode from various sources
149 150 151 152 |
# File 'lib/poodle/rails.rb', line 149 def configure_debug_mode(config, config_hash) config.debug = config_hash[:debug] || ENV["POODLE_DEBUG"] == "true" || (defined?(::Rails) && ::Rails.env.development?) end |
.configure_timeout(config, config_hash) ⇒ Object (private)
Configure timeout from various sources
141 142 143 |
# File 'lib/poodle/rails.rb', line 141 def configure_timeout(config, config_hash) config.timeout = config_hash[:timeout] || ENV["POODLE_TIMEOUT"]&.to_i || config.timeout end |
.configured? ⇒ Boolean
Check if Poodle is configured
80 81 82 |
# File 'lib/poodle/rails.rb', line 80 def configured? !@configuration.nil? end |
.rails_config ⇒ Hash
Get configuration from Rails environment
87 88 89 90 91 92 93 94 95 |
# File 'lib/poodle/rails.rb', line 87 def rails_config return {} unless defined?(::Rails) begin ::Rails.application.config_for(:poodle) rescue StandardError {} end end |
.reset! ⇒ void
This method returns an undefined value.
Reset the configuration and client (useful for testing)
72 73 74 75 |
# File 'lib/poodle/rails.rb', line 72 def reset! @configuration = nil @client = nil end |