acb 0.1.0 → 0.1.1
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/.rubocop.yml +9 -0
- data/Appraisals +16 -0
- data/README.md +48 -13
- data/gemfiles/rails_6.0_stable.gemfile +11 -0
- data/gemfiles/rails_6.1_stable.gemfile +11 -0
- data/gemfiles/rails_7.0_stable.gemfile +11 -0
- data/lib/acb/version.rb +1 -1
- data/lib/acb.rb +2 -1
- metadata +49 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78012876872f6c6493c9613eb2a64fe4ad023e9a25f1f9afc43077f320e74cff
|
4
|
+
data.tar.gz: e806a9b3d9d2a3c39d9145bd8a44edd8e81e19ecc59d5bd53c041123e6e5ed82
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b692b3210b15b704c75039571cd079459d55e133894a117a8021e3c24a7b6186272540bad6d540f4ebf28a3e59317a84ef3bd193c2e67357ebee07e41eef3b69
|
7
|
+
data.tar.gz: 8e8f579b6776aefeb3cf643b058943356a83091e379c2f926164debff5c576f8fb4abb693ac39f78bad0f952639b33a9bf145eaecc6d9645522bdb2bdb9b69ce
|
data/.rubocop.yml
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
AllCops:
|
2
2
|
TargetRubyVersion: 2.6
|
3
|
+
NewCops: enable
|
4
|
+
SuggestExtensions: false
|
5
|
+
Exclude:
|
6
|
+
- 'gemfiles/*'
|
7
|
+
|
8
|
+
Gemspec/RequireMFA:
|
9
|
+
Enabled: false
|
3
10
|
|
4
11
|
Style/Documentation:
|
5
12
|
Enabled: false
|
@@ -14,3 +21,5 @@ Style/StringLiteralsInInterpolation:
|
|
14
21
|
|
15
22
|
Layout/LineLength:
|
16
23
|
Max: 120
|
24
|
+
Exclude:
|
25
|
+
- 'spec/support/seed.rb'
|
data/Appraisals
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
appraise 'rails-6.0-stable' do
|
4
|
+
gem 'activerecord', '~> 6.0.0'
|
5
|
+
gem 'activesupport', '~> 6.0.0'
|
6
|
+
end
|
7
|
+
|
8
|
+
appraise 'rails-6.1-stable' do
|
9
|
+
gem 'activerecord', '~> 6.1.0'
|
10
|
+
gem 'activesupport', '~> 6.1.0'
|
11
|
+
end
|
12
|
+
|
13
|
+
appraise 'rails-7.0-stable' do
|
14
|
+
gem 'activerecord', '~> 7.0.0'
|
15
|
+
gem 'activesupport', '~> 7.0.0'
|
16
|
+
end
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# Acb
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
Acb is a gem for formatting and outputting csv data from ActiveRecord data
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
@@ -10,24 +8,61 @@ Install the gem and add to the application's Gemfile by executing:
|
|
10
8
|
|
11
9
|
$ bundle add acb
|
12
10
|
|
13
|
-
If bundler is not being used to manage dependencies, install the gem by executing:
|
14
|
-
|
15
|
-
$ gem install acb
|
16
11
|
|
17
12
|
## Usage
|
18
13
|
|
19
|
-
TODO: Write usage instructions here
|
20
14
|
|
21
|
-
|
15
|
+
```ruby
|
16
|
+
ActiveRecord::Schema.define do
|
17
|
+
create_table :users, force: true do |t|
|
18
|
+
t.string :name
|
19
|
+
end
|
20
|
+
|
21
|
+
create_table :posts, force: true do |t|
|
22
|
+
t.integer :user_id
|
23
|
+
t.timestamps
|
24
|
+
end
|
25
|
+
|
26
|
+
create_table :comments, force: true do |t|
|
27
|
+
t.integer :post_id
|
28
|
+
t.string :content
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class User < ActiveRecord::Base
|
33
|
+
has_many :posts
|
34
|
+
end
|
35
|
+
|
36
|
+
class Post < ActiveRecord::Base
|
37
|
+
belongs_to :user
|
38
|
+
has_many :comments
|
39
|
+
end
|
40
|
+
|
41
|
+
class Comment < ActiveRecord::Base
|
42
|
+
belongs_to :post
|
43
|
+
end
|
44
|
+
|
45
|
+
class PostCsvBuilder
|
46
|
+
include Acb
|
22
47
|
|
23
|
-
|
48
|
+
add_column name: 'id'
|
49
|
+
add_column name: 'User Name', index: 'user.name'
|
50
|
+
add_column name: 'created_at', format: '%Y-%m-%d'
|
51
|
+
add_column name: 'Comment Amount', index: 'comments.size'
|
52
|
+
add_column name: 'First Comment', index: ->(post) { post.comments.first&.content }
|
24
53
|
|
25
|
-
|
54
|
+
def initialize(user_id)
|
55
|
+
@data = Post.where(user_id: user_id)
|
56
|
+
end
|
26
57
|
|
27
|
-
|
58
|
+
def relations
|
59
|
+
[:user, :comments]
|
60
|
+
end
|
61
|
+
end
|
28
62
|
|
29
|
-
|
63
|
+
PostCsvBuilder.new(user_id).content_string
|
64
|
+
```
|
30
65
|
|
31
66
|
## Code of Conduct
|
32
67
|
|
33
|
-
Everyone interacting in the Acb project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/
|
68
|
+
Everyone interacting in the Acb project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/kakubin/acb/blob/main/CODE_OF_CONDUCT.md).
|
data/lib/acb/version.rb
CHANGED
data/lib/acb.rb
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
require_relative 'acb/version'
|
4
4
|
require 'active_support'
|
5
5
|
require 'forwardable'
|
6
|
+
require 'csv'
|
6
7
|
|
7
8
|
module Acb
|
8
9
|
extend ActiveSupport::Concern
|
@@ -28,7 +29,7 @@ module Acb
|
|
28
29
|
end
|
29
30
|
|
30
31
|
def get_data(row)
|
31
|
-
@columns.map {
|
32
|
+
@columns.map { |column| column.digest(row) }
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Akito Hikasa
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-12-
|
11
|
+
date: 2022-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,9 +16,51 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 6.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 6.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activerecord
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 6.0.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 6.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: appraisal
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: sqlite3
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
22
64
|
version_requirements: !ruby/object:Gem::Requirement
|
23
65
|
requirements:
|
24
66
|
- - ">="
|
@@ -33,12 +75,16 @@ extra_rdoc_files: []
|
|
33
75
|
files:
|
34
76
|
- ".rspec"
|
35
77
|
- ".rubocop.yml"
|
78
|
+
- Appraisals
|
36
79
|
- CHANGELOG.md
|
37
80
|
- CODE_OF_CONDUCT.md
|
38
81
|
- Gemfile
|
39
82
|
- LICENSE
|
40
83
|
- README.md
|
41
84
|
- Rakefile
|
85
|
+
- gemfiles/rails_6.0_stable.gemfile
|
86
|
+
- gemfiles/rails_6.1_stable.gemfile
|
87
|
+
- gemfiles/rails_7.0_stable.gemfile
|
42
88
|
- lib/acb.rb
|
43
89
|
- lib/acb/version.rb
|
44
90
|
- sig/acb.rbs
|