gunwale 0.5.0 → 0.6.0
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/Gemfile +4 -0
- data/README.md +7 -5
- data/Rakefile +2 -3
- data/lib/row_boat/base.rb +6 -6
- data/lib/row_boat/helpers.rb +9 -0
- data/lib/row_boat/version.rb +1 -1
- data/row_boat.gemspec +21 -22
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 52461a6f1dea23bbcf0b8fa37d85ea21832a5bd9e4a24e133e04c1e2c4d8246a
|
4
|
+
data.tar.gz: bd4a920b50c3333e0590413808e67e9dc5a5f214014f26f44b74c905b1244ffb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 758d23294d5c60560bbf9e48e1d20d1bf304ddac4134d473099b257db34538368f6b421a954aa36ed3969475a36c7220fec97d44391e7c56d15ae40b1ba2dc58
|
7
|
+
data.tar.gz: 8b3d23b63453c8c7e6371310d84706d428f82777b1daac7ef36d5165ddcaeecc9e62c8d4ce4f8ce54fd5b9438c3818392a7bb2b2cc2cc2f72bab33619bf46005
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
#
|
1
|
+
# Gunwale
|
2
2
|
|
3
|
-
|
3
|
+
> [!IMPORTANT]
|
4
|
+
> Gunwale is Packfiles' fork of the [row_boat](https://github.com/madeintandem/row_boat) gem, which is no longer maintained by the original author.
|
4
5
|
|
5
|
-
|
6
|
+
|
7
|
+
[](http://badge.fury.io/rb/gunwale)
|
6
8
|
|
7
9
|
A simple gem to help you import CSVs into your ActiveRecord models.
|
8
10
|
|
@@ -23,7 +25,7 @@ It uses [SmarterCSV](https://github.com/tilo/smarter_csv) and [`activerecord-imp
|
|
23
25
|
Add this line to your application's Gemfile:
|
24
26
|
|
25
27
|
```ruby
|
26
|
-
gem "
|
28
|
+
gem "gunwale", require: "row_boat"
|
27
29
|
```
|
28
30
|
|
29
31
|
And then execute:
|
@@ -94,7 +96,7 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
94
96
|
|
95
97
|
## Contributing
|
96
98
|
|
97
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
99
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/packfiles/gunwale. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
98
100
|
|
99
101
|
## License
|
100
102
|
|
data/Rakefile
CHANGED
@@ -2,11 +2,10 @@
|
|
2
2
|
|
3
3
|
require "bundler/gem_tasks"
|
4
4
|
require "rspec/core/rake_task"
|
5
|
-
require "
|
5
|
+
require "standard/rake"
|
6
6
|
require "standalone_migrations"
|
7
7
|
|
8
8
|
RSpec::Core::RakeTask.new(:spec)
|
9
|
-
RuboCop::RakeTask.new
|
10
9
|
StandaloneMigrations::Tasks.load_tasks
|
11
10
|
|
12
|
-
task default: %i[
|
11
|
+
task default: %i[standard spec]
|
data/lib/row_boat/base.rb
CHANGED
@@ -19,8 +19,8 @@ module RowBoat
|
|
19
19
|
# @return [Hash] a hash with +:invalid_records+, +:total_inserts+, +:inserted_ids+, and +:skipped_rows+.
|
20
20
|
#
|
21
21
|
# @see https://github.com/tilo/smarter_csv#documentation SmarterCSV Docs
|
22
|
-
def import(
|
23
|
-
new(
|
22
|
+
def import(*, &)
|
23
|
+
new(*, &).import
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -266,9 +266,9 @@ module RowBoat
|
|
266
266
|
def column_mapping_options
|
267
267
|
case column_mapping
|
268
268
|
when Hash
|
269
|
-
{
|
269
|
+
{key_mapping: column_mapping, remove_unmapped_keys: true}
|
270
270
|
when Array
|
271
|
-
{
|
271
|
+
{user_provided_headers: column_mapping}
|
272
272
|
else
|
273
273
|
raise InvalidColumnMapping, "#column_mapping must be a Hash or an Array: got `#{column_mapping}`"
|
274
274
|
end
|
@@ -282,9 +282,9 @@ module RowBoat
|
|
282
282
|
|
283
283
|
# @api private
|
284
284
|
# @private
|
285
|
-
def parse_rows(&
|
285
|
+
def parse_rows(&)
|
286
286
|
csv_options = ::RowBoat::Helpers.extract_csv_options(merged_options)
|
287
|
-
::SmarterCSV.process(csv_source, csv_options, &
|
287
|
+
::SmarterCSV.process(csv_source, csv_options, &)
|
288
288
|
end
|
289
289
|
|
290
290
|
# @api private
|
data/lib/row_boat/helpers.rb
CHANGED
@@ -4,11 +4,13 @@ module RowBoat
|
|
4
4
|
# @api private
|
5
5
|
module Helpers
|
6
6
|
CSV_OPTION_KEYS = %i[
|
7
|
+
auto_row_sep_chars
|
7
8
|
chunk_size
|
8
9
|
col_sep
|
9
10
|
comment_regexp
|
10
11
|
convert_values_to_numeric
|
11
12
|
downcase_header
|
13
|
+
duplicate_header_suffix
|
12
14
|
file_encoding
|
13
15
|
force_simple_split
|
14
16
|
force_utf8
|
@@ -16,26 +18,33 @@ module RowBoat
|
|
16
18
|
invalid_byte_sequence
|
17
19
|
keep_original_headers
|
18
20
|
key_mapping
|
21
|
+
missing_header_prefix
|
19
22
|
quote_char
|
20
23
|
remove_empty_hashes
|
21
24
|
remove_empty_values
|
22
25
|
remove_unmapped_keys
|
23
26
|
remove_values_matching
|
24
27
|
remove_zero_values
|
28
|
+
required_headers
|
29
|
+
required_keys
|
25
30
|
row_sep
|
31
|
+
silence_missing_keys
|
26
32
|
skip_lines
|
33
|
+
strict
|
27
34
|
strings_as_keys
|
28
35
|
strip_chars_from_headers
|
29
36
|
strip_whitespace
|
30
37
|
user_provided_headers
|
31
38
|
value_converters
|
32
39
|
verbose
|
40
|
+
with_line_numbers
|
33
41
|
].freeze
|
34
42
|
|
35
43
|
IMPORT_OPTION_KEYS = %i[
|
36
44
|
batch_size
|
37
45
|
ignore
|
38
46
|
on_duplicate_key_ignore
|
47
|
+
on_duplicate_key_update
|
39
48
|
recursive
|
40
49
|
synchronize
|
41
50
|
timestamps
|
data/lib/row_boat/version.rb
CHANGED
data/row_boat.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
lib = File.expand_path("../lib", __FILE__)
|
@@ -6,38 +5,38 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
6
5
|
require "row_boat/version"
|
7
6
|
|
8
7
|
Gem::Specification.new do |spec|
|
9
|
-
spec.name
|
10
|
-
spec.version
|
11
|
-
spec.authors
|
12
|
-
spec.email
|
8
|
+
spec.name = "gunwale"
|
9
|
+
spec.version = RowBoat::VERSION
|
10
|
+
spec.authors = ["Charlton Trezevant"]
|
11
|
+
spec.email = ["charlton@packfiles.io"]
|
13
12
|
|
14
|
-
spec.summary
|
15
|
-
spec.description
|
16
|
-
spec.homepage
|
17
|
-
spec.license
|
13
|
+
spec.summary = "Turn the rows of your CSV into rows in your database"
|
14
|
+
spec.description = "Turn the rows of your CSV into rows in your database"
|
15
|
+
spec.homepage = "https://github.com/packfiles/gunwale"
|
16
|
+
spec.license = "MIT"
|
18
17
|
|
19
|
-
spec.files
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
20
19
|
f.match(%r{^(test|spec|features)/})
|
21
20
|
end
|
22
|
-
spec.bindir
|
23
|
-
spec.executables
|
21
|
+
spec.bindir = "exe"
|
22
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
24
23
|
spec.require_paths = ["lib"]
|
25
24
|
|
26
|
-
spec.add_dependency "activerecord",
|
27
|
-
spec.add_dependency
|
28
|
-
spec.add_dependency "smarter_csv",
|
25
|
+
spec.add_dependency "activerecord", "~> 7.1", ">= 7.1.3.2"
|
26
|
+
spec.add_dependency "activerecord-import", "~> 1.6"
|
27
|
+
spec.add_dependency "smarter_csv", "~> 1.13", ">= 1.13.0"
|
29
28
|
|
30
|
-
spec.add_development_dependency "appraisal",
|
29
|
+
spec.add_development_dependency "appraisal", "~> 2.5"
|
31
30
|
spec.add_development_dependency "awesome_print"
|
32
31
|
spec.add_development_dependency "bundler", "~> 2.5.9"
|
33
|
-
spec.add_development_dependency "database_cleaner",
|
32
|
+
spec.add_development_dependency "database_cleaner", "~> 2.0", ">= 2.0.2"
|
34
33
|
spec.add_development_dependency "pg"
|
35
34
|
spec.add_development_dependency "pry"
|
36
35
|
spec.add_development_dependency "pry-doc"
|
37
36
|
spec.add_development_dependency "pry-nav"
|
38
|
-
spec.add_development_dependency "rake",
|
39
|
-
spec.add_development_dependency "rspec",
|
40
|
-
spec.add_development_dependency "rubocop",
|
41
|
-
spec.add_development_dependency "standalone_migrations",
|
42
|
-
spec.add_development_dependency "yard",
|
37
|
+
spec.add_development_dependency "rake", "~> 13.2", ">= 13.2.1"
|
38
|
+
spec.add_development_dependency "rspec", "~> 3.13"
|
39
|
+
spec.add_development_dependency "rubocop", "~> 1.63", ">= 1.63.5"
|
40
|
+
spec.add_development_dependency "standalone_migrations", "~> 7.1", ">= 7.1.3"
|
41
|
+
spec.add_development_dependency "yard", "~> 0.9.36"
|
43
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gunwale
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charlton Trezevant
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -50,20 +50,20 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '1.
|
53
|
+
version: '1.13'
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 1.
|
56
|
+
version: 1.13.0
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: !ruby/object:Gem::Requirement
|
60
60
|
requirements:
|
61
61
|
- - "~>"
|
62
62
|
- !ruby/object:Gem::Version
|
63
|
-
version: '1.
|
63
|
+
version: '1.13'
|
64
64
|
- - ">="
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version: 1.
|
66
|
+
version: 1.13.0
|
67
67
|
- !ruby/object:Gem::Dependency
|
68
68
|
name: appraisal
|
69
69
|
requirement: !ruby/object:Gem::Requirement
|