Class: CopyTunerClient::Configuration
- Inherits:
-
Object
- Object
- CopyTunerClient::Configuration
- Defined in:
- lib/copy_tuner_client/configuration.rb
Overview
Used to set up and modify settings for the client.
Constant Summary collapse
- OPTIONS =
These options will be present in the Hash returned by #to_hash.
[:api_key, :development_environments, :environment_name, :host, :http_open_timeout, :http_read_timeout, :client_name, :client_url, :client_version, :port, :protocol, :proxy_host, :proxy_pass, :proxy_port, :proxy_user, :secure, :polling_delay, :sync_interval, :sync_interval_staging, :sync_ignore_path_regex, :logger, :framework, :middleware, :disable_middleware, :disable_test_translation, :ca_file, :exclude_key_regexp, :s3_host, :locales].freeze
Instance Attribute Summary collapse
-
#api_key ⇒ String
The API key for your project, found on the project edit form.
-
#ca_file ⇒ String
The path to a root certificate file used to verify ssl sessions.
-
#cache ⇒ Cache
Instance used internally to synchronize changes.
-
#client ⇒ Client
Instance used to communicate with a CopyTuner Server.
-
#client_name ⇒ String
The name of the client library being used to send notifications (defaults to CopyTuner Client).
-
#client_url ⇒ String
The url of the client library being used.
-
#client_version ⇒ String
The version of the client library being used to send notifications (such as
1.0.2). -
#copyray_js_injection_regexp_for_debug ⇒ Regexp
Copyray js injection pattern for debug.
-
#copyray_js_injection_regexp_for_precompiled ⇒ Regexp
Copyray js injection pattern for precompiled.
-
#development_environments ⇒ Array<String>
A list of environments in which content should be editable.
-
#disable_copyray_comment_injection ⇒ Boolean
To disable Copyray comment injection, set true.
-
#disable_middleware ⇒ Boolean
Disable middleware setting.
-
#disable_test_translation ⇒ Boolean
Disable download translation for test enviroment.
-
#environment_name ⇒ String
The name of the environment the application is running in.
-
#exclude_key_regexp ⇒ Regexp
Regular expression to exclude keys.
-
#framework ⇒ String, NilClass
The framework notifications are being sent from, if any (such as Rails 2.3.9).
-
#host ⇒ String
The host to connect to (defaults to
copy-tuner.com). -
#http_open_timeout ⇒ Fixnum
The HTTP open timeout in seconds (defaults to
2). -
#http_read_timeout ⇒ Fixnum
The HTTP read timeout in seconds (defaults to
5). -
#inline_translation ⇒ Boolean
To enable inline-translation-mode, set true.
-
#locales ⇒ Array<Symbol>
Restrict blurb locales to upload.
-
#logger ⇒ Logger
Where to log messages.
-
#middleware ⇒ Object
The middleware stack, if any, which should respond to
use. -
#polling_delay ⇒ Integer
The time, in seconds, in between each sync to the server.
-
#port ⇒ Fixnum
The port on which your CopyTuner server runs (defaults to
443for secure connections,80for insecure connections). -
#proxy_host ⇒ String, NilClass
The hostname of your proxy server (if using a proxy).
-
#proxy_pass ⇒ String, NilClass
The password to use when logging into your proxy server (if using a proxy).
-
#proxy_port ⇒ String, Fixnum
The port of your proxy server (if using a proxy).
-
#proxy_user ⇒ String, NilClass
The username to use when logging into your proxy server (if using a proxy).
-
#s3_host ⇒ String
The S3 host to connect to (defaults to
copy-tuner-us.s3.amazonaws.com). -
#secure ⇒ Boolean
(also: #secure?)
truefor https connections,falsefor http connections. -
#sync_ignore_path_regex ⇒ Regex
Format ignore hook middleware sync.
-
#sync_interval ⇒ Object
Sync interval for Rack Middleware.
-
#sync_interval_staging ⇒ Integer
The time, in seconds, in between each sync to the server in development.
-
#test_environments ⇒ Array<String>
A list of environments in which the server should not be contacted.
Instance Method Summary collapse
-
#[](option) ⇒ Object
Allows config options to be read like a hash.
-
#applied? ⇒ Boolean
Determines if the configuration has been applied (internal).
-
#apply ⇒ Object
Applies the configuration (internal).
-
#development? ⇒ Boolean
Determines if the content will be editable.
- #enable_middleware? ⇒ Boolean
-
#environment_info ⇒ String
For logging/debugging (internal).
-
#initialize ⇒ Configuration
constructor
Instantiated from configure.
-
#merge(hash) ⇒ Hash
Returns a hash of all configurable options merged with
hash. -
#project_url ⇒ String
Current project url by api_key.
-
#protocol ⇒ String
The protocol that should be used when generating URLs to CopyTuner.
-
#public? ⇒ Boolean
Determines if the published or draft content will be used environment,
trueotherwise. -
#test? ⇒ Boolean
Determines if the content will fetched from the server.
-
#to_hash ⇒ Hash
Returns a hash of all configurable options.
Constructor Details
#initialize ⇒ Configuration
Instantiated from CopyTunerClient.configure. Sets defaults.
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/copy_tuner_client/configuration.rb', line 140 def initialize self.client_name = 'CopyTuner Client' self.client_url = 'https://rubygems.org/gems/copy_tuner_client' self.client_version = VERSION self.development_environments = %w(development staging) self.host = 'copy-tuner.com' self.http_open_timeout = 5 self.http_read_timeout = 5 self.logger = Logger.new($stdout) self.polling_delay = 300 self.sync_interval = 60 self.sync_interval_staging = 0 self.secure = true self.test_environments = %w(test cucumber) self.s3_host = 'copy-tuner-data-prod.s3.amazonaws.com' self.disable_copyray_comment_injection = false @applied = false end |
Instance Attribute Details
#api_key ⇒ String
25 26 27 |
# File 'lib/copy_tuner_client/configuration.rb', line 25 def api_key @api_key end |
#ca_file ⇒ String
100 101 102 |
# File 'lib/copy_tuner_client/configuration.rb', line 100 def ca_file @ca_file end |
#cache ⇒ Cache
103 104 105 |
# File 'lib/copy_tuner_client/configuration.rb', line 103 def cache @cache end |
#client ⇒ Client
106 107 108 |
# File 'lib/copy_tuner_client/configuration.rb', line 106 def client @client end |
#client_name ⇒ String
64 65 66 |
# File 'lib/copy_tuner_client/configuration.rb', line 64 def client_name @client_name end |
#client_url ⇒ String
73 74 75 |
# File 'lib/copy_tuner_client/configuration.rb', line 73 def client_url @client_url end |
#client_version ⇒ String
70 71 72 |
# File 'lib/copy_tuner_client/configuration.rb', line 70 def client_version @client_version end |
#copyray_js_injection_regexp_for_debug ⇒ Regexp
118 119 120 |
# File 'lib/copy_tuner_client/configuration.rb', line 118 def copyray_js_injection_regexp_for_debug @copyray_js_injection_regexp_for_debug end |
#copyray_js_injection_regexp_for_precompiled ⇒ Regexp
121 122 123 |
# File 'lib/copy_tuner_client/configuration.rb', line 121 def copyray_js_injection_regexp_for_precompiled @copyray_js_injection_regexp_for_precompiled end |
#development_environments ⇒ Array<String>
55 56 57 |
# File 'lib/copy_tuner_client/configuration.rb', line 55 def development_environments @development_environments end |
#disable_copyray_comment_injection ⇒ Boolean
124 125 126 |
# File 'lib/copy_tuner_client/configuration.rb', line 124 def disable_copyray_comment_injection @disable_copyray_comment_injection end |
#disable_middleware ⇒ Boolean
94 95 96 |
# File 'lib/copy_tuner_client/configuration.rb', line 94 def disable_middleware @disable_middleware end |
#disable_test_translation ⇒ Boolean
97 98 99 |
# File 'lib/copy_tuner_client/configuration.rb', line 97 def disable_test_translation @disable_test_translation end |
#environment_name ⇒ String
61 62 63 |
# File 'lib/copy_tuner_client/configuration.rb', line 61 def environment_name @environment_name end |
#exclude_key_regexp ⇒ Regexp
112 113 114 |
# File 'lib/copy_tuner_client/configuration.rb', line 112 def exclude_key_regexp @exclude_key_regexp end |
#framework ⇒ String, NilClass
67 68 69 |
# File 'lib/copy_tuner_client/configuration.rb', line 67 def framework @framework end |
#host ⇒ String
28 29 30 |
# File 'lib/copy_tuner_client/configuration.rb', line 28 def host @host end |
#http_open_timeout ⇒ Fixnum
37 38 39 |
# File 'lib/copy_tuner_client/configuration.rb', line 37 def http_open_timeout @http_open_timeout end |
#http_read_timeout ⇒ Fixnum
40 41 42 |
# File 'lib/copy_tuner_client/configuration.rb', line 40 def http_read_timeout @http_read_timeout end |
#inline_translation ⇒ Boolean
109 110 111 |
# File 'lib/copy_tuner_client/configuration.rb', line 109 def inline_translation @inline_translation end |
#locales ⇒ Array<Symbol>
127 128 129 |
# File 'lib/copy_tuner_client/configuration.rb', line 127 def locales @locales end |
#logger ⇒ Logger
88 89 90 |
# File 'lib/copy_tuner_client/configuration.rb', line 88 def logger @logger end |
#middleware ⇒ Object
91 92 93 |
# File 'lib/copy_tuner_client/configuration.rb', line 91 def middleware @middleware end |
#polling_delay ⇒ Integer
76 77 78 |
# File 'lib/copy_tuner_client/configuration.rb', line 76 def polling_delay @polling_delay end |
#port ⇒ Fixnum
31 32 33 |
# File 'lib/copy_tuner_client/configuration.rb', line 31 def port @port end |
#proxy_host ⇒ String, NilClass
43 44 45 |
# File 'lib/copy_tuner_client/configuration.rb', line 43 def proxy_host @proxy_host end |
#proxy_pass ⇒ String, NilClass
52 53 54 |
# File 'lib/copy_tuner_client/configuration.rb', line 52 def proxy_pass @proxy_pass end |
#proxy_port ⇒ String, Fixnum
46 47 48 |
# File 'lib/copy_tuner_client/configuration.rb', line 46 def proxy_port @proxy_port end |
#proxy_user ⇒ String, NilClass
49 50 51 |
# File 'lib/copy_tuner_client/configuration.rb', line 49 def proxy_user @proxy_user end |
#s3_host ⇒ String
115 116 117 |
# File 'lib/copy_tuner_client/configuration.rb', line 115 def s3_host @s3_host end |
#secure ⇒ Boolean Also known as: secure?
34 35 36 |
# File 'lib/copy_tuner_client/configuration.rb', line 34 def secure @secure end |
#sync_ignore_path_regex ⇒ Regex
85 86 87 |
# File 'lib/copy_tuner_client/configuration.rb', line 85 def sync_ignore_path_regex @sync_ignore_path_regex end |
#sync_interval ⇒ Object
Sync interval for Rack Middleware
79 80 81 |
# File 'lib/copy_tuner_client/configuration.rb', line 79 def sync_interval @sync_interval end |
#sync_interval_staging ⇒ Integer
82 83 84 |
# File 'lib/copy_tuner_client/configuration.rb', line 82 def sync_interval_staging @sync_interval_staging end |
#test_environments ⇒ Array<String>
58 59 60 |
# File 'lib/copy_tuner_client/configuration.rb', line 58 def test_environments @test_environments end |
Instance Method Details
#[](option) ⇒ Object
Allows config options to be read like a hash
164 165 166 |
# File 'lib/copy_tuner_client/configuration.rb', line 164 def [](option) send(option) end |
#applied? ⇒ Boolean
Determines if the configuration has been applied (internal)
211 212 213 |
# File 'lib/copy_tuner_client/configuration.rb', line 211 def applied? @applied end |
#apply ⇒ Object
Applies the configuration (internal).
Called automatically when CopyTunerClient.configure is called in the application.
This creates the I18nBackend and puts them together.
When #test? returns false, the poller will be started.
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
# File 'lib/copy_tuner_client/configuration.rb', line 222 def apply self.locales ||= begin if defined?(::Rails) self.locales = ::Rails.application.config.i18n.available_locales.presence || Array(::Rails.application.config.i18n.default_locale) else self.locales = [:en] end end self.client ||= Client.new(to_hash) self.cache ||= Cache.new(client, to_hash) poller = Poller.new(cache, to_hash) process_guard = ProcessGuard.new(cache, poller, to_hash) I18n.backend = I18nBackend.new(cache) if enable_middleware? logger.info "Using copytuner sync middleware" middleware.use RequestSync, :cache => cache, :interval => sync_interval, :ignore_regex => sync_ignore_path_regex middleware.use CopyTunerClient::CopyrayMiddleware else logger.info "[[[Warn]]] Not useing copytuner sync middleware" unless middleware end @applied = true logger.info "Client #{VERSION} ready (s3_download)" logger.info "Environment Info: #{environment_info}" logger.info "Available locales: #{self.locales.join(' ')}" unless test? process_guard.start end if test? and !disable_test_translation logger.info "Download translation now" cache.download end end |
#development? ⇒ Boolean
Determines if the content will be editable
195 196 197 |
# File 'lib/copy_tuner_client/configuration.rb', line 195 def development? development_environments.include? environment_name end |
#enable_middleware? ⇒ Boolean
199 200 201 |
# File 'lib/copy_tuner_client/configuration.rb', line 199 def enable_middleware? middleware && development? && !disable_middleware end |
#environment_info ⇒ String
For logging/debugging (internal).
276 277 278 279 |
# File 'lib/copy_tuner_client/configuration.rb', line 276 def environment_info parts = ["Ruby: #{RUBY_VERSION}", framework, "Env: #{environment_name}"] parts.compact.map { |part| "[#{part}]" }.join(" ") end |
#merge(hash) ⇒ Hash
Returns a hash of all configurable options merged with hash
182 183 184 |
# File 'lib/copy_tuner_client/configuration.rb', line 182 def merge(hash) to_hash.merge hash end |
#project_url ⇒ String
298 299 300 |
# File 'lib/copy_tuner_client/configuration.rb', line 298 def project_url URI::Generic.build(:scheme => self.protocol, :host => self.host, :port => self.port.to_i, :path => "/projects/#{self.api_key}").to_s end |
#protocol ⇒ String
The protocol that should be used when generating URLs to CopyTuner.
266 267 268 269 270 271 272 |
# File 'lib/copy_tuner_client/configuration.rb', line 266 def protocol if secure? 'https' else 'http' end end |
#public? ⇒ Boolean
Determines if the published or draft content will be used environment, true otherwise.
189 190 191 |
# File 'lib/copy_tuner_client/configuration.rb', line 189 def public? !(development_environments + test_environments).include?(environment_name) end |
#test? ⇒ Boolean
Determines if the content will fetched from the server
205 206 207 |
# File 'lib/copy_tuner_client/configuration.rb', line 205 def test? test_environments.include? environment_name end |
#to_hash ⇒ Hash
Returns a hash of all configurable options
170 171 172 173 174 175 176 |
# File 'lib/copy_tuner_client/configuration.rb', line 170 def to_hash = { :public => public? } OPTIONS.inject() do |hash, option| hash.merge option.to_sym => send(option) end end |