ulid-rails 1.1.1 → 2.0.0.pre.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/CHANGELOG.md +10 -0
- data/README.md +1 -5
- data/lib/ulid/rails/patch.rb +0 -40
- data/lib/ulid/rails/postgresql_type.rb +39 -0
- data/lib/ulid/rails/sqlite_type.rb +21 -0
- data/lib/ulid/rails/type.rb +49 -43
- data/lib/ulid/rails/version.rb +1 -1
- data/lib/ulid/rails.rb +8 -11
- data/ulid-rails.gemspec +19 -11
- metadata +29 -34
- data/.env +0 -1
- data/.github/workflows/lint.yml +0 -20
- data/.github/workflows/test.yml +0 -36
- data/.gitignore +0 -10
- data/.rubocop.yml +0 -12
- data/.standard.yml +0 -4
- data/Gemfile +0 -2
- data/Rakefile +0 -10
- data/bin/console +0 -14
- data/bin/run_tests +0 -18
- data/bin/setup +0 -8
- data/docker-compose.yml +0 -51
- data/gemfiles/5.0.gemfile +0 -10
- data/gemfiles/5.1.gemfile +0 -10
- data/gemfiles/5.2.gemfile +0 -10
- data/gemfiles/6.0.gemfile +0 -10
- data/gemfiles/6.1.gemfile +0 -10
- data/gemfiles/7.0.5.gemfile +0 -10
- data/gemfiles/7.0.gemfile +0 -10
- data/lib/ulid/rails/formatter.rb +0 -16
- data/lib/ulid/rails/validator.rb +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40792a9dc420058bbd9a61da6808df142a4649ed4f032973e669f989a8680190
|
4
|
+
data.tar.gz: b3de361dda87bddc9c4119e19225bf6738fc73775c5ef51e0edb027de81a6e70
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 762e47b12d8ae6b72c3c7ffe7bba234791c47bd5116ae1ce540ff18a3c7aa3cece358f3579de9f133374af39396c0315d1c1e486281aadd704acf0f6fbca336e
|
7
|
+
data.tar.gz: 86162930acbfb620571fc3aa4451eef4a7407d118f8a64846e6fe32f0ee53e068c36f35503ad0ef6742bb4ecc0e89ae2a66f440603d337b31267002863d68414
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,16 @@
|
|
2
2
|
|
3
3
|
## Unreleased
|
4
4
|
|
5
|
+
## 2.0.0.pre.2
|
6
|
+
|
7
|
+
- Drop support for Rails 5.0 and Rails 5.1.
|
8
|
+
- Fix various issues when calling `#where` with non-String values, or multiple ULID values.
|
9
|
+
- The following modules/classes have been removed:
|
10
|
+
- `ULID::Rails::Formatter`
|
11
|
+
- `ULID::Rails::Validator`
|
12
|
+
- `ULID::Rails::Patch::FinderMethods`
|
13
|
+
- `ULID::Rails::Patch::SchemaStatements`
|
14
|
+
|
5
15
|
## 1.1.1
|
6
16
|
|
7
17
|
- Drop support for ruby 2.6.
|
data/README.md
CHANGED
@@ -162,13 +162,9 @@ $ docker-compose run -e AR_VERSION=6.1 test
|
|
162
162
|
Or run tests locally, without docker-compose
|
163
163
|
|
164
164
|
```
|
165
|
-
$ AR_VERSION=
|
165
|
+
$ AR_VERSION=6.1 bundle update && AR_VERSION=6.1 bundle exec rake test
|
166
166
|
```
|
167
167
|
|
168
|
-
## Known issues
|
169
|
-
|
170
|
-
- ActiveRecord 5.0 and 5.1 do not work properly with some data association loading methods. For example, eager loading with limit/offset on a model that has a ulid ID. Refer to test cases that are skiped for AR 5.0 and 5.1.
|
171
|
-
|
172
168
|
## License
|
173
169
|
|
174
170
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/lib/ulid/rails/patch.rb
CHANGED
@@ -8,46 +8,6 @@ module ULID
|
|
8
8
|
as: "FROM_UNIXTIME(CONV(HEX(#{ulid_column_name} >> 80), 16, 10) / 1000.0)"
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
12
|
-
module FinderMethods
|
13
|
-
def limited_ids_for(relation)
|
14
|
-
id_rows = super
|
15
|
-
if klass.attribute_types[primary_key].is_a? ULID::Rails::Type
|
16
|
-
id_rows.map do |id|
|
17
|
-
klass.attribute_types[primary_key].deserialize id
|
18
|
-
end
|
19
|
-
else
|
20
|
-
id_rows
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
module SchemaStatements
|
26
|
-
def distinct_relation_for_primary_key(relation) # :nodoc:
|
27
|
-
values = columns_for_distinct(
|
28
|
-
visitor.compile(relation.table[relation.primary_key]),
|
29
|
-
relation.order_values
|
30
|
-
)
|
31
|
-
|
32
|
-
limited = relation.reselect(values).distinct!
|
33
|
-
limited_ids = select_rows(limited.arel, "SQL").map(&:last)
|
34
|
-
|
35
|
-
if relation.klass.attribute_types[relation.primary_key].is_a? ULID::Rails::Type
|
36
|
-
limited_ids.map! do |id|
|
37
|
-
relation.klass.attribute_types[relation.primary_key].deserialize id
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
if limited_ids.empty?
|
42
|
-
relation.none!
|
43
|
-
else
|
44
|
-
relation.where!(relation.primary_key => limited_ids)
|
45
|
-
end
|
46
|
-
|
47
|
-
relation.limit_value = relation.offset_value = nil
|
48
|
-
relation
|
49
|
-
end
|
50
|
-
end
|
51
11
|
end
|
52
12
|
end
|
53
13
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require_relative "type"
|
2
|
+
|
3
|
+
module ULID
|
4
|
+
module Rails
|
5
|
+
class PostgresqlType < Type
|
6
|
+
class Data < ULID::Rails::Type::Data
|
7
|
+
def hex
|
8
|
+
hexed = super
|
9
|
+
return nil if hexed.nil?
|
10
|
+
[hexed].pack("H*")
|
11
|
+
end
|
12
|
+
|
13
|
+
alias_method :to_s, :hex
|
14
|
+
end
|
15
|
+
|
16
|
+
# Inspired by active_record/connection_adapters/postgresql/oid/bytea
|
17
|
+
def deserialize(value)
|
18
|
+
case value
|
19
|
+
when nil
|
20
|
+
nil
|
21
|
+
when ULID::Rails::Type::Data
|
22
|
+
super(value.value)
|
23
|
+
else
|
24
|
+
super(PG::Connection.unescape_bytea(value))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def cast_string_to_ulid(value)
|
31
|
+
if value.is_a?(String) && value.length == 34 && value.start_with?("\\x")
|
32
|
+
Data.from_serialized(value[2..])
|
33
|
+
else
|
34
|
+
super(value, data_class: PostgresqlType::Data)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require_relative "type"
|
2
|
+
|
3
|
+
module ULID
|
4
|
+
module Rails
|
5
|
+
class SqliteType < Type
|
6
|
+
class Data < ULID::Rails::Type::Data
|
7
|
+
alias_method :to_s, :hex
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def cast_string_to_ulid(value)
|
13
|
+
if value.is_a?(String) && value.length == 32
|
14
|
+
Data.from_serialized(value)
|
15
|
+
else
|
16
|
+
super(value, data_class: SqliteType::Data)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/ulid/rails/type.rb
CHANGED
@@ -1,68 +1,74 @@
|
|
1
1
|
require "active_model/type"
|
2
|
-
require "
|
3
|
-
require "ulid/rails/validator"
|
2
|
+
require "base32/crockford"
|
4
3
|
require "ulid/rails/errors"
|
5
4
|
|
6
5
|
module ULID
|
7
6
|
module Rails
|
8
7
|
class Type < ActiveModel::Type::Binary
|
9
|
-
|
10
|
-
|
8
|
+
def assert_valid_value(value)
|
9
|
+
raise ArgumentError, "`#{value}` is not a ULID format" unless Data.valid_ulid?(value)
|
11
10
|
end
|
12
11
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
def cast(value)
|
13
|
+
return nil if value.nil?
|
14
|
+
|
15
|
+
str = value.is_a?(Data) ? value.value : value
|
16
|
+
|
17
|
+
cast_string_to_ulid(str).value
|
17
18
|
end
|
18
19
|
|
19
|
-
def
|
20
|
-
|
20
|
+
def serialize(value)
|
21
|
+
return value if value.is_a?(Data)
|
22
|
+
return nil unless value.is_a?(String)
|
23
|
+
|
24
|
+
cast_string_to_ulid(value)
|
21
25
|
end
|
22
26
|
|
23
27
|
def deserialize(value)
|
24
28
|
return nil if value.nil?
|
25
29
|
|
26
|
-
|
27
|
-
when "mysql2"
|
28
|
-
if value.is_a?(Data)
|
29
|
-
value = value.to_s
|
30
|
-
elsif value.is_a?(String)
|
31
|
-
value = value.unpack1("H*")
|
32
|
-
end
|
33
|
-
when "postgresql"
|
34
|
-
if value.is_a?(Data)
|
35
|
-
value = value.to_s
|
36
|
-
value = value.unpack1("H*")
|
37
|
-
end
|
38
|
-
value = value[2..-1] if value.start_with?("\\x")
|
39
|
-
when "sqlite3"
|
40
|
-
if value.is_a?(Data)
|
41
|
-
value = value.to_s
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
value.length == 32 ? @formatter.format(value) : super
|
30
|
+
super
|
46
31
|
end
|
47
32
|
|
48
|
-
|
49
|
-
|
33
|
+
private
|
34
|
+
|
35
|
+
def cast_string_to_ulid(value, data_class: Data)
|
36
|
+
raise ArgumentError if !value.is_a?(String)
|
50
37
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
38
|
+
if data_class.valid_ulid?(value)
|
39
|
+
data_class.new(value)
|
40
|
+
else
|
41
|
+
data = value.unpack1("H*")
|
42
|
+
data_class.from_serialized(data)
|
56
43
|
end
|
57
44
|
end
|
58
45
|
|
59
|
-
|
46
|
+
class Data < ActiveModel::Type::Binary::Data
|
47
|
+
def self.from_serialized(data)
|
48
|
+
deserialized = Base32::Crockford.encode(data.hex).rjust(26, "0")
|
49
|
+
new(deserialized)
|
50
|
+
end
|
60
51
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
52
|
+
def self.valid_ulid?(str)
|
53
|
+
return true if str.nil?
|
54
|
+
|
55
|
+
str.length == 26 && Base32::Crockford.valid?(str)
|
56
|
+
end
|
57
|
+
|
58
|
+
def initialize(value)
|
59
|
+
@value = nil
|
60
|
+
super if self.class.valid_ulid?(value)
|
61
|
+
end
|
62
|
+
|
63
|
+
attr_reader :value
|
64
|
+
|
65
|
+
def hex
|
66
|
+
return nil if @value.nil?
|
67
|
+
|
68
|
+
hexed = Base32::Crockford.decode(@value).to_s(16).rjust(32, "0")
|
69
|
+
raise ArgumentError if hexed.length > 32
|
70
|
+
|
71
|
+
hexed
|
66
72
|
end
|
67
73
|
end
|
68
74
|
end
|
data/lib/ulid/rails/version.rb
CHANGED
data/lib/ulid/rails.rb
CHANGED
@@ -5,6 +5,8 @@ require "ulid"
|
|
5
5
|
require "base32/crockford"
|
6
6
|
require "ulid/rails/version"
|
7
7
|
require "ulid/rails/type"
|
8
|
+
require "ulid/rails/postgresql_type"
|
9
|
+
require "ulid/rails/sqlite_type"
|
8
10
|
require "ulid/rails/patch"
|
9
11
|
|
10
12
|
module ULID
|
@@ -13,7 +15,7 @@ module ULID
|
|
13
15
|
|
14
16
|
class_methods do
|
15
17
|
def ulid(column_name, auto_generate: false)
|
16
|
-
attribute column_name,
|
18
|
+
attribute column_name, :ulid
|
17
19
|
|
18
20
|
if auto_generate
|
19
21
|
before_create do
|
@@ -44,15 +46,10 @@ module ULID
|
|
44
46
|
end
|
45
47
|
end
|
46
48
|
|
47
|
-
|
48
|
-
ActiveRecord::
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
when 6
|
53
|
-
ActiveRecord::FinderMethods.prepend(Patch::FinderMethods)
|
54
|
-
when 7
|
55
|
-
ActiveRecord::ConnectionAdapters::SchemaStatements.prepend(Patch::SchemaStatements)
|
56
|
-
end
|
49
|
+
ActiveRecord::Type.register(:ulid, ULID::Rails::Type, override: false)
|
50
|
+
ActiveRecord::Type.register(:ulid, ULID::Rails::PostgresqlType, adapter: :postgresql)
|
51
|
+
ActiveRecord::Type.register(:ulid, ULID::Rails::SqliteType, adapter: :sqlite)
|
52
|
+
ActiveRecord::Type.register(:ulid, ULID::Rails::SqliteType, adapter: :sqlite3)
|
53
|
+
ActiveRecord::ConnectionAdapters::TableDefinition.include(Patch::Migrations)
|
57
54
|
end
|
58
55
|
end
|
data/ulid-rails.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["Kazunori Kajihiro", "Zendesk"]
|
10
10
|
spec.email = ["kazunori.kajihiro@gmail.com", "ruby-core@zendesk.com"]
|
11
11
|
|
12
|
-
spec.summary = "ULID for
|
13
|
-
spec.description = "ULID for
|
12
|
+
spec.summary = "ULID for Rails"
|
13
|
+
spec.description = "ULID for Rails"
|
14
14
|
spec.homepage = "https://github.com/k2nr/ulid-rails/"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
@@ -22,20 +22,28 @@ Gem::Specification.new do |spec|
|
|
22
22
|
}
|
23
23
|
|
24
24
|
# Specify which files should be added to the gem when it is released.
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
spec.files = %w[
|
26
|
+
CHANGELOG.md
|
27
|
+
LICENSE.txt
|
28
|
+
README.md
|
29
|
+
lib/ulid/rails.rb
|
30
|
+
lib/ulid/rails/errors.rb
|
31
|
+
lib/ulid/rails/patch.rb
|
32
|
+
lib/ulid/rails/postgresql_type.rb
|
33
|
+
lib/ulid/rails/sqlite_type.rb
|
34
|
+
lib/ulid/rails/type.rb
|
35
|
+
lib/ulid/rails/version.rb
|
36
|
+
ulid-rails.gemspec
|
37
|
+
]
|
31
38
|
spec.require_paths = ["lib"]
|
32
39
|
|
33
40
|
spec.add_dependency "ulid", "~> 1.0"
|
34
41
|
spec.add_dependency "base32-crockford", "~> 0.1"
|
35
|
-
spec.add_dependency "activesupport", ">= 5.
|
36
|
-
spec.add_dependency "activemodel", ">= 5.
|
37
|
-
spec.add_dependency "activerecord", ">= 5.
|
42
|
+
spec.add_dependency "activesupport", ">= 5.2"
|
43
|
+
spec.add_dependency "activemodel", ">= 5.2"
|
44
|
+
spec.add_dependency "activerecord", ">= 5.2"
|
38
45
|
spec.add_development_dependency "bundler"
|
46
|
+
spec.add_development_dependency "pry-byebug"
|
39
47
|
spec.add_development_dependency "rake"
|
40
48
|
spec.add_development_dependency "minitest", "~> 5.0"
|
41
49
|
spec.add_development_dependency "rubocop-minitest"
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ulid-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.pre.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazunori Kajihiro
|
8
8
|
- Zendesk
|
9
9
|
autorequire:
|
10
|
-
bindir:
|
10
|
+
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-09-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ulid
|
@@ -45,42 +45,42 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '5.
|
48
|
+
version: '5.2'
|
49
49
|
type: :runtime
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '5.
|
55
|
+
version: '5.2'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: activemodel
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '5.
|
62
|
+
version: '5.2'
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - ">="
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '5.
|
69
|
+
version: '5.2'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: activerecord
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: '5.
|
76
|
+
version: '5.2'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: '5.
|
83
|
+
version: '5.2'
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: bundler
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,6 +95,20 @@ dependencies:
|
|
95
95
|
- - ">="
|
96
96
|
- !ruby/object:Gem::Version
|
97
97
|
version: '0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: pry-byebug
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
98
112
|
- !ruby/object:Gem::Dependency
|
99
113
|
name: rake
|
100
114
|
requirement: !ruby/object:Gem::Requirement
|
@@ -151,7 +165,7 @@ dependencies:
|
|
151
165
|
- - "~>"
|
152
166
|
- !ruby/object:Gem::Version
|
153
167
|
version: 1.16.0
|
154
|
-
description: ULID for
|
168
|
+
description: ULID for Rails
|
155
169
|
email:
|
156
170
|
- kazunori.kajihiro@gmail.com
|
157
171
|
- ruby-core@zendesk.com
|
@@ -159,34 +173,15 @@ executables: []
|
|
159
173
|
extensions: []
|
160
174
|
extra_rdoc_files: []
|
161
175
|
files:
|
162
|
-
- ".env"
|
163
|
-
- ".github/workflows/lint.yml"
|
164
|
-
- ".github/workflows/test.yml"
|
165
|
-
- ".gitignore"
|
166
|
-
- ".rubocop.yml"
|
167
|
-
- ".standard.yml"
|
168
176
|
- CHANGELOG.md
|
169
|
-
- Gemfile
|
170
177
|
- LICENSE.txt
|
171
178
|
- README.md
|
172
|
-
- Rakefile
|
173
|
-
- bin/console
|
174
|
-
- bin/run_tests
|
175
|
-
- bin/setup
|
176
|
-
- docker-compose.yml
|
177
|
-
- gemfiles/5.0.gemfile
|
178
|
-
- gemfiles/5.1.gemfile
|
179
|
-
- gemfiles/5.2.gemfile
|
180
|
-
- gemfiles/6.0.gemfile
|
181
|
-
- gemfiles/6.1.gemfile
|
182
|
-
- gemfiles/7.0.5.gemfile
|
183
|
-
- gemfiles/7.0.gemfile
|
184
179
|
- lib/ulid/rails.rb
|
185
180
|
- lib/ulid/rails/errors.rb
|
186
|
-
- lib/ulid/rails/formatter.rb
|
187
181
|
- lib/ulid/rails/patch.rb
|
182
|
+
- lib/ulid/rails/postgresql_type.rb
|
183
|
+
- lib/ulid/rails/sqlite_type.rb
|
188
184
|
- lib/ulid/rails/type.rb
|
189
|
-
- lib/ulid/rails/validator.rb
|
190
185
|
- lib/ulid/rails/version.rb
|
191
186
|
- ulid-rails.gemspec
|
192
187
|
homepage: https://github.com/k2nr/ulid-rails/
|
@@ -208,12 +203,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
208
203
|
version: 2.5.0
|
209
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
210
205
|
requirements:
|
211
|
-
- - "
|
206
|
+
- - ">"
|
212
207
|
- !ruby/object:Gem::Version
|
213
|
-
version:
|
208
|
+
version: 1.3.1
|
214
209
|
requirements: []
|
215
210
|
rubygems_version: 3.4.12
|
216
211
|
signing_key:
|
217
212
|
specification_version: 4
|
218
|
-
summary: ULID for
|
213
|
+
summary: ULID for Rails
|
219
214
|
test_files: []
|
data/.github/workflows/lint.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: Linting
|
3
|
-
|
4
|
-
on:
|
5
|
-
pull_request:
|
6
|
-
push:
|
7
|
-
branches:
|
8
|
-
- master
|
9
|
-
workflow_dispatch:
|
10
|
-
|
11
|
-
jobs:
|
12
|
-
standardrb:
|
13
|
-
runs-on: ubuntu-latest
|
14
|
-
steps:
|
15
|
-
- uses: actions/checkout@v3
|
16
|
-
- uses: ruby/setup-ruby@v1
|
17
|
-
with:
|
18
|
-
ruby-version: "3.1"
|
19
|
-
bundler-cache: true
|
20
|
-
- run: bundle exec rubocop
|
data/.github/workflows/test.yml
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: Tests
|
3
|
-
|
4
|
-
on:
|
5
|
-
pull_request:
|
6
|
-
push:
|
7
|
-
branches:
|
8
|
-
- master
|
9
|
-
workflow_dispatch:
|
10
|
-
|
11
|
-
jobs:
|
12
|
-
tests:
|
13
|
-
name: ActiveRecord ${{ matrix.activerecord-version }} / Ruby ${{ matrix.ruby-version }}
|
14
|
-
runs-on: ubuntu-latest
|
15
|
-
strategy:
|
16
|
-
fail-fast: false
|
17
|
-
matrix:
|
18
|
-
activerecord-version: ["5.0", "5.1", "5.2", "6.0", "6.1", "7.0", "7.0.5"]
|
19
|
-
ruby-version: ["2.7", "3.0", "3.1", "3.2"]
|
20
|
-
exclude:
|
21
|
-
- {activerecord-version: "5.0", ruby-version: "3.0"}
|
22
|
-
- {activerecord-version: "5.0", ruby-version: "3.1"}
|
23
|
-
- {activerecord-version: "5.0", ruby-version: "3.2"}
|
24
|
-
- {activerecord-version: "5.1", ruby-version: "3.0"}
|
25
|
-
- {activerecord-version: "5.1", ruby-version: "3.1"}
|
26
|
-
- {activerecord-version: "5.1", ruby-version: "3.2"}
|
27
|
-
- {activerecord-version: "5.2", ruby-version: "3.0"}
|
28
|
-
- {activerecord-version: "5.2", ruby-version: "3.1"}
|
29
|
-
- {activerecord-version: "5.2", ruby-version: "3.2"}
|
30
|
-
- {activerecord-version: "6.0", ruby-version: "3.1"}
|
31
|
-
steps:
|
32
|
-
- uses: actions/checkout@v3
|
33
|
-
- run: docker-compose run test
|
34
|
-
env:
|
35
|
-
RUBY_VERSION: ${{ matrix.ruby-version }}
|
36
|
-
AR_VERSION: ${{ matrix.activerecord-version }}
|
data/.gitignore
DELETED
data/.rubocop.yml
DELETED
data/.standard.yml
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require "bundler/setup"
|
4
|
-
require "ulid/rails"
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require "irb"
|
14
|
-
IRB.start(__FILE__)
|
data/bin/run_tests
DELETED
data/bin/setup
DELETED
data/docker-compose.yml
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
version: '3.6'
|
2
|
-
services:
|
3
|
-
test:
|
4
|
-
image: "ruby:${RUBY_VERSION}"
|
5
|
-
command: sh -c "rm -f Gemfile.lock && bundle install && bin/run_tests"
|
6
|
-
environment:
|
7
|
-
- AR_VERSION=${AR_VERSION}
|
8
|
-
depends_on:
|
9
|
-
pg12:
|
10
|
-
condition: service_healthy
|
11
|
-
mysql56:
|
12
|
-
condition: service_healthy
|
13
|
-
mysql57:
|
14
|
-
condition: service_healthy
|
15
|
-
mysql80:
|
16
|
-
condition: service_healthy
|
17
|
-
working_dir: /app
|
18
|
-
volumes:
|
19
|
-
- bundle:/usr/local/bundle
|
20
|
-
- .:/app
|
21
|
-
|
22
|
-
mysql56:
|
23
|
-
image: mysql:5.6
|
24
|
-
environment:
|
25
|
-
MYSQL_ROOT_PASSWORD: password
|
26
|
-
command: --innodb-large-prefix --innodb-file-format=barracuda
|
27
|
-
healthcheck:
|
28
|
-
test: mysql --password=password -e "show databases;"
|
29
|
-
mysql57:
|
30
|
-
image: mysql:5.7
|
31
|
-
environment:
|
32
|
-
MYSQL_ROOT_PASSWORD: password
|
33
|
-
healthcheck:
|
34
|
-
test: mysql --password=password -e "show databases;"
|
35
|
-
mysql80:
|
36
|
-
image: mysql:8.0
|
37
|
-
command: --default-authentication-plugin=mysql_native_password
|
38
|
-
environment:
|
39
|
-
MYSQL_ROOT_PASSWORD: password
|
40
|
-
healthcheck:
|
41
|
-
test: mysql --password=password -e "show databases;"
|
42
|
-
pg12:
|
43
|
-
image: postgres:12
|
44
|
-
environment:
|
45
|
-
PGDATA: /data
|
46
|
-
POSTGRES_DB: db
|
47
|
-
POSTGRES_HOST_AUTH_METHOD: trust
|
48
|
-
healthcheck:
|
49
|
-
test: echo "\\l" | psql -U postgres
|
50
|
-
volumes:
|
51
|
-
bundle:
|
data/gemfiles/5.0.gemfile
DELETED
data/gemfiles/5.1.gemfile
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
gemspec path: ".."
|
4
|
-
|
5
|
-
gem "activesupport", "~> 5.1.0"
|
6
|
-
gem "activemodel", "~> 5.1.0"
|
7
|
-
gem "activerecord", "~> 5.1.0"
|
8
|
-
gem "sqlite3", "~> 1.3", ">= 1.3.6"
|
9
|
-
gem "mysql2", ">= 0.3.18", "< 0.6.0"
|
10
|
-
gem "pg", ">= 0.18", "< 2.0"
|
data/gemfiles/5.2.gemfile
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
source "https://rubygems.org"
|
2
|
-
|
3
|
-
gemspec path: ".."
|
4
|
-
|
5
|
-
gem "activesupport", "~> 5.2.0"
|
6
|
-
gem "activemodel", "~> 5.2.0"
|
7
|
-
gem "activerecord", "~> 5.2.0"
|
8
|
-
gem "sqlite3", "~> 1.3", ">= 1.3.6"
|
9
|
-
gem "mysql2", ">= 0.4.4", "< 0.6.0"
|
10
|
-
gem "pg", ">= 0.18", "< 2.0"
|
data/gemfiles/6.0.gemfile
DELETED
data/gemfiles/6.1.gemfile
DELETED
data/gemfiles/7.0.5.gemfile
DELETED
data/gemfiles/7.0.gemfile
DELETED
data/lib/ulid/rails/formatter.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require "base32/crockford"
|
2
|
-
|
3
|
-
module ULID
|
4
|
-
module Rails
|
5
|
-
module Formatter
|
6
|
-
def self.format(v)
|
7
|
-
sanitized = v.delete("-").hex
|
8
|
-
Base32::Crockford.encode(sanitized).rjust(26, "0")
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.unformat(v)
|
12
|
-
Base32::Crockford.decode(v).to_s(16).rjust(32, "0")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|