Module: ActiveProject
- Defined in:
- lib/activeproject.rb,
lib/active_project/async.rb,
lib/active_project/errors.rb,
lib/active_project/railtie.rb,
lib/active_project/version.rb,
lib/active_project/error_mapper.rb,
lib/active_project/adapters/base.rb,
lib/active_project/configuration.rb,
lib/active_project/status_mapper.rb,
lib/active_project/webhook_event.rb,
lib/active_project/resources/user.rb,
lib/active_project/resources/issue.rb,
lib/active_project/connections/base.rb,
lib/active_project/connections/rest.rb,
lib/active_project/resource_factory.rb,
lib/active_project/association_proxy.rb,
lib/active_project/resources/comment.rb,
lib/active_project/resources/project.rb,
lib/active_project/adapters/jira/issues.rb,
lib/active_project/connections/graph_ql.rb,
lib/active_project/adapters/fizzy/issues.rb,
lib/active_project/adapters/jira_adapter.rb,
lib/active_project/adapters/trello/lists.rb,
lib/active_project/adapters/fizzy/columns.rb,
lib/active_project/adapters/fizzy_adapter.rb,
lib/active_project/adapters/jira/comments.rb,
lib/active_project/adapters/jira/projects.rb,
lib/active_project/adapters/jira/webhooks.rb,
lib/active_project/adapters/trello/issues.rb,
lib/active_project/connections/pagination.rb,
lib/active_project/adapters/basecamp/lists.rb,
lib/active_project/adapters/fizzy/comments.rb,
lib/active_project/adapters/fizzy/projects.rb,
lib/active_project/adapters/github_project.rb,
lib/active_project/adapters/trello_adapter.rb,
lib/active_project/connections/http_client.rb,
lib/active_project/resources/base_resource.rb,
lib/active_project/adapters/basecamp/issues.rb,
lib/active_project/adapters/jira/connection.rb,
lib/active_project/adapters/trello/comments.rb,
lib/active_project/adapters/trello/projects.rb,
lib/active_project/adapters/trello/webhooks.rb,
lib/active_project/adapters/basecamp_adapter.rb,
lib/active_project/adapters/fizzy/connection.rb,
lib/active_project/adapters/jira/transitions.rb,
lib/active_project/adapters/basecamp/comments.rb,
lib/active_project/adapters/basecamp/projects.rb,
lib/active_project/adapters/basecamp/webhooks.rb,
lib/active_project/adapters/trello/connection.rb,
lib/active_project/adapters/github_repo/issues.rb,
lib/active_project/adapters/basecamp/connection.rb,
lib/active_project/adapters/github_repo_adapter.rb,
lib/active_project/adapters/github_repo/projects.rb,
lib/active_project/adapters/github_repo/webhooks.rb,
lib/active_project/adapters/github_project/issues.rb,
lib/active_project/resources/persistable_resource.rb,
lib/active_project/adapters/github_project/helpers.rb,
lib/active_project/adapters/github_project_adapter.rb,
lib/active_project/adapters/github_repo/connection.rb,
lib/active_project/adapters/github_project/comments.rb,
lib/active_project/adapters/github_project/projects.rb,
lib/active_project/adapters/github_project/webhooks.rb,
lib/active_project/configurations/jira_configuration.rb,
lib/active_project/adapters/github_project/connection.rb,
lib/active_project/adapters/jira/attribute_normalizer.rb,
lib/active_project/configurations/fizzy_configuration.rb,
lib/active_project/configurations/github_configuration.rb,
lib/active_project/configurations/trello_configuration.rb,
lib/active_project/configurations/basecamp_configuration.rb,
lib/active_project/configurations/base_adapter_configuration.rb
Defined Under Namespace
Modules: Adapters, Async, Configurations, Connections, ErrorMapper, Resources Classes: ApiError, AssociationProxy, AuthenticationError, Configuration, ConfigurationError, ConnectionError, Error, NotFoundError, NotImplementedError, Railtie, RateLimitError, ResourceFactory, StatusMapper, ValidationError, WebhookEvent
Constant Summary collapse
- VERSION =
"0.5.0"
Class Attribute Summary collapse
Class Method Summary collapse
-
.adapter(adapter_type, instance_name = :primary) ⇒ ActiveProject::Adapters::Base
Returns a memoized instance of the requested adapter.
-
.adapter_registry ⇒ Concurrent::Map
Returns a thread-safe map that stores adapter instances.
- .configure {|configuration| ... } ⇒ Object
-
.list_available_configurations ⇒ Hash
Lists all available configurations in the format adapter_name:instance_name.
-
.reset_adapters ⇒ void
Resets all cached adapters, forcing them to be re-initialized with current configuration.
-
.user_agent ⇒ String
Returns the configured User-Agent string, including the gem version.
Class Attribute Details
.configuration ⇒ Object
15 16 17 |
# File 'lib/activeproject.rb', line 15 def configuration @configuration ||= Configuration.new end |
Class Method Details
.adapter(adapter_type, instance_name = :primary) ⇒ ActiveProject::Adapters::Base
Returns a memoized instance of the requested adapter. Thread-safe implementation using Concurrent::Map for the adapter registry.
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/activeproject.rb', line 44 def adapter(adapter_type, instance_name = :primary) key = "#{adapter_type}_#{instance_name}".to_sym adapter_registry.fetch_or_store(key) do config = configuration.adapter_config(adapter_type, instance_name) unless config.is_a?(ActiveProject::Configurations::BaseAdapterConfiguration) available_configs = list_available_configurations = "Configuration for adapter ':#{adapter_type}' (instance ':#{instance_name}') not found or invalid.\n\n" if available_configs.empty? += "No adapters are currently configured. " else += "Available configurations:\n" available_configs.each do |adapter_key, config_type| += " * #{adapter_key} (#{config_type})\n" end end += "\nTo configure, use:\n" += " ActiveProject.configure do |config|\n" += " config.add_adapter :#{adapter_type}, :#{instance_name}, { your_options_here }\n" += " end" raise ArgumentError, end adapter_class_name = "ActiveProject::Adapters::#{adapter_type.to_s.classify}Adapter" begin require "active_project/adapters/#{adapter_type}_adapter" rescue LoadError raise LoadError, "Could not load adapter '#{adapter_type}'. " \ "Expected class #{adapter_class_name} in adapters/#{adapter_type}_adapter.rb" end begin adapter_class = Object.const_get(adapter_class_name) rescue NameError = "Could not find adapter class #{adapter_class_name}.\n" += "Make sure you have defined the class correctly in active_project/adapters/#{adapter_type}_adapter.rb" raise NameError, end adapter_class.new(config: config) end end |
.adapter_registry ⇒ Concurrent::Map
Returns a thread-safe map that stores adapter instances
106 107 108 |
# File 'lib/activeproject.rb', line 106 def adapter_registry @adapter_registry ||= Concurrent::Map.new end |
.configure {|configuration| ... } ⇒ Object
19 20 21 |
# File 'lib/activeproject.rb', line 19 def configure yield(configuration) end |
.list_available_configurations ⇒ Hash
Lists all available configurations in the format adapter_name:instance_name
95 96 97 98 99 100 101 102 |
# File 'lib/activeproject.rb', line 95 def list_available_configurations result = {} configuration.adapter_configs.each do |key, config| config_type = config.class.name.split("::").last result[key] = config_type end result end |
.reset_adapters ⇒ void
This method returns an undefined value.
Resets all cached adapters, forcing them to be re-initialized with current configuration
25 26 27 |
# File 'lib/activeproject.rb', line 25 def reset_adapters adapter_registry.clear if defined?(@adapter_registry) && @adapter_registry end |
.user_agent ⇒ String
Returns the configured User-Agent string, including the gem version.
31 32 33 34 |
# File 'lib/activeproject.rb', line 31 def user_agent base_agent = configuration.user_agent || "ActiveProject Gem (github.com/seuros/activeproject)" "#{base_agent} v#{ActiveProject::VERSION}" end |