metka 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cf64e63f73da3ffb7c87e5d3806a13e4c7d09356e63b8d52ffefd27bf7dda8df
4
- data.tar.gz: 98c5808ea5d3426a15b9eb7084b6b07f7c3242ee8f6b96ca53f20cb5f9987208
3
+ metadata.gz: dd6f202972d558afed083a0095530a47e1e2f35028beb4a457c1b13741614b0d
4
+ data.tar.gz: e11832ae26b49cdb99aa7b6fd5dddb9f559b862b8460c19b492c05467ea04331
5
5
  SHA512:
6
- metadata.gz: 24ac1c6bc72b5a98a879897f7cdddd721df052cb84841a0e3adaefff003d9414a0adf1c40cc663a5ed468f5e320a83af09ea76461fb66ce7625cfe7c2f8b376a
7
- data.tar.gz: cf3750a9f2dccedd27afac2f967187e6e5655483fc7bd696b0da9d63308bc79279cb90c141db0e25d333dde79ce54235b674f2495f4fe904fccdeb6591419927
6
+ metadata.gz: ea2f237f88c8a661931db07532243ddd6c7af85741f77422cc6f6fafd3460fbfaacad205064eeecb438a29a25c3aff11157ddf6309ff6bb559d317674bbdc019
7
+ data.tar.gz: b9e9f74757a541c6bf8fb123ba27cf619ebafeb7b92b61ea0a71b0482b5e3a3def87bae4c5292cd159e4bc6beeeb9274811e77e7dd461736d16bb15529ec7673
@@ -0,0 +1,11 @@
1
+ name: CI
2
+ # This workflow is triggered on pushes to the repository.
3
+ on: [push]
4
+
5
+ jobs:
6
+ build:
7
+ name: RSpec
8
+ # This job runs on Linux
9
+ runs-on: ubuntu-latest
10
+ steps:
11
+ - uses: actions/checkout@v1
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /spec/tmp/
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
@@ -1,5 +1,5 @@
1
1
  inherit_gem:
2
- standard: config/base.yml
2
+ jetrockets-standard: config/gems.yml
3
3
 
4
4
  AllCops:
5
5
  Exclude:
@@ -13,12 +13,6 @@ AllCops:
13
13
  DisplayCopNames: true
14
14
  TargetRubyVersion: 2.5
15
15
 
16
- Standard/SemanticBlocks:
17
- Enabled: false
18
-
19
- Style/FrozenStringLiteralComment:
20
- Enabled: true
21
-
22
16
  Style/TrailingCommaInArrayLiteral:
23
17
  EnforcedStyleForMultiline: no_comma
24
18
 
@@ -16,7 +16,9 @@ env:
16
16
  - METKA_DB_USER=postgres
17
17
  - METKA_DB_NAME=metka
18
18
 
19
+ before_install:
20
+ - gem install -v 2.0.2 bundler
21
+
19
22
  before_script:
20
23
  - gem update --system
21
- - bundle exec rake dummy:db:create
22
- - RAILS_ENV=test bundle exec rake dummy:db:create dummy:db:migrate
24
+ - RAILS_ENV=test bundle exec rake dummy:db:create dummy:db:schema:load
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- metka (0.1.0)
4
+ metka (0.1.1)
5
5
  dry-configurable
6
6
  rails (>= 4.2)
7
7
 
@@ -61,13 +61,17 @@ GEM
61
61
  dry-core (0.4.9)
62
62
  concurrent-ruby (~> 1.0)
63
63
  erubi (1.8.0)
64
- faker (2.1.2)
65
- i18n (>= 0.8)
64
+ faker (2.3.0)
65
+ i18n (~> 1.6.0)
66
66
  globalid (0.4.2)
67
67
  activesupport (>= 4.2.0)
68
68
  i18n (1.6.0)
69
69
  concurrent-ruby (~> 1.0)
70
70
  jaro_winkler (1.5.3)
71
+ jetrockets-standard (1.0.1)
72
+ rubocop-rails (~> 2.3.2)
73
+ rubocop-rspec (~> 1.35.0)
74
+ standard (~> 0.1.4)
71
75
  loofah (2.2.3)
72
76
  crass (~> 1.0.2)
73
77
  nokogiri (>= 1.5.9)
@@ -77,11 +81,11 @@ GEM
77
81
  mini_mime (1.0.2)
78
82
  mini_portile2 (2.4.0)
79
83
  minitest (5.11.3)
80
- nio4r (2.4.0)
84
+ nio4r (2.5.1)
81
85
  nokogiri (1.10.4)
82
86
  mini_portile2 (~> 2.4.0)
83
87
  parallel (1.17.0)
84
- parser (2.6.3.0)
88
+ parser (2.6.4.1)
85
89
  ast (~> 2.4.0)
86
90
  pg (1.1.4)
87
91
  rack (2.0.7)
@@ -142,6 +146,11 @@ GEM
142
146
  unicode-display_width (>= 1.4.0, < 1.7)
143
147
  rubocop-performance (1.4.1)
144
148
  rubocop (>= 0.71.0)
149
+ rubocop-rails (2.3.2)
150
+ rack (>= 1.1)
151
+ rubocop (>= 0.72.0)
152
+ rubocop-rspec (1.35.0)
153
+ rubocop (>= 0.60.0)
145
154
  ruby-progressbar (1.10.1)
146
155
  sprockets (3.7.2)
147
156
  concurrent-ruby (~> 1.0)
@@ -150,7 +159,7 @@ GEM
150
159
  actionpack (>= 4.0)
151
160
  activesupport (>= 4.0)
152
161
  sprockets (>= 3.0.0)
153
- standard (0.1.2)
162
+ standard (0.1.4)
154
163
  rubocop (~> 0.72.0)
155
164
  rubocop-performance (~> 1.4.0)
156
165
  thor (0.20.3)
@@ -171,13 +180,13 @@ DEPENDENCIES
171
180
  ammeter
172
181
  bundler
173
182
  faker
183
+ jetrockets-standard (~> 1.0.1)
174
184
  metka!
175
185
  pg
176
186
  rake
177
187
  rspec
178
188
  rspec-rails
179
- standard
180
189
  timecop
181
190
 
182
191
  BUNDLED WITH
183
- 2.0.1
192
+ 2.0.2
data/README.md CHANGED
@@ -76,7 +76,7 @@ Lets take a look at real example. We have a `notes` table with `tags` column.
76
76
  Now lets generate a migration.
77
77
 
78
78
  ```bash
79
- RAILS_ENV=test rails g metka:strategies:view --source-table-name=notes
79
+ rails g metka:strategies:view --source-table-name=notes
80
80
  ```
81
81
 
82
82
  The result would be:
data/Rakefile CHANGED
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "bundler/gem_tasks"
4
- require "rspec/core/rake_task"
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
8
  namespace :dummy do
9
- require_relative "spec/dummy/config/application"
9
+ require_relative 'spec/dummy/config/application'
10
10
  Dummy::Application.load_tasks
11
11
  end
12
12
 
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators'
4
+ require 'rails/generators/active_record'
5
+
6
+ module Metka
7
+ module Generators
8
+ module Strategies
9
+ class MaterializedViewGenerator < ::Rails::Generators::Base # :nodoc:
10
+ include Rails::Generators::Migration
11
+
12
+ desc <<~LONGDESC
13
+ Generates migration to implement view strategy for Metka
14
+
15
+ > $ rails g metka:strategies:materialized_view --source-table-name=NAME_OF_TABLE_WITH_TAGS
16
+ LONGDESC
17
+
18
+ source_root File.expand_path('templates', __dir__)
19
+
20
+ class_option :source_table_name, type: :string, required: true,
21
+ desc: 'Name of the table that has a column with tags'
22
+
23
+ class_option :source_column_name, type: :string, default: 'tags',
24
+ desc: 'Name of the column with stored tags'
25
+
26
+ def generate_migration
27
+ migration_template 'migration.rb.erb', "db/migrate/#{migration_name}.rb"
28
+ end
29
+
30
+ no_tasks do
31
+ def source_table_name
32
+ options[:source_table_name]
33
+ end
34
+
35
+ def source_column_name
36
+ options[:source_column_name]
37
+ end
38
+
39
+ def view_name
40
+ "tagged_#{source_table_name}"
41
+ end
42
+
43
+ def migration_name
44
+ "create_#{view_name}_view"
45
+ end
46
+
47
+ def migration_class_name
48
+ migration_name.classify
49
+ end
50
+ end
51
+
52
+ def self.next_migration_number(dir)
53
+ ::ActiveRecord::Generators::Base.next_migration_number(dir)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ class <%= @migration_class_name %> < ActiveRecord::Migration<%= ActiveRecord::VERSION::MAJOR < 5 ? '' : '[5.0]' %>
4
+ def up
5
+ execute <<-SQL
6
+ CREATE
7
+ OR REPLACE FUNCTION metka_refresh_<%= view_name %>_materialized_view RETURNS TRIGGER LANGUAGE plpgsql AS $$
8
+ BEGIN
9
+ IF TG_OP = 'INSERT' AND NEW.<%= source_column_name %> IS NOT NULL THEN
10
+ REFRESH MATERIALIZED VIEW CONCURRENTLY <%= view_name %>;
11
+ ELSIF TG_OP = 'UPDATE' AND OLD.<%= source_column_name %> IS NOT NULL AND NEW.<%= source_column_name %> IS NOT NULL THEN
12
+ REFRESH MATERIALIZED VIEW CONCURRENTLY <%= view_name %>;
13
+ ELSIF TG_OP = 'DELETE' AND OLD.<%= source_column_name %> IS NOT NULL THEN
14
+ REFRESH MATERIALIZED VIEW CONCURRENTLY <%= view_name %>;
15
+ END IF;
16
+
17
+ RETURN NULL;
18
+ END $$;
19
+
20
+ CREATE OR REPLACE MATERIALZIED VIEW <%= view_name %> AS
21
+
22
+ SELECT UNNEST
23
+ ( <%= source_column_name %> ) AS <%= source_column_name.singularize %>_name,
24
+ COUNT ( * ) AS taggings_count
25
+ FROM
26
+ <%= source_table_name %>
27
+ GROUP BY
28
+ <%= source_column_name.singularize %>_name;
29
+
30
+ CREATE TRIGGER metka_on_<%= source_table_name %>
31
+ BEFORE UPDATE OR INSERT OR DELETE ON <%= source_table_name %> FOR EACH ROW
32
+ EXECUTE PROCEDURE metka_refresh_<%= view_name %>_materialized_view();
33
+ end
34
+
35
+ def down
36
+ execute <<-SQL
37
+ DROP VIEW <%= view_name %>;
38
+ SQL
39
+ end
40
+ end
@@ -11,7 +11,7 @@ class <%= @migration_class_name %> < ActiveRecord::Migration<%= ActiveRecord::VE
11
11
  FROM
12
12
  <%= source_table_name %>
13
13
  GROUP BY
14
- name;
14
+ <%= source_column_name.singularize %>_name;
15
15
  SQL
16
16
  end
17
17
 
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rails/generators"
4
- require "rails/generators/active_record"
3
+ require 'rails/generators'
4
+ require 'rails/generators/active_record'
5
5
 
6
6
  module Metka
7
7
  module Generators
@@ -9,22 +9,22 @@ module Metka
9
9
  class ViewGenerator < ::Rails::Generators::Base # :nodoc:
10
10
  include Rails::Generators::Migration
11
11
 
12
- desc <<-LONGDESC
13
- Generates migration to implement view strategy for Metka
12
+ desc <<~LONGDESC
13
+ Generates migration to implement view strategy for Metka
14
14
 
15
- > $ rails g metka:strategies:view --source-table-name=NAME_OF_TABLE_WITH_TAGS
16
- LONGDESC
15
+ > $ rails g metka:strategies:view --source-table-name=NAME_OF_TABLE_WITH_TAGS
16
+ LONGDESC
17
17
 
18
- source_root File.expand_path("templates", __dir__)
18
+ source_root File.expand_path('templates', __dir__)
19
19
 
20
20
  class_option :source_table_name, type: :string, required: true,
21
- desc: 'Name of the table that has a column with tags'
21
+ desc: 'Name of the table that has a column with tags'
22
22
 
23
23
  class_option :source_column_name, type: :string, default: 'tags',
24
- desc: 'Name of the column with stored tags'
24
+ desc: 'Name of the column with stored tags'
25
25
 
26
26
  def generate_migration
27
- migration_template "migration.rb.erb", "db/migrate/#{migration_name}.rb"
27
+ migration_template 'migration.rb.erb', "db/migrate/#{migration_name}.rb"
28
28
  end
29
29
 
30
30
  no_tasks do
@@ -55,4 +55,4 @@ LONGDESC
55
55
  end
56
56
  end
57
57
  end
58
- end
58
+ end
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metka/version"
3
+ require 'metka/version'
4
4
 
5
- require "active_support/core_ext/module"
6
- require "dry-configurable"
5
+ require 'active_support/core_ext/module'
6
+ require 'dry-configurable'
7
7
 
8
8
  module Metka
9
- require "metka/tag_list"
10
- require "metka/generic_parser"
11
- require "metka/query_builder"
12
- require "metka/model"
9
+ require 'metka/tag_list'
10
+ require 'metka/generic_parser'
11
+ require 'metka/query_builder'
12
+ require 'metka/model'
13
13
 
14
14
  class Error < StandardError; end
15
15
 
16
16
  extend Dry::Configurable
17
17
 
18
18
  setting :parser, Metka::GenericParser
19
- setting :delimiter, ","
19
+ setting :delimiter, ','
20
20
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "singleton"
3
+ require 'singleton'
4
4
 
5
5
  module Metka
6
6
  ##
@@ -16,7 +16,7 @@ module Metka
16
16
  TagList.new.tap do |tag_list|
17
17
  case value
18
18
  when String
19
- tag_list.merge value.split(",").map(&:strip).reject(&:empty?)
19
+ tag_list.merge value.split(',').map(&:strip).reject(&:empty?)
20
20
  when Enumerable
21
21
  tag_list.merge value.reject(&:empty?)
22
22
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "active_support/concern"
3
+ require 'active_support/concern'
4
4
 
5
5
  module Metka
6
6
  # Extends AR model with methods to use tags
@@ -14,7 +14,7 @@ module Metka
14
14
 
15
15
  return none if tag_list.empty?
16
16
 
17
- where(::Metka::QueryBuilder.new.call(self, "tags", tag_list, options))
17
+ where(::Metka::QueryBuilder.new.call(self, 'tags', tag_list, options))
18
18
  end
19
19
  end
20
20
 
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "query_builder/exclude_tags_query"
4
- require_relative "query_builder/any_tags_query"
5
- require_relative "query_builder/all_tags_query"
3
+ require_relative 'query_builder/exclude_tags_query'
4
+ require_relative 'query_builder/any_tags_query'
5
+ require_relative 'query_builder/all_tags_query'
6
6
 
7
7
  module Metka
8
8
  class QueryBuilder
@@ -6,21 +6,21 @@ module Metka
6
6
 
7
7
  def call(model, column_name, tag_list)
8
8
  column_cast = Arel::Nodes::NamedFunction.new(
9
- "CAST",
10
- [model.arel_table[column_name].as("text[]")]
9
+ 'CAST',
10
+ [model.arel_table[column_name].as('text[]')]
11
11
  )
12
12
 
13
13
  value = Arel::Nodes::SqlLiteral.new(
14
14
  # In Rails 5.2 and above Sanitanization moved to public level, but still we have to support 4.2 and 5.0 and 5.1
15
- ActiveRecord::Base.send(:sanitize_sql_for_conditions, ["ARRAY[?]", tag_list.to_a])
15
+ ActiveRecord::Base.send(:sanitize_sql_for_conditions, ['ARRAY[?]', tag_list.to_a])
16
16
  )
17
17
 
18
18
  value_cast = Arel::Nodes::NamedFunction.new(
19
- "CAST",
20
- [value.as("text[]")]
19
+ 'CAST',
20
+ [value.as('text[]')]
21
21
  )
22
22
 
23
- Arel::Nodes::InfixOperation.new("@>", column_cast, value_cast)
23
+ Arel::Nodes::InfixOperation.new('@>', column_cast, value_cast)
24
24
  end
25
25
  end
26
26
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "singleton"
3
+ require 'singleton'
4
4
 
5
5
  module Metka
6
6
  class AnyTagsQuery
@@ -8,21 +8,21 @@ module Metka
8
8
 
9
9
  def call(model, column_name, tag_list)
10
10
  column_cast = Arel::Nodes::NamedFunction.new(
11
- "CAST",
12
- [model.arel_table[column_name].as("text[]")]
11
+ 'CAST',
12
+ [model.arel_table[column_name].as('text[]')]
13
13
  )
14
14
 
15
15
  value = Arel::Nodes::SqlLiteral.new(
16
16
  # In Rails 5.2 and above Sanitanization moved to public level, but still we have to support 4.2 and 5.0 and 5.1
17
- ActiveRecord::Base.send(:sanitize_sql_for_conditions, ["ARRAY[?]", tag_list.to_a])
17
+ ActiveRecord::Base.send(:sanitize_sql_for_conditions, ['ARRAY[?]', tag_list.to_a])
18
18
  )
19
19
 
20
20
  value_cast = Arel::Nodes::NamedFunction.new(
21
- "CAST",
22
- [value.as("text[]")]
21
+ 'CAST',
22
+ [value.as('text[]')]
23
23
  )
24
24
 
25
- Arel::Nodes::InfixOperation.new("&&", column_cast, value_cast)
25
+ Arel::Nodes::InfixOperation.new('&&', column_cast, value_cast)
26
26
  end
27
27
  end
28
28
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "set"
3
+ require 'set'
4
4
 
5
5
  module Metka
6
6
  class TagList < Set
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Metka
4
- VERSION = "0.1.1"
4
+ VERSION = '0.1.2'
5
5
  end
@@ -1,39 +1,39 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('../lib', __FILE__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require "metka/version"
5
+ require 'metka/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = "metka"
8
+ spec.name = 'metka'
9
9
  spec.version = Metka::VERSION
10
- spec.authors = ["Igor Alexandrov"]
11
- spec.email = ["igor.alexandrov@gmail.com"]
10
+ spec.authors = ['Igor Alexandrov']
11
+ spec.email = ['igor.alexandrov@gmail.com']
12
12
 
13
- spec.summary = "Rails tagging system based on PostgreSQL arrays"
14
- spec.description = "Rails tagging system based on PostgreSQL arrays"
15
- spec.homepage = "https://github.com/jetrockets/metka"
16
- spec.license = "MIT"
13
+ spec.summary = 'Rails tagging system based on PostgreSQL arrays'
14
+ spec.description = 'Rails tagging system based on PostgreSQL arrays'
15
+ spec.homepage = 'https://github.com/jetrockets/metka'
16
+ spec.license = 'MIT'
17
17
 
18
18
  # Specify which files should be added to the gem when it is released.
19
19
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
- spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
20
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
21
21
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
22
  end
23
- spec.bindir = "exe"
23
+ spec.bindir = 'exe'
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
- spec.require_paths = ["lib"]
25
+ spec.require_paths = ['lib']
26
26
 
27
- spec.add_dependency "dry-configurable"
28
- spec.add_dependency "rails", ">= 4.2"
27
+ spec.add_dependency 'dry-configurable'
28
+ spec.add_dependency 'rails', '>= 4.2'
29
29
 
30
- spec.add_development_dependency "ammeter"
31
- spec.add_development_dependency "bundler"
32
- spec.add_development_dependency "faker"
33
- spec.add_development_dependency "pg"
34
- spec.add_development_dependency "rake"
35
- spec.add_development_dependency "rspec"
36
- spec.add_development_dependency "rspec-rails"
37
- spec.add_development_dependency "standard"
38
- spec.add_development_dependency "timecop"
30
+ spec.add_development_dependency 'ammeter'
31
+ spec.add_development_dependency 'bundler'
32
+ spec.add_development_dependency 'faker'
33
+ spec.add_development_dependency 'jetrockets-standard', '~> 1.0.1'
34
+ spec.add_development_dependency 'pg'
35
+ spec.add_development_dependency 'rake'
36
+ spec.add_development_dependency 'rspec'
37
+ spec.add_development_dependency 'rspec-rails'
38
+ spec.add_development_dependency 'timecop'
39
39
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metka
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Alexandrov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-08-23 00:00:00.000000000 Z
11
+ date: 2019-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-configurable
@@ -81,21 +81,21 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: pg
84
+ name: jetrockets-standard
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 1.0.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 1.0.1
97
97
  - !ruby/object:Gem::Dependency
98
- name: rake
98
+ name: pg
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rspec
112
+ name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rspec-rails
126
+ name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: standard
140
+ name: rspec-rails
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -171,6 +171,7 @@ executables: []
171
171
  extensions: []
172
172
  extra_rdoc_files: []
173
173
  files:
174
+ - ".github/workflows/continuous-integration-workflow.yml"
174
175
  - ".gitignore"
175
176
  - ".rspec"
176
177
  - ".rubocop.yml"
@@ -183,6 +184,8 @@ files:
183
184
  - Rakefile
184
185
  - bin/console
185
186
  - bin/setup
187
+ - lib/generators/metka/strategies/materialized_view/materialized_view_generator.rb
188
+ - lib/generators/metka/strategies/materialized_view/templates/migration.rb.erb
186
189
  - lib/generators/metka/strategies/view/templates/migration.rb.erb
187
190
  - lib/generators/metka/strategies/view/view_generator.rb
188
191
  - lib/metka.rb
@@ -214,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
217
  - !ruby/object:Gem::Version
215
218
  version: '0'
216
219
  requirements: []
217
- rubygems_version: 3.0.3
220
+ rubygems_version: 3.0.6
218
221
  signing_key:
219
222
  specification_version: 4
220
223
  summary: Rails tagging system based on PostgreSQL arrays