klastera 1.4.1 → 1.4.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/models/klastera/concerns/cluster_entity.rb +6 -0
- data/app/models/klastera/concerns/clusterizable.rb +10 -3
- data/app/models/klastera/concerns/organization.rb +12 -1
- data/app/models/klastera/concerns/user.rb +12 -12
- data/app/views/layouts/klastera/_cluster_entity_fields.html.erb +1 -1
- data/app/views/layouts/klastera/_cluster_filter.html.erb +1 -1
- data/app/views/layouts/klastera/_cluster_user_fields.html.erb +1 -1
- data/db/migrate/20200908180057_add_cluster_config_to_organization.rb +5 -0
- data/lib/klastera.rb +23 -18
- data/lib/klastera/version.rb +1 -1
- metadata +7 -12
- data/test/dummy/log/development.log +0 -108
- data/test/dummy/log/test.log +0 -0
- data/test/dummy/tmp/pids/server.pid +0 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 775712865aa542b64dd8fff79f0051ee39ed45c9db8153e63639c897b44f406c
         | 
| 4 | 
            +
              data.tar.gz: '0328c25a8ad44e5cacec26c77d4d703d129adc493c205b300387cc8ff83e1ff7'
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: f4ad8a8c3a8d6cdf00aa92d7dcaf04317462aa023c9e59640d15f57a555e049f44276e1bd93237e9ee8a2600ac7e0585058c626ef79a34a3bd2673e8e3ef9451
         | 
| 7 | 
            +
              data.tar.gz: 9be95730d3ce71ac9f8ed73b5b6ea5ed1d3ba384b05cba2a52ca926518ddc261c164fabcefc3c67c15d08d92c97c098f22f6e10d095b691dafc90f7c613079ae
         | 
| @@ -8,5 +8,11 @@ module Klastera::Concerns::ClusterEntity | |
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 10 | 
             
              module ClassMethods
         | 
| 11 | 
            +
                def left_join_sources_of(scope_klass)
         | 
| 12 | 
            +
                  scope_klass_arel_table = scope_klass.arel_table
         | 
| 13 | 
            +
                  scope_klass_arel_table.join(arel_table, Arel::Nodes::OuterJoin).on(
         | 
| 14 | 
            +
                    scope_klass_arel_table[:id].eq(arel_table[:entity_id]), arel_table[:entity_type].eq(scope_klass.name)
         | 
| 15 | 
            +
                  ).join_sources
         | 
| 16 | 
            +
                end
         | 
| 11 17 | 
             
              end
         | 
| 12 18 | 
             
            end
         | 
| @@ -1,13 +1,16 @@ | |
| 1 1 | 
             
            module Klastera::Concerns::Clusterizable
         | 
| 2 2 | 
             
              extend ActiveSupport::Concern
         | 
| 3 | 
            +
             | 
| 3 4 | 
             
              included do
         | 
| 5 | 
            +
                class MutipleClustersOperationError < StandardError; end
         | 
| 6 | 
            +
             | 
| 4 7 | 
             
                belongs_to :cluster
         | 
| 5 8 |  | 
| 6 9 | 
             
                has_many :cluster_entities, as: :entity, class_name: Klastera::ClusterEntity
         | 
| 7 10 | 
             
                accepts_nested_attributes_for :cluster_entities, reject_if: :all_blank, allow_destroy: true
         | 
| 8 11 |  | 
| 9 | 
            -
                validates :cluster_id, presence: true, if:  | 
| 10 | 
            -
                validate :at_least_one_cluster_entity, if:  | 
| 12 | 
            +
                validates :cluster_id, presence: true, if: -> { cluster_id.present? && organization.present? && organization.required_suborganization_mode? }
         | 
| 13 | 
            +
                validate :at_least_one_cluster_entity, if: -> { organization.present? && organization.required_suborganization_mode? }
         | 
| 11 14 | 
             
                validate :uniqueness_of_cluster_entity_record
         | 
| 12 15 |  | 
| 13 16 | 
             
                scope :includes_cluster, -> { includes(cluster_entities: :cluster) }
         | 
| @@ -18,6 +21,10 @@ module Klastera::Concerns::Clusterizable | |
| 18 21 | 
             
                  end
         | 
| 19 22 | 
             
                end
         | 
| 20 23 |  | 
| 24 | 
            +
                def allow_multiple_clusters?(default=:one)
         | 
| 25 | 
            +
                  organization.present? && organization.cluster_cardinality_of(self.class, default: default) == :many
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 21 28 | 
             
                ##
         | 
| 22 29 | 
             
                 # This is a legacy method and we don't recommend using it.
         | 
| 23 30 | 
             
                 # Implement directly Klastera.entity_clusters_string_list instead of this method.
         | 
| @@ -25,7 +32,7 @@ module Klastera::Concerns::Clusterizable | |
| 25 32 | 
             
                 ##
         | 
| 26 33 | 
             
                def clusters_string_separated_by(separator,attribute=:name)
         | 
| 27 34 | 
             
                  Klastera.entity_clusters_string_list!(
         | 
| 28 | 
            -
                     | 
| 35 | 
            +
                    cluster_entities, separator, attribute
         | 
| 29 36 | 
             
                  )
         | 
| 30 37 | 
             
                end
         | 
| 31 38 |  | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module Klastera::Concerns::Organization
         | 
| 2 2 | 
             
              extend ActiveSupport::Concern
         | 
| 3 3 | 
             
              included do
         | 
| 4 | 
            -
                
         | 
| 4 | 
            +
                serialize :cluster_config
         | 
| 5 5 | 
             
                has_many :clusters
         | 
| 6 6 |  | 
| 7 7 | 
             
                validates :use_cluster_as, inclusion: { in: ::Cluster::MODES.map{|m|m.to_s}, message: I18n.t('klastera.clusters.wrong_option') }, if: proc{ use_cluster_as.present? }
         | 
| @@ -11,6 +11,17 @@ module Klastera::Concerns::Organization | |
| 11 11 | 
             
                  self.use_cluster_as.to_s.to_sym
         | 
| 12 12 | 
             
                end
         | 
| 13 13 |  | 
| 14 | 
            +
                def cluster_cardinality_of(entity, default: :many)
         | 
| 15 | 
            +
                  if cluster_config.is_a?(Hash)
         | 
| 16 | 
            +
                    entities_cardinality = cluster_config[:entities]&.[](:cardinality)||{}
         | 
| 17 | 
            +
                    entity = entity.to_s.to_sym
         | 
| 18 | 
            +
                    if entities_cardinality.has_key?(entity)
         | 
| 19 | 
            +
                      default = entities_cardinality[entity]
         | 
| 20 | 
            +
                    end
         | 
| 21 | 
            +
                  end
         | 
| 22 | 
            +
                  default.to_s.to_sym
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 14 25 | 
             
                ##
         | 
| 15 26 | 
             
                 # Return a boolean if one of three of options was set in organization
         | 
| 16 27 | 
             
                 # As useless option you can retrieve the value passing false as argument.
         | 
| @@ -11,29 +11,29 @@ module Klastera::Concerns::User | |
| 11 11 |  | 
| 12 12 | 
             
                has_many :cluster_users, inverse_of: :user, class_name: ::ClusterUser.to_s
         | 
| 13 13 | 
             
                accepts_nested_attributes_for :cluster_users, reject_if: :all_blank, allow_destroy: true
         | 
| 14 | 
            -
                validates :cluster_role, presence: true, if:  | 
| 15 | 
            -
                validates :cluster_role, inclusion: { in: CLUSTER_ROLES , message: I18n.t('klastera.clusters.wrong_option') }, if:  | 
| 16 | 
            -
                validate :at_least_one_role, if:  | 
| 14 | 
            +
                validates :cluster_role, presence: true, if: -> { organization.present? && organization.is_in_cluster_mode? }
         | 
| 15 | 
            +
                validates :cluster_role, inclusion: { in: CLUSTER_ROLES , message: I18n.t('klastera.clusters.wrong_option') }, if: -> { cluster_role.present? }
         | 
| 16 | 
            +
                validate :at_least_one_role, if: -> { use_cluster? && try(:need_cluster_assignation?) }
         | 
| 17 17 |  | 
| 18 | 
            -
                def use_cluster?;  | 
| 18 | 
            +
                def use_cluster?; cluster_role.present?; end
         | 
| 19 19 |  | 
| 20 | 
            -
                def is_a_cluster_root?;  | 
| 21 | 
            -
                def is_a_cluster_admin?;  | 
| 22 | 
            -
                def is_a_cluster_user?;  | 
| 20 | 
            +
                def is_a_cluster_root?; cluster_role == CLUSTER_ROOT; end
         | 
| 21 | 
            +
                def is_a_cluster_admin?; cluster_role == CLUSTER_ADMIN; end
         | 
| 22 | 
            +
                def is_a_cluster_user?; cluster_role == CLUSTER_USER; end
         | 
| 23 23 |  | 
| 24 24 | 
             
                def need_cluster_assignation?
         | 
| 25 | 
            -
                   | 
| 25 | 
            +
                  organization.present? && organization.required_suborganization_mode? && is_a_cluster_user?
         | 
| 26 26 | 
             
                end
         | 
| 27 27 |  | 
| 28 28 | 
             
                def can_admin_clusters?
         | 
| 29 | 
            -
                   | 
| 29 | 
            +
                  organization.present? && organization.is_in_cluster_mode? && ( is_a_cluster_admin? || is_a_cluster_root? )
         | 
| 30 30 | 
             
                end
         | 
| 31 31 |  | 
| 32 32 | 
             
                #
         | 
| 33 33 | 
             
                # It tells if this user should see what they cluster role or organization dictates
         | 
| 34 34 | 
             
                # Adminers and users from show cluster modes skip cluster clause
         | 
| 35 35 | 
             
                def cannot_skip_cluster_clause?
         | 
| 36 | 
            -
                  ! (  | 
| 36 | 
            +
                  ! ( is_a_cluster_admin? || is_a_cluster_root? || ( organization.present? && organization.optional_suborganization_mode? && cluster_users.blank? ) )
         | 
| 37 37 | 
             
                end
         | 
| 38 38 |  | 
| 39 39 | 
             
                #
         | 
| @@ -43,9 +43,9 @@ module Klastera::Concerns::User | |
| 43 43 | 
             
                # cluster_id is present (on show/use mode organizations).
         | 
| 44 44 | 
             
                #
         | 
| 45 45 | 
             
                def try_to_clusterify!(role,cluster_ids)
         | 
| 46 | 
            -
                  if  | 
| 46 | 
            +
                  if organization.present? && organization.is_in_cluster_mode?
         | 
| 47 47 | 
             
                    self.cluster_role = role
         | 
| 48 | 
            -
                    if  | 
| 48 | 
            +
                    if ( organization.present? && organization.required_suborganization_mode? ) || cluster_ids.present?
         | 
| 49 49 | 
             
                      timestamp = DateTime.now.to_i
         | 
| 50 50 | 
             
                      nested_attributes = {}
         | 
| 51 51 | 
             
                      cluster_ids.each do |cluster_id|
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            <tr class="nested-fields">
         | 
| 2 2 | 
             
              <td class="field">
         | 
| 3 | 
            -
                <%= f.select :cluster_id, @clusters_session.map{|c|[c.name,c.id]}, { include_blank: true }, { class: 'form-control' } %>
         | 
| 3 | 
            +
                <%= f.select :cluster_id, @clusters_session.order(:order,:name).map{|c|[c.name,c.id]}, { include_blank: true }, { class: 'form-control' } %>
         | 
| 4 4 | 
             
              </td>
         | 
| 5 5 | 
             
              <td class="action vertical-align-middle text-center" width="44">
         | 
| 6 6 | 
             
                <%= link_to_remove_association f, class: 'btn btn-danger btn-xs text-danger' do %>
         | 
| @@ -7,7 +7,7 @@ | |
| 7 7 | 
             
              <%=yield(f) if block_given? %>
         | 
| 8 8 |  | 
| 9 9 | 
             
              <% if cluster_organization.is_in_cluster_mode? %>
         | 
| 10 | 
            -
                <% cluster_collection = cluster_list.map{|c|[c.name,(c.id||c.nid)]} %>
         | 
| 10 | 
            +
                <% cluster_collection = cluster_list.order(:order, :name).map{|c|[c.name,(c.id||c.nid)]} %>
         | 
| 11 11 | 
             
                <% if cluster_collection.size > 1 %>
         | 
| 12 12 | 
             
                  <div class="inline-label-control-block">
         | 
| 13 13 | 
             
                    <%= f.input :cluster_id, collection: cluster_collection, prompt: t('klastera.clusters.all'), label: false, wrapper: false %>
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            <tr class="nested-fields">
         | 
| 2 2 | 
             
              <td class="field">
         | 
| 3 | 
            -
                <%= f.select :cluster_id, @user.organization.clusters.map{|c|[c.name,c.id]}, { include_blank: true }, { class: 'form-control' } %>
         | 
| 3 | 
            +
                <%= f.select :cluster_id, @user.organization.clusters.order(:order, :name).map{|c|[c.name,c.id]}, { include_blank: true }, { class: 'form-control' } %>
         | 
| 4 4 | 
             
              </td>
         | 
| 5 5 | 
             
              <td class="action vertical-align-middle text-center" width="44">
         | 
| 6 6 | 
             
                <%= link_to_remove_association f, class: 'btn btn-danger btn-xs text-danger' do %>
         | 
    
        data/lib/klastera.rb
    CHANGED
    
    | @@ -54,7 +54,7 @@ module Klastera | |
| 54 54 | 
             
                  end
         | 
| 55 55 | 
             
                  _cluster_entities.map do |ce|
         | 
| 56 56 | 
             
                    ce.cluster.try(attribute)
         | 
| 57 | 
            -
                  end.compact.join(separator)
         | 
| 57 | 
            +
                  end.sort.compact.join(separator)
         | 
| 58 58 | 
             
                end
         | 
| 59 59 |  | 
| 60 60 | 
             
                ##
         | 
| @@ -79,9 +79,8 @@ module Klastera | |
| 79 79 | 
             
                # cluster_filter_id is present when the optional_suborganization mode is on. BUT!
         | 
| 80 80 | 
             
                # Be aware that if the cluster_filter is not present, the value of force_cluster_clause
         | 
| 81 81 | 
             
                # will be overridden by the returned value of cannot_skip_cluster_clause? method.
         | 
| 82 | 
            -
                 | 
| 83 | 
            -
             | 
| 84 | 
            -
                  scope_klass = scope_class(scope_klass)
         | 
| 82 | 
            +
                def should_clusterize_scope?(user, organization, cluster_filter=nil, force_cluster_clause=false)
         | 
| 83 | 
            +
                  should = false # I don't know if this is a good idea
         | 
| 85 84 | 
             
                  if organization.is_in_cluster_mode? && ( cluster_filter.present? || force_cluster_clause = user.cannot_skip_cluster_clause? ) # yes, this is an assignation
         | 
| 86 85 | 
             
                    cluster_ids = []
         | 
| 87 86 | 
             
                    # Set another variable as array to get the cluster id(s)
         | 
| @@ -92,15 +91,27 @@ module Klastera | |
| 92 91 | 
             
                    end
         | 
| 93 92 | 
             
                    # We will avoid the query unless cluster_ids is having values OR force_cluster_clause is set (see method description)
         | 
| 94 93 | 
             
                    if cluster_ids.present? || force_cluster_clause
         | 
| 95 | 
            -
                      scope_klass = scope_klass.eager_load(:organization,cluster_entities: :cluster)
         | 
| 96 94 | 
             
                      # We add the unclustered if the value of cluster_filter have the special without_cluster string or as method description says
         | 
| 97 95 | 
             
                      if cluster_ids.delete(UNCLUSTERED_ENTITY) || ( force_cluster_clause && organization.optional_suborganization_mode? )
         | 
| 98 96 | 
             
                        cluster_ids << nil
         | 
| 99 97 | 
             
                      end
         | 
| 100 | 
            -
                       | 
| 98 | 
            +
                      should = true
         | 
| 99 | 
            +
                    end
         | 
| 100 | 
            +
                  end
         | 
| 101 | 
            +
                  yield(should,cluster_ids)
         | 
| 102 | 
            +
                end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                #
         | 
| 105 | 
            +
                # The cleanest and fast way to clusterize a entity!
         | 
| 106 | 
            +
                #
         | 
| 107 | 
            +
                def cluster_scope!(scope_klass, user, organization, cluster_filter=nil, force_cluster_clause=false)
         | 
| 108 | 
            +
                  scope = scope_class(scope_klass)
         | 
| 109 | 
            +
                  should_clusterize_scope?(user,organization,cluster_filter,force_cluster_clause) do |should,cluster_ids|
         | 
| 110 | 
            +
                    if should
         | 
| 111 | 
            +
                      scope = scope.eager_load(:organization,cluster_entities: :cluster).where( cluster_entities: { cluster_id: cluster_ids } )
         | 
| 101 112 | 
             
                    end
         | 
| 102 113 | 
             
                  end
         | 
| 103 | 
            -
                   | 
| 114 | 
            +
                  scope.where(organization_id: organization)
         | 
| 104 115 | 
             
                end
         | 
| 105 116 |  | 
| 106 117 | 
             
                # 
         | 
| @@ -110,7 +121,7 @@ module Klastera | |
| 110 121 | 
             
                  unclusterized_scope = scope_class(scope_klass)
         | 
| 111 122 |  | 
| 112 123 | 
             
                  if organization.is_in_cluster_mode? && ( force_cluster_clause || user.cannot_skip_cluster_clause? )
         | 
| 113 | 
            -
                    unclusterized_scope = unclusterized_scope.joins(relation | 
| 124 | 
            +
                    unclusterized_scope = unclusterized_scope.joins(relation).joins(Klastera::ClusterEntity.left_join_sources_of(cluster_entity_klass))
         | 
| 114 125 | 
             
                  end
         | 
| 115 126 |  | 
| 116 127 | 
             
                  if scope_klass.respond_to?(:organization)
         | 
| @@ -158,19 +169,13 @@ module Klastera | |
| 158 169 | 
             
                # instead of the default INNER JOIN provide by ActiveRecord's joins method
         | 
| 159 170 | 
             
                #
         | 
| 160 171 | 
             
                def cluster_scope_left_join!(scope_klass,organization)
         | 
| 161 | 
            -
                   | 
| 162 | 
            -
                   | 
| 163 | 
            -
             | 
| 164 | 
            -
                  scope_klass_cluster_entities  = scope_klass_arel_table.join(cluster_entities_arel_table, Arel::Nodes::OuterJoin).on(
         | 
| 165 | 
            -
                    scope_klass_arel_table[:id].eq(cluster_entities_arel_table[:entity_id]), cluster_entities_arel_table[:entity_type].eq(scope_klass.name)
         | 
| 166 | 
            -
                  ).join_sources
         | 
| 167 | 
            -
             | 
| 168 | 
            -
                  cluster_arel_table            = ::Cluster.arel_table
         | 
| 169 | 
            -
                  cluster_entities_cluster      = cluster_entities_arel_table.join(cluster_arel_table, Arel::Nodes::OuterJoin).on(
         | 
| 172 | 
            +
                  cluster_entities_arel_table = Klastera::ClusterEntity.arel_table
         | 
| 173 | 
            +
                  cluster_arel_table = ::Cluster.arel_table
         | 
| 174 | 
            +
                  cluster_entities_cluster = cluster_entities_arel_table.join(cluster_arel_table, Arel::Nodes::OuterJoin).on(
         | 
| 170 175 | 
             
                    cluster_entities_arel_table[:cluster_id].eq(cluster_arel_table[:id]),
         | 
| 171 176 | 
             
                  ).join_sources
         | 
| 172 177 |  | 
| 173 | 
            -
                  scope_class(scope_klass).where(organization_id: organization).joins( | 
| 178 | 
            +
                  scope_class(scope_klass).where(organization_id: organization).joins(Klastera::ClusterEntity.left_join_sources_of(scope_klass)).joins(cluster_entities_cluster)
         | 
| 174 179 | 
             
                end
         | 
| 175 180 | 
             
              end
         | 
| 176 181 |  | 
    
        data/lib/klastera/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: klastera
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.4. | 
| 4 | 
            +
              version: 1.4.4.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Gino Barahona
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2020- | 
| 11 | 
            +
            date: 2020-11-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rails
         | 
| @@ -93,14 +93,12 @@ files: | |
| 93 93 | 
             
            - db/migrate/20200330010551_create_klastera_cluster_users.rb
         | 
| 94 94 | 
             
            - db/migrate/20200330221601_add_order_field_to_clusters.rb
         | 
| 95 95 | 
             
            - db/migrate/20200518142609_create_klastera_cluster_entities.rb
         | 
| 96 | 
            +
            - db/migrate/20200908180057_add_cluster_config_to_organization.rb
         | 
| 96 97 | 
             
            - lib/klastera.rb
         | 
| 97 98 | 
             
            - lib/klastera/engine.rb
         | 
| 98 99 | 
             
            - lib/klastera/version.rb
         | 
| 99 100 | 
             
            - lib/tasks/klastera_tasks.rake
         | 
| 100 101 | 
             
            - test/controllers/klastera/clusters_controller_test.rb
         | 
| 101 | 
            -
            - test/dummy/log/development.log
         | 
| 102 | 
            -
            - test/dummy/log/test.log
         | 
| 103 | 
            -
            - test/dummy/tmp/pids/server.pid
         | 
| 104 102 | 
             
            - test/fixtures/klastera/cluster_users.yml
         | 
| 105 103 | 
             
            - test/fixtures/klastera/clusters.yml
         | 
| 106 104 | 
             
            - test/integration/navigation_test.rb
         | 
| @@ -112,7 +110,7 @@ homepage: https://github.com/ginosx/klastera | |
| 112 110 | 
             
            licenses:
         | 
| 113 111 | 
             
            - MIT
         | 
| 114 112 | 
             
            metadata: {}
         | 
| 115 | 
            -
            post_install_message: | 
| 113 | 
            +
            post_install_message:
         | 
| 116 114 | 
             
            rdoc_options: []
         | 
| 117 115 | 
             
            require_paths:
         | 
| 118 116 | 
             
            - lib
         | 
| @@ -127,14 +125,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 127 125 | 
             
                - !ruby/object:Gem::Version
         | 
| 128 126 | 
             
                  version: '0'
         | 
| 129 127 | 
             
            requirements: []
         | 
| 130 | 
            -
            rubygems_version: 3. | 
| 131 | 
            -
            signing_key: | 
| 128 | 
            +
            rubygems_version: 3.0.8
         | 
| 129 | 
            +
            signing_key:
         | 
| 132 130 | 
             
            specification_version: 4
         | 
| 133 131 | 
             
            summary: Clusterization Engine
         | 
| 134 132 | 
             
            test_files:
         | 
| 135 | 
            -
            - test/dummy/log/test.log
         | 
| 136 | 
            -
            - test/dummy/log/development.log
         | 
| 137 | 
            -
            - test/dummy/tmp/pids/server.pid
         | 
| 138 133 | 
             
            - test/integration/navigation_test.rb
         | 
| 139 134 | 
             
            - test/models/klastera/cluster_user_test.rb
         | 
| 140 135 | 
             
            - test/models/klastera/cluster_test.rb
         | 
| @@ -1,108 +0,0 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            Started GET "/" for ::1 at 2020-03-24 17:46:51 -0300
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            ActiveRecord::NoDatabaseError (FATAL:  database "dummy_development" does not exist
         | 
| 6 | 
            -
            ):
         | 
| 7 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/postgresql_adapter.rb:661:in `rescue in connect'
         | 
| 8 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/postgresql_adapter.rb:650:in `connect'
         | 
| 9 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/postgresql_adapter.rb:242:in `initialize'
         | 
| 10 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/postgresql_adapter.rb:44:in `new'
         | 
| 11 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/postgresql_adapter.rb:44:in `postgresql_connection'
         | 
| 12 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:438:in `new_connection'
         | 
| 13 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:448:in `checkout_new_connection'
         | 
| 14 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `acquire_connection'
         | 
| 15 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:349:in `block in checkout'
         | 
| 16 | 
            -
              /Users/gino/.rvm/rubies/ruby-2.5.7/lib/ruby/2.5.0/monitor.rb:235:in `mon_synchronize'
         | 
| 17 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:348:in `checkout'
         | 
| 18 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:263:in `block in connection'
         | 
| 19 | 
            -
              /Users/gino/.rvm/rubies/ruby-2.5.7/lib/ruby/2.5.0/monitor.rb:235:in `mon_synchronize'
         | 
| 20 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:262:in `connection'
         | 
| 21 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:571:in `retrieve_connection'
         | 
| 22 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_handling.rb:113:in `retrieve_connection'
         | 
| 23 | 
            -
              activerecord (4.2.11.1) lib/active_record/connection_handling.rb:87:in `connection'
         | 
| 24 | 
            -
              activerecord (4.2.11.1) lib/active_record/migration.rb:383:in `connection'
         | 
| 25 | 
            -
              activerecord (4.2.11.1) lib/active_record/migration.rb:370:in `call'
         | 
| 26 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
         | 
| 27 | 
            -
              activesupport (4.2.11.1) lib/active_support/callbacks.rb:88:in `__run_callbacks__'
         | 
| 28 | 
            -
              activesupport (4.2.11.1) lib/active_support/callbacks.rb:778:in `_run_call_callbacks'
         | 
| 29 | 
            -
              activesupport (4.2.11.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
         | 
| 30 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
         | 
| 31 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/reloader.rb:73:in `call'
         | 
| 32 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
         | 
| 33 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
         | 
| 34 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
         | 
| 35 | 
            -
              railties (4.2.11.1) lib/rails/rack/logger.rb:38:in `call_app'
         | 
| 36 | 
            -
              railties (4.2.11.1) lib/rails/rack/logger.rb:20:in `block in call'
         | 
| 37 | 
            -
              activesupport (4.2.11.1) lib/active_support/tagged_logging.rb:68:in `block in tagged'
         | 
| 38 | 
            -
              activesupport (4.2.11.1) lib/active_support/tagged_logging.rb:26:in `tagged'
         | 
| 39 | 
            -
              activesupport (4.2.11.1) lib/active_support/tagged_logging.rb:68:in `tagged'
         | 
| 40 | 
            -
              railties (4.2.11.1) lib/rails/rack/logger.rb:20:in `call'
         | 
| 41 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/request_id.rb:21:in `call'
         | 
| 42 | 
            -
              rack (1.6.13) lib/rack/methodoverride.rb:22:in `call'
         | 
| 43 | 
            -
              rack (1.6.13) lib/rack/runtime.rb:18:in `call'
         | 
| 44 | 
            -
              activesupport (4.2.11.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
         | 
| 45 | 
            -
              rack (1.6.13) lib/rack/lock.rb:17:in `call'
         | 
| 46 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/static.rb:120:in `call'
         | 
| 47 | 
            -
              rack (1.6.13) lib/rack/sendfile.rb:113:in `call'
         | 
| 48 | 
            -
              railties (4.2.11.1) lib/rails/engine.rb:518:in `call'
         | 
| 49 | 
            -
              railties (4.2.11.1) lib/rails/application.rb:165:in `call'
         | 
| 50 | 
            -
              rack (1.6.13) lib/rack/lock.rb:17:in `call'
         | 
| 51 | 
            -
              rack (1.6.13) lib/rack/content_length.rb:15:in `call'
         | 
| 52 | 
            -
              rack (1.6.13) lib/rack/handler/webrick.rb:88:in `service'
         | 
| 53 | 
            -
              /Users/gino/.rvm/rubies/ruby-2.5.7/lib/ruby/2.5.0/webrick/httpserver.rb:140:in `service'
         | 
| 54 | 
            -
              /Users/gino/.rvm/rubies/ruby-2.5.7/lib/ruby/2.5.0/webrick/httpserver.rb:96:in `run'
         | 
| 55 | 
            -
              /Users/gino/.rvm/rubies/ruby-2.5.7/lib/ruby/2.5.0/webrick/server.rb:307:in `block in start_thread'
         | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (5.9ms)
         | 
| 59 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (3.9ms)
         | 
| 60 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (1.4ms)
         | 
| 61 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (182.3ms)
         | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
            Started GET "/" for ::1 at 2020-03-24 17:48:58 -0300
         | 
| 65 | 
            -
            Processing by Rails::WelcomeController#index as HTML
         | 
| 66 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/railties-4.2.11.1/lib/rails/templates/rails/welcome/index.html.erb (2.0ms)
         | 
| 67 | 
            -
            Completed 200 OK in 17ms (Views: 17.1ms | ActiveRecord: 0.0ms)
         | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
            Started GET "/clusters" for ::1 at 2020-03-24 17:51:49 -0300
         | 
| 71 | 
            -
             | 
| 72 | 
            -
            ActionController::RoutingError (No route matches [GET] "/clusters"):
         | 
| 73 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
         | 
| 74 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
         | 
| 75 | 
            -
              railties (4.2.11.1) lib/rails/rack/logger.rb:38:in `call_app'
         | 
| 76 | 
            -
              railties (4.2.11.1) lib/rails/rack/logger.rb:20:in `block in call'
         | 
| 77 | 
            -
              activesupport (4.2.11.1) lib/active_support/tagged_logging.rb:68:in `block in tagged'
         | 
| 78 | 
            -
              activesupport (4.2.11.1) lib/active_support/tagged_logging.rb:26:in `tagged'
         | 
| 79 | 
            -
              activesupport (4.2.11.1) lib/active_support/tagged_logging.rb:68:in `tagged'
         | 
| 80 | 
            -
              railties (4.2.11.1) lib/rails/rack/logger.rb:20:in `call'
         | 
| 81 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/request_id.rb:21:in `call'
         | 
| 82 | 
            -
              rack (1.6.13) lib/rack/methodoverride.rb:22:in `call'
         | 
| 83 | 
            -
              rack (1.6.13) lib/rack/runtime.rb:18:in `call'
         | 
| 84 | 
            -
              activesupport (4.2.11.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
         | 
| 85 | 
            -
              rack (1.6.13) lib/rack/lock.rb:17:in `call'
         | 
| 86 | 
            -
              actionpack (4.2.11.1) lib/action_dispatch/middleware/static.rb:120:in `call'
         | 
| 87 | 
            -
              rack (1.6.13) lib/rack/sendfile.rb:113:in `call'
         | 
| 88 | 
            -
              railties (4.2.11.1) lib/rails/engine.rb:518:in `call'
         | 
| 89 | 
            -
              railties (4.2.11.1) lib/rails/application.rb:165:in `call'
         | 
| 90 | 
            -
              rack (1.6.13) lib/rack/lock.rb:17:in `call'
         | 
| 91 | 
            -
              rack (1.6.13) lib/rack/content_length.rb:15:in `call'
         | 
| 92 | 
            -
              rack (1.6.13) lib/rack/handler/webrick.rb:88:in `service'
         | 
| 93 | 
            -
              /Users/gino/.rvm/rubies/ruby-2.5.7/lib/ruby/2.5.0/webrick/httpserver.rb:140:in `service'
         | 
| 94 | 
            -
              /Users/gino/.rvm/rubies/ruby-2.5.7/lib/ruby/2.5.0/webrick/httpserver.rb:96:in `run'
         | 
| 95 | 
            -
              /Users/gino/.rvm/rubies/ruby-2.5.7/lib/ruby/2.5.0/webrick/server.rb:307:in `block in start_thread'
         | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (4.7ms)
         | 
| 99 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/routes/_route.html.erb (0.9ms)
         | 
| 100 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/routes/_route.html.erb (0.5ms)
         | 
| 101 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/routes/_table.html.erb (11.0ms)
         | 
| 102 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (9.0ms)
         | 
| 103 | 
            -
              Rendered /Users/gino/.rvm/gems/ruby-2.5.7@llegando/gems/actionpack-4.2.11.1/lib/action_dispatch/middleware/templates/rescues/routing_error.html.erb within rescues/layout (210.1ms)
         | 
| 104 | 
            -
              [1m[36mActiveRecord::SchemaMigration Load (1.9ms)[0m  [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
         | 
| 105 | 
            -
            Migrating to AddAuthorIdToBlorghArticles (20200325002402)
         | 
| 106 | 
            -
              [1m[35m (0.3ms)[0m  BEGIN
         | 
| 107 | 
            -
              [1m[36m (1.0ms)[0m  [1mALTER TABLE "blorgh_articles" ADD "super_cluster_id" integer[0m
         | 
| 108 | 
            -
              [1m[35m (0.2ms)[0m  ROLLBACK
         | 
    
        data/test/dummy/log/test.log
    DELETED
    
    | 
            File without changes
         | 
| @@ -1 +0,0 @@ | |
| 1 | 
            -
            86448
         |