active_record-pg_generate_series 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 822623f5320e70fc69f92567ca61147dc712256e
4
- data.tar.gz: 3724a26faee2d872b87146ab39bf546cbf7042b1
3
+ metadata.gz: d9174923b9800d2bbe387a990d821623dd588fb2
4
+ data.tar.gz: cf2171a8c525c9cf5bc0034e8572025037b755fc
5
5
  SHA512:
6
- metadata.gz: c185a24725301a526edf31fc59fd2d20f99d874c059b05de4a4af7f6fd454df702f7b33eb222d5fd30fb39f767c90b4e799653dbb445ba7e8d289aefc3030e30
7
- data.tar.gz: a5caacd0085dd2af2b50b435033482ea16e5ad1df1d145a5fe358008d31012f284788b4ff290496080b92d44cce9907d8cde26f590045c6f613dfd51e588cc27
6
+ metadata.gz: ddc6aee50a0941fd1eaadb7e0920df4093743cbe253f451c2cab733f05214989ba9cebaac830e630a473f28fbb51fa935e613848e3a1ab4e786408de21486b8d
7
+ data.tar.gz: e8101995e0f940943e0f5993c46e88cb5e4516c48c8eef26c97322cf40b35da60961cab0026d6b4f579b7412c198e259b384abe1b35d30ca449f445c0a5a37a5
data/.codeclimate.yml ADDED
@@ -0,0 +1,16 @@
1
+ ---
2
+ engines:
3
+ duplication:
4
+ enabled: true
5
+ config:
6
+ languages:
7
+ - ruby
8
+ fixme:
9
+ enabled: true
10
+ rubocop:
11
+ enabled: true
12
+ ratings:
13
+ paths:
14
+ - "**.rb"
15
+ exclude_paths:
16
+ - spec/
data/.rubocop.yml ADDED
@@ -0,0 +1,63 @@
1
+ AllCops:
2
+ DisplayCopNames: true
3
+
4
+ ##################### Linting #############################
5
+
6
+ ##################### Metrics #############################
7
+
8
+ Metrics/AbcSize:
9
+ Max: 20
10
+
11
+ Metrics/BlockLength:
12
+ Exclude:
13
+ - 'spec/**/*'
14
+ - '*.gemspec'
15
+
16
+ Metrics/LineLength:
17
+ Max: 120
18
+
19
+ Metrics/MethodLength:
20
+ Max: 30
21
+
22
+ Metrics/ParameterLists:
23
+ CountKeywordArgs: false
24
+
25
+ ##################### Performance #############################
26
+
27
+ Performance/FlatMap:
28
+ EnabledForFlattenWithoutParams: false
29
+
30
+ Performance/RedundantBlockCall:
31
+ Enabled: false
32
+
33
+ ##################### Rails ##################################
34
+
35
+ Rails/SafeNavigation:
36
+ ConvertTry: true
37
+
38
+ Rails/SaveBang:
39
+ Enabled: true
40
+
41
+ ##################### Security ##################################
42
+
43
+ Security/YAMLLoad:
44
+ Enabled: false
45
+
46
+ ##################### Style #################################
47
+
48
+ Style/AutoResourceCleanup:
49
+ Enabled: true
50
+
51
+ Style/Encoding:
52
+ Enabled: true
53
+ EnforcedStyle: never
54
+
55
+ Style/IfUnlessModifier:
56
+ Enabled: false
57
+
58
+ Style/MultilineMethodCallIndentation:
59
+ Enabled: false
60
+
61
+ ##################### Bundler #################################
62
+ Bundler/OrderedGems:
63
+ Enabled: false
data/.travis.yml CHANGED
@@ -16,9 +16,14 @@ sudo: false
16
16
  services:
17
17
  - postgresql
18
18
 
19
- before_install: gem update bundler --no-document
20
- before_script: 'bundle exec ruby bin/db_setup.rb'
21
- script: 'bundle exec rake spec'
19
+ before_install:
20
+ - 'gem update bundler --no-document'
21
+ before_script:
22
+ - 'bundle exec ruby bin/db_setup.rb'
23
+ script:
24
+ - 'bundle exec rspec'
25
+ after_success:
26
+ - 'bundle exec codeclimate-test-reporter'
22
27
 
23
28
  cache: bundler
24
29
 
data/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Change logs
2
+
3
+ ## v0.1.2
4
+
5
+ * Add rubocop and fix its offenses. (#4)
6
+ * Add codeclimate and fix its errors. (#5, #6)
7
+
8
+ ## v0.1.1
9
+
10
+ * Add frozen string literal comment. (#3)
11
+
12
+ ## v0.1.0
13
+
14
+ * First release.
data/Gemfile CHANGED
@@ -1,4 +1,8 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in active_record-pg_generate_series.gemspec
3
+ group :test do
4
+ gem 'simplecov'
5
+ gem 'codeclimate-test-reporter', '~> 1.0.0'
6
+ end
7
+
4
8
  gemspec
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # ActiveRecord::PgGenerateSeries
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/active_record-pg_generate_series.svg)](https://badge.fury.io/rb/active_record-pg_generate_series)
3
4
  [![Build Status](https://travis-ci.org/ryu39/active_record-pg_generate_series.svg?branch=master)](https://travis-ci.org/ryu39/active_record-pg_generate_series)
5
+ [![Code Climate](https://codeclimate.com/github/ryu39/active_record-pg_generate_series/badges/gpa.svg)](https://codeclimate.com/github/ryu39/active_record-pg_generate_series)
6
+ [![Test Coverage](https://codeclimate.com/github/ryu39/active_record-pg_generate_series/badges/coverage.svg)](https://codeclimate.com/github/ryu39/active_record-pg_generate_series/coverage)
7
+ [![Issue Count](https://codeclimate.com/github/ryu39/active_record-pg_generate_series/badges/issue_count.svg)](https://codeclimate.com/github/ryu39/active_record-pg_generate_series)
4
8
 
5
9
  This gem adds a feature which inserts records using PostgreSQL [GENERATE_SERIES](https://www.postgresql.org/docs/current/static/functions-srf.html) function to ActiveRecord.
6
10
 
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'rubocop/rake_task'
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
6
+ RuboCop::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
@@ -1,4 +1,3 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require 'active_record/pg_generate_series/version'
@@ -9,8 +8,8 @@ Gem::Specification.new do |spec|
9
8
  spec.authors = ['ryu39']
10
9
  spec.email = ['dev.ryu39@gmail.com']
11
10
 
12
- spec.summary = %q{Add a feature which inserts records using PostgreSQL generate_series function to ActiveRecord}
13
- spec.description = <<EOS.gsub("\n", ' ')
11
+ spec.summary = 'Add a feature which inserts records using PostgreSQL generate_series function to ActiveRecord'
12
+ spec.description = <<EOS.tr("\n", ' ')
14
13
  This gem adds a feature which inserts records using PostgreSQL generate_series function to ActiveRecord.
15
14
  Insertion using generate_series function is very fast, so it is useful
16
15
  when you want to insert simple but many and many record, e.g. prepare for performance test.
@@ -30,6 +29,7 @@ EOS
30
29
  spec.add_development_dependency 'bundler', '~> 1.13'
31
30
  spec.add_development_dependency 'rake', '~> 10.0'
32
31
  spec.add_development_dependency 'rspec', '>= 3.5'
32
+ spec.add_development_dependency 'rubocop'
33
33
  spec.add_development_dependency 'pry'
34
34
  spec.add_development_dependency 'pg'
35
35
  spec.add_development_dependency 'activerecord-import'
data/bin/benchmark.rb CHANGED
@@ -10,21 +10,23 @@ require 'benchmark'
10
10
 
11
11
  RECORD_NUM = 10_000
12
12
 
13
+ def build_user(num)
14
+ User.new(name: "name#{num + 1}", age: num + 1, birth_date: Date.today + num + 1)
15
+ end
16
+
13
17
  User.delete_all
14
18
 
15
19
  GC.disable
16
20
  Benchmark.bm(36) do |x|
17
21
  x.report('iteration of ActiveRecord::Base#save') do
18
22
  RECORD_NUM.times do |i|
19
- user = User.new(name: "name#{i + 1}", age: i + 1, birth_date: Date.today + i + 1)
23
+ user = build_user(i)
20
24
  user.save(validate: false)
21
25
  end
22
26
  end
23
27
 
24
28
  x.report('bulk insert(activerecord-import)') do
25
- users = RECORD_NUM.times.map do |i|
26
- User.new(name: "name#{i + 1}", age: i + 1, birth_date: Date.today + i + 1)
27
- end
29
+ users = Array.new(RECORD_NUM) { |i| build_user(i) }
28
30
  User.import(users)
29
31
  end
30
32
 
data/bin/db_setup.rb CHANGED
@@ -4,7 +4,7 @@ require 'yaml'
4
4
  require 'active_record'
5
5
 
6
6
  config_file = File.expand_path('../../database.yml', __FILE__)
7
- config = YAML::load(ERB.new(IO.read(config_file)).result)['db']
7
+ config = YAML.load(ERB.new(IO.read(config_file)).result)['db']
8
8
 
9
9
  ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres'))
10
10
  ActiveRecord::Base.connection.drop_database(config['database'])
data/connect_db.rb CHANGED
@@ -4,6 +4,6 @@ require 'yaml'
4
4
  require 'active_record'
5
5
 
6
6
  config_file = File.expand_path('../database.yml', __FILE__)
7
- config = YAML::load(ERB.new(IO.read(config_file)).result)['db']
7
+ config = YAML.load(ERB.new(IO.read(config_file)).result)['db']
8
8
 
9
9
  ActiveRecord::Base.establish_connection(config)
@@ -2,4 +2,9 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~> 3.2.0', require: 'active_record'
4
4
 
5
+ group :test do
6
+ gem 'simplecov'
7
+ gem 'codeclimate-test-reporter', '~> 1.0.0'
8
+ end
9
+
5
10
  gemspec path: '../'
@@ -1,5 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~> 4.2.0', require: 'active_record'
4
+ group :test do
5
+ gem 'simplecov'
6
+ gem 'codeclimate-test-reporter', '~> 1.0.0'
7
+ end
4
8
 
5
9
  gemspec path: '../'
@@ -1,5 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'activerecord', '~> 5.0.0', require: 'active_record'
4
+ group :test do
5
+ gem 'simplecov'
6
+ gem 'codeclimate-test-reporter', '~> 1.0.0'
7
+ end
4
8
 
5
9
  gemspec path: '../'
@@ -3,6 +3,7 @@ require 'active_record/pg_generate_series/sql_builder'
3
3
 
4
4
  module ActiveRecord
5
5
  module PgGenerateSeries
6
+ # A ActiveRecord::Base extension module to use PostgreSQL GENERATE_SERIES function.
6
7
  module Extension
7
8
  # Execute INSERT SQL using GENERATE_SERIES function
8
9
  #
@@ -3,6 +3,7 @@ require 'forwardable'
3
3
 
4
4
  module ActiveRecord
5
5
  module PgGenerateSeries
6
+ # SQL builder using PostgreSQL GENERATE_SERIES function.
6
7
  class SqlBuilder
7
8
  extend Forwardable
8
9
  def_delegators :@ar_class, :connection, :sanitize, :quoted_table_name
@@ -27,7 +28,7 @@ module ActiveRecord
27
28
  INSERT INTO
28
29
  #{quoted_table_name} (#{@select_items.keys.map { |col| connection.quote_column_name(col) }.join(',')})
29
30
  SELECT
30
- #{@select_items.map { |_, val| "#{val.is_a?(Raw) ? val.str : sanitize(val)}" }.join(",\n ")}
31
+ #{@select_items.values.map { |val| val.is_a?(Raw) ? val.str : sanitize(val) }.join(",\n ")}
31
32
  FROM
32
33
  GENERATE_SERIES(#{@first.to_i}, #{@last.to_i}, #{@step.to_i}) AS #{connection.quote_column_name(@seq_name)}
33
34
  ;
@@ -36,6 +37,7 @@ EOS
36
37
 
37
38
  private
38
39
 
40
+ # no doc
39
41
  class Raw
40
42
  attr_reader :str
41
43
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
  module ActiveRecord
3
3
  module PgGenerateSeries
4
- VERSION = '0.1.1'
4
+ VERSION = '0.1.2'.freeze
5
5
  end
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-pg_generate_series
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
  - ryu39
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-27 00:00:00.000000000 Z
11
+ date: 2017-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '3.5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: pry
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -118,9 +132,12 @@ executables: []
118
132
  extensions: []
119
133
  extra_rdoc_files: []
120
134
  files:
135
+ - ".codeclimate.yml"
121
136
  - ".gitignore"
122
137
  - ".rspec"
138
+ - ".rubocop.yml"
123
139
  - ".travis.yml"
140
+ - CHANGELOG.md
124
141
  - CODE_OF_CONDUCT.md
125
142
  - Gemfile
126
143
  - LICENSE.txt