ulid-rails 0.3.0 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c37eb5b4b0722d0858a1c08682e89a8285350ab1d151bc90bbb6aaf1c6cff5d
4
- data.tar.gz: 9bd6b0bff5eb157b998f04b26b7eb75e3b53d90c4820e2dcbc9ede7c8a1246b8
3
+ metadata.gz: ad104e01d6ca64c2430e444ea5d900dcabf387200d177edf90be642bbebe3eaf
4
+ data.tar.gz: 28dc14190454edd67f047908981940d2741fb6cd7da2b416a4631cd0ea651e8d
5
5
  SHA512:
6
- metadata.gz: ab1f5cf9796884e8845a67bf13a3e6b69f2e3d48c2b21c23ff5d0f1836fdbd6da1850dcb9292be74cad38476f4df3f4cd46306d66d2bdc203c7da50c24861ce2
7
- data.tar.gz: f8300abe5bd288884ae1d8a24a12f08e3b6c248c144cc68f564fe567ff7c7fa213ce9a3110a1b5125a9ec9a38220afa139938cb12ce0b779532b613c6390e9a4
6
+ metadata.gz: f7e03ce00d239548a353a0fb5d1601d8af16303a384fd7c20176065a34a4a3345b8fda3bcc1c18d140858edda8e7544638226037bc2d20c74a1341de3ac62d9d
7
+ data.tar.gz: 0c7a894e1124d72608f9e493ce7db594780715c1c0e0a69345970d59b093dcf10bc4bc4b1f21f5db9a48bc4862838cb06851485958b19caa4f8085fb1227eacb
data/.env ADDED
@@ -0,0 +1 @@
1
+ RUBY_VERSION=2.6
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: Linting
3
+ on: [push, pull_request]
4
+ jobs:
5
+ standardrb:
6
+ env:
7
+ AR_VERSION: "5.2"
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v2
11
+ - uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: 3.0
14
+ bundler-cache: true
15
+ - run: bundle exec standardrb
@@ -0,0 +1,21 @@
1
+ ---
2
+ name: Tests
3
+ on: [push, pull_request]
4
+ jobs:
5
+ tests:
6
+ runs-on: ubuntu-latest
7
+ strategy:
8
+ matrix:
9
+ activerecord-version: ["5.0", "5.1", "5.2", "6.0", "6.1"]
10
+ ruby-version: ["2.6", "2.7", "3.0"]
11
+ exclude:
12
+ - activerecord-version: "5.0"
13
+ ruby-version: "3.0"
14
+ - activerecord-version: "5.1"
15
+ ruby-version: "3.0"
16
+ - activerecord-version: "5.2"
17
+ ruby-version: "3.0"
18
+ steps:
19
+ - uses: actions/checkout@v2
20
+ - name: Test ActiveRecord ${{ matrix.activerecord-version }} and Ruby ${{ matrix.ruby-version }}
21
+ run: RUBY_VERSION=${{ matrix.ruby-version }} docker-compose run -e AR_VERSION=${{ matrix.activerecord-version }} test
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  /Gemfile.lock
10
+ /gemfiles/*.gemfile.lock
data/.standard.yml ADDED
@@ -0,0 +1,4 @@
1
+ ruby_version: 2.3
2
+ ignore:
3
+ - 'vendor/**/*'
4
+ - 'gemfiles/vendor/**/*'
data/CHANGELOG.md CHANGED
@@ -1,10 +1,32 @@
1
1
  # ulid-rails CHANGELOG
2
2
 
3
- ## 0.3
3
+ ## 1.0.0
4
+
5
+ - Drop support for Rails 4.2.
6
+
7
+ ### Breaking Changes
8
+
9
+ - `primary_key` option has been removed. You need to specify `auto_generate: true` to automatically fill your primary key columns.
10
+
11
+ ## 0.6.0
12
+
13
+ - Add support for Rails 4.2, 5.0 and 5.1.
14
+
15
+ ## 0.5.0
16
+
17
+ - Ensure ULID order respects timestamp order to millisecond precision.
18
+ - Validation of ULID format when setting value. A wrong format value will trigger a `ULID::Rails::ArgumentError`.
19
+
20
+ ## 0.4.0
21
+
22
+ - Support old ruby versions
23
+ - Fix auto_generate #2
24
+
25
+ ## 0.3.0
4
26
 
5
27
  - Support PostgresQL
6
28
 
7
- ## 0.2
29
+ ## 0.2.0
8
30
 
9
31
  ### Breaking Changes
10
32
 
data/Gemfile CHANGED
@@ -1,9 +1,9 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in ulid-rails.gemspec
6
6
  gemspec
7
7
 
8
- version = ENV['AR_VERSION'] || '6.0'
9
- eval_gemfile File.expand_path("../gemfiles/#{version}.gemfile", __FILE__)
8
+ version = ENV["AR_VERSION"] || "6.0"
9
+ eval_gemfile File.expand_path("../gemfiles/#{version}.gemfile", __FILE__)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ULID::Rails
2
2
 
3
- This gem makes it possible to use [ULID](https://github.com/ulid/spec) for DB primary keys in a Ruby on Rails app.
3
+ This gem makes it possible to use [ULID](https://github.com/ulid/spec) for DB in a Ruby on Rails app.
4
4
 
5
5
 
6
6
  ## Installation
@@ -27,7 +27,7 @@ Specify `id: false` to `create_table` and add `id` column as 16-byte binary type
27
27
  ```ruby
28
28
  def change
29
29
  create_table :users, id: false do |t|
30
- t.binary :id, limit: 16, primary_key: true # MySQL
30
+ t.binary :id, limit: 16, primary_key: true
31
31
  # ...
32
32
  end
33
33
  end
@@ -41,7 +41,7 @@ Just add the below lines to your models.
41
41
  ```ruby
42
42
  class MyModel < ApplicationRecord
43
43
  include ULID::Rails
44
- ulid :id, primary_key: true # The first argument is the ULID column name
44
+ ulid :id, auto_generate: true # The first argument is the ULID column name
45
45
  end
46
46
  ```
47
47
 
@@ -53,7 +53,7 @@ Since ULID includes milli seconds precision timestamp, you don't need to store `
53
53
  ```ruby
54
54
  class MyModel < ApplicationRecord
55
55
  include ULID::Rails
56
- ulid :id, primary_key: true # The first argument is the ULID column name
56
+ ulid :id, auto_generate: true # The first argument is the ULID column name
57
57
 
58
58
  # defines `created_at` method which extract timestamp value from id column.
59
59
  # This way you don't need physical `created_at` column.
@@ -63,7 +63,7 @@ end
63
63
 
64
64
  ### `created_at` virtual column
65
65
 
66
- **MySQL Only (for now)**
66
+ **MySQL 5.7 and higher Only (for now)**
67
67
 
68
68
  You can define a "virtual column" in MySQL DB that acts same as a physical column.
69
69
  Defining the virtual `created_at` is kind of comlicated so this gem provides a helper method for it.
@@ -82,14 +82,13 @@ end
82
82
 
83
83
  ### Auto-generate ULID
84
84
 
85
- If `primary_key` is `true`, ULID is auto-generated before create by default.
86
- You can enable or disable auto-generation with `auto_generate` option.
85
+ If `auto_generate` is `true`, ULID is auto-generated before create by default.
86
+ If not specified, the default is `false`.
87
87
 
88
88
  ```
89
89
  class Model < ApplicationRecord
90
- ulid :id, primary_key: true # primary key. auto-generate enabled
90
+ ulid :id, auto_generate: true # auto-generate enabled
91
91
  ulid :foreign_key # auto-generate disabled
92
- ulid :ulid, auto_generate: true # non primary, auto-generate enabled
93
92
  end
94
93
  ```
95
94
 
@@ -114,6 +113,18 @@ Just run the below command to test with all supported DB engines.
114
113
  $ docker-compose run test
115
114
  ```
116
115
 
116
+ Or run with a specific ActiveRecord version
117
+
118
+ ```
119
+ $ docker-compose run -e AR_VERSION=6.1 test
120
+ ```
121
+
122
+ Or run tests locally, without docker-compose
123
+
124
+ ```
125
+ $ AR_VERSION=4.2 bundle update && AR_VERSION=4.2 bundle exec rake test
126
+ ```
127
+
117
128
  ## License
118
129
 
119
130
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile CHANGED
@@ -7,4 +7,4 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList["test/**/*_test.rb"]
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
data/bin/run_tests CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/bin/bash
2
2
 
3
+ set -e
4
+
3
5
  test_with_db() {
4
6
  echo "Testing with $1"
5
7
  DB=$1 bundle exec rake
@@ -7,17 +9,10 @@ test_with_db() {
7
9
 
8
10
  test_with_db "sqlite3"
9
11
 
10
- DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
11
-
12
- # Most features should work with MySQL 5.6 but I couldn't properly set it up in test.
13
- # $DIR/wait-for-it.sh mysql56:3306
14
- # test_with_db "mysql56"
12
+ test_with_db "mysql56"
15
13
 
16
- $DIR/wait-for-it.sh mysql57:3306
17
14
  test_with_db "mysql57"
18
15
 
19
- $DIR/wait-for-it.sh mysql80:3306
20
16
  test_with_db "mysql80"
21
17
 
22
- $DIR/wait-for-it.sh pg12:5432
23
- test_with_db "pg12"
18
+ test_with_db "pg12"
data/docker-compose.yml CHANGED
@@ -1,18 +1,22 @@
1
1
  version: '3.6'
2
2
  services:
3
3
  test:
4
- image: ruby:2.6
5
- command: sh -c "rm Gemfile.lock && bundle install && bin/run_tests"
4
+ image: "ruby:${RUBY_VERSION}"
5
+ command: sh -c "rm -f Gemfile.lock && bundle install && bin/run_tests"
6
6
  depends_on:
7
- - mysql56
8
- - mysql57
9
- - mysql80
10
- - pg12
7
+ pg12:
8
+ condition: service_healthy
9
+ mysql56:
10
+ condition: service_healthy
11
+ mysql57:
12
+ condition: service_healthy
13
+ mysql80:
14
+ condition: service_healthy
11
15
  working_dir: /app
12
16
  volumes:
13
17
  - bundle:/usr/local/bundle
14
18
  - .:/app
15
-
19
+
16
20
  mysql56:
17
21
  image: mysql:5.6
18
22
  environment:
@@ -38,7 +42,8 @@ services:
38
42
  environment:
39
43
  PGDATA: /data
40
44
  POSTGRES_DB: db
45
+ POSTGRES_HOST_AUTH_METHOD: trust
41
46
  healthcheck:
42
- test: echo "\\l" | psql -U postgre
47
+ test: echo "\\l" | psql -U postgres
43
48
  volumes:
44
- bundle:
49
+ bundle:
@@ -0,0 +1,6 @@
1
+ gem "activesupport", "~> 5.0"
2
+ gem "activemodel", "~> 5.0"
3
+ gem "activerecord", "~> 5.0"
4
+ gem "sqlite3", "~> 1.3.6"
5
+ gem "mysql2", ">= 0.3.18", "< 0.6.0"
6
+ gem "pg", ">= 0.18", "< 2.0"
@@ -0,0 +1,6 @@
1
+ gem "activesupport", "~> 5.1"
2
+ gem "activemodel", "~> 5.1"
3
+ gem "activerecord", "~> 5.1"
4
+ gem "sqlite3", "~> 1.3", ">= 1.3.6"
5
+ gem "mysql2", ">= 0.3.18", "< 0.6.0"
6
+ gem "pg", ">= 0.18", "< 2.0"
data/gemfiles/5.2.gemfile CHANGED
@@ -1,6 +1,8 @@
1
+ source "https://rubygems.org"
2
+
1
3
  gem "activesupport", "~> 5.2"
2
4
  gem "activemodel", "~> 5.2"
3
5
  gem "activerecord", "~> 5.2"
4
- gem 'sqlite3', '~> 1.3.6'
5
- gem 'mysql2'
6
- gem 'pg'
6
+ gem "sqlite3", "~> 1.3.6"
7
+ gem "mysql2"
8
+ gem "pg"
data/gemfiles/6.0.gemfile CHANGED
@@ -1,6 +1,8 @@
1
+ source "https://rubygems.org"
2
+
1
3
  gem "activesupport", "~> 6.0"
2
4
  gem "activemodel", "~> 6.0"
3
5
  gem "activerecord", "~> 6.0"
4
- gem 'sqlite3', '~> 1.4.1'
5
- gem 'mysql2'
6
- gem 'pg'
6
+ gem "sqlite3", "~> 1.4.1"
7
+ gem "mysql2"
8
+ gem "pg"
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "activesupport", "~> 6.1.0"
4
+ gem "activemodel", "~> 6.1.0"
5
+ gem "activerecord", "~> 6.1.0"
6
+ gem "sqlite3", "~> 1.4.2"
7
+ gem "mysql2"
8
+ gem "pg"
@@ -0,0 +1,5 @@
1
+ module ULID
2
+ module Rails
3
+ class ArgumentError < StandardError; end
4
+ end
5
+ end
@@ -4,7 +4,7 @@ module ULID
4
4
  module Rails
5
5
  module Formatter
6
6
  def self.format(v)
7
- sanitized = v.delete('-').hex
7
+ sanitized = v.delete("-").hex
8
8
  Base32::Crockford.encode(sanitized).rjust(26, "0")
9
9
  end
10
10
 
@@ -4,8 +4,8 @@ module ULID
4
4
  module Migrations
5
5
  def virtual_ulid_timestamp(timestamp_column_name, ulid_column_name)
6
6
  virtual timestamp_column_name,
7
- type: :datetime,
8
- as: "FROM_UNIXTIME(CONV(HEX(#{ulid_column_name} >> 80), 16, 10) / 1000.0)"
7
+ type: :datetime,
8
+ as: "FROM_UNIXTIME(CONV(HEX(#{ulid_column_name} >> 80), 16, 10) / 1000.0)"
9
9
  end
10
10
  end
11
11
  end
@@ -1,5 +1,7 @@
1
1
  require "active_model/type"
2
2
  require "ulid/rails/formatter"
3
+ require "ulid/rails/validator"
4
+ require "ulid/rails/errors"
3
5
 
4
6
  module ULID
5
7
  module Rails
@@ -8,17 +10,22 @@ module ULID
8
10
  alias_method :hex, :to_s
9
11
  end
10
12
 
11
- def initialize(formatter = Formatter)
13
+ def initialize(formatter = Formatter, validator = Validator)
12
14
  @formatter = formatter
15
+ @validator = validator
13
16
  super()
14
17
  end
15
18
 
16
- def cast(value)
19
+ def assert_valid_value(value)
20
+ raise ArgumentError, "`#{value}` is not a ULID format" unless @validator.is_valid?(value)
21
+ end
22
+
23
+ def deserialize(value)
17
24
  return nil if value.nil?
18
25
 
19
26
  value = value.to_s if value.is_a?(Data)
20
- value = value.unpack("H*")[0] if value.encoding == Encoding::ASCII_8BIT
21
- value = value[2..] if value.start_with?("\\x")
27
+ value = value.unpack1("H*") if value.encoding == Encoding::ASCII_8BIT
28
+ value = value[2..-1] if value.start_with?("\\x")
22
29
 
23
30
  value.length == 32 ? @formatter.format(value) : super
24
31
  end
@@ -26,13 +33,23 @@ module ULID
26
33
  def serialize(value)
27
34
  return if value.nil?
28
35
 
29
- case ActiveRecord::Base.connection_config[:adapter]
36
+ case adapter
30
37
  when "mysql2", "sqlite3"
31
38
  Data.new(@formatter.unformat(value))
32
39
  when "postgresql"
33
40
  Data.new([@formatter.unformat(value)].pack("H*"))
34
41
  end
35
42
  end
43
+
44
+ private
45
+
46
+ def adapter
47
+ if ::ActiveRecord::Base.respond_to?(:connection_db_config)
48
+ ::ActiveRecord::Base.connection_db_config.configuration_hash[:adapter]
49
+ else
50
+ ::ActiveRecord::Base.connection_config[:adapter]
51
+ end
52
+ end
36
53
  end
37
54
  end
38
55
  end
@@ -0,0 +1,12 @@
1
+ require "base32/crockford"
2
+
3
+ module ULID
4
+ module Rails
5
+ module Validator
6
+ def self.is_valid?(v)
7
+ return true if v.nil?
8
+ v.length == 26 && Base32::Crockford.valid?(v)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,5 +1,5 @@
1
1
  module ULID
2
2
  module Rails
3
- VERSION = "0.3.0"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
data/lib/ulid/rails.rb CHANGED
@@ -12,30 +12,33 @@ module ULID
12
12
  extend ActiveSupport::Concern
13
13
 
14
14
  class_methods do
15
- def ulid(column_name, primary_key: false, auto_generate: nil)
15
+ def ulid(column_name, auto_generate: false)
16
16
  attribute column_name, ULID::Rails::Type.new
17
17
 
18
- auto_generate = auto_generate.nil? ? primary_key : false
19
18
  if auto_generate
20
19
  before_create do
21
20
  send("#{column_name}=", ULID.generate) if send(column_name).nil?
22
21
  end
23
22
  end
23
+ end
24
24
 
25
- def ulid_extract_timestamp(ulid_column, timestamp_column = :created_at)
26
- define_method timestamp_column do
27
- at = super() rescue nil
28
- if !at && (id_val = send(ulid_column))
29
- Time.zone.at((Base32::Crockford.decode(id_val) >> 80) / 1000.0)
30
- else
31
- at
32
- end
25
+ def ulid_extract_timestamp(ulid_column, timestamp_column = :created_at)
26
+ define_method timestamp_column do
27
+ at = begin
28
+ super()
29
+ rescue
30
+ nil
31
+ end
32
+ if !at && (id_val = send(ulid_column))
33
+ Time.zone.at((Base32::Crockford.decode(id_val) >> 80) / 1000.0)
34
+ else
35
+ at
33
36
  end
37
+ end
34
38
 
35
- if timestamp_column.to_s == "created_at"
36
- define_singleton_method(:timestamp_attributes_for_create) do
37
- []
38
- end
39
+ if timestamp_column.to_s == "created_at"
40
+ define_singleton_method(:timestamp_attributes_for_create) do
41
+ []
39
42
  end
40
43
  end
41
44
  end
data/ulid-rails.gemspec CHANGED
@@ -3,22 +3,31 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require "ulid/rails/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "ulid-rails"
7
- spec.version = ULID::Rails::VERSION
8
- spec.authors = ["Kazunori Kajihiro"]
9
- spec.email = ["kazunori.kajihiro@gmail.com"]
6
+ spec.name = "ulid-rails"
7
+ spec.version = ULID::Rails::VERSION
8
+ spec.required_ruby_version = ">= 2.5.0"
9
+ spec.authors = ["Kazunori Kajihiro", "Zendesk"]
10
+ spec.email = ["kazunori.kajihiro@gmail.com", "ruby-core@zendesk.com"]
10
11
 
11
- spec.summary = %q{ULID for rails}
12
- spec.description = %q{ULID for rails}
13
- spec.license = "MIT"
12
+ spec.summary = "ULID for rails"
13
+ spec.description = "ULID for rails"
14
+ spec.homepage = "https://github.com/k2nr/ulid-rails/"
15
+ spec.license = "MIT"
16
+
17
+ spec.metadata = {
18
+ "changelog_uri" => "https://github.com/k2nr/ulid-rails/blob/master/CHANGELOG.md",
19
+ "source_code_uri" => "https://github.com/k2nr/ulid-rails/",
20
+ "bug_tracker_uri" => "https://github.com/k2nr/ulid-rails/issues",
21
+ "rubygems_mfa_required" => "true"
22
+ }
14
23
 
15
24
  # Specify which files should be added to the gem when it is released.
16
25
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
26
+ spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
18
27
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
28
  end
20
- spec.bindir = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
31
  spec.require_paths = ["lib"]
23
32
 
24
33
  spec.add_dependency "ulid", "~> 1.0"
@@ -26,7 +35,8 @@ Gem::Specification.new do |spec|
26
35
  spec.add_dependency "activesupport", ">= 5.0"
27
36
  spec.add_dependency "activemodel", ">= 5.0"
28
37
  spec.add_dependency "activerecord", ">= 5.0"
29
- spec.add_development_dependency "bundler", "~> 1.16"
30
- spec.add_development_dependency "rake", "~> 10.0"
38
+ spec.add_development_dependency "bundler"
39
+ spec.add_development_dependency "rake"
31
40
  spec.add_development_dependency "minitest", "~> 5.0"
41
+ spec.add_development_dependency "standard", "~> 1.3.0"
32
42
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ulid-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kazunori Kajihiro
8
- autorequire:
8
+ - Zendesk
9
+ autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2019-11-24 00:00:00.000000000 Z
12
+ date: 2021-11-23 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: ulid
@@ -84,30 +85,30 @@ dependencies:
84
85
  name: bundler
85
86
  requirement: !ruby/object:Gem::Requirement
86
87
  requirements:
87
- - - "~>"
88
+ - - ">="
88
89
  - !ruby/object:Gem::Version
89
- version: '1.16'
90
+ version: '0'
90
91
  type: :development
91
92
  prerelease: false
92
93
  version_requirements: !ruby/object:Gem::Requirement
93
94
  requirements:
94
- - - "~>"
95
+ - - ">="
95
96
  - !ruby/object:Gem::Version
96
- version: '1.16'
97
+ version: '0'
97
98
  - !ruby/object:Gem::Dependency
98
99
  name: rake
99
100
  requirement: !ruby/object:Gem::Requirement
100
101
  requirements:
101
- - - "~>"
102
+ - - ">="
102
103
  - !ruby/object:Gem::Version
103
- version: '10.0'
104
+ version: '0'
104
105
  type: :development
105
106
  prerelease: false
106
107
  version_requirements: !ruby/object:Gem::Requirement
107
108
  requirements:
108
- - - "~>"
109
+ - - ">="
109
110
  - !ruby/object:Gem::Version
110
- version: '10.0'
111
+ version: '0'
111
112
  - !ruby/object:Gem::Dependency
112
113
  name: minitest
113
114
  requirement: !ruby/object:Gem::Requirement
@@ -122,15 +123,33 @@ dependencies:
122
123
  - - "~>"
123
124
  - !ruby/object:Gem::Version
124
125
  version: '5.0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: standard
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: 1.3.0
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: 1.3.0
125
140
  description: ULID for rails
126
141
  email:
127
142
  - kazunori.kajihiro@gmail.com
143
+ - ruby-core@zendesk.com
128
144
  executables: []
129
145
  extensions: []
130
146
  extra_rdoc_files: []
131
147
  files:
148
+ - ".env"
149
+ - ".github/workflows/lint.yml"
150
+ - ".github/workflows/test.yml"
132
151
  - ".gitignore"
133
- - ".travis.yml"
152
+ - ".standard.yml"
134
153
  - CHANGELOG.md
135
154
  - Gemfile
136
155
  - LICENSE.txt
@@ -139,21 +158,29 @@ files:
139
158
  - bin/console
140
159
  - bin/run_tests
141
160
  - bin/setup
142
- - bin/wait-for-it.sh
143
161
  - docker-compose.yml
162
+ - gemfiles/5.0.gemfile
163
+ - gemfiles/5.1.gemfile
144
164
  - gemfiles/5.2.gemfile
145
165
  - gemfiles/6.0.gemfile
166
+ - gemfiles/6.1.gemfile
146
167
  - lib/ulid/rails.rb
168
+ - lib/ulid/rails/errors.rb
147
169
  - lib/ulid/rails/formatter.rb
148
170
  - lib/ulid/rails/patch.rb
149
171
  - lib/ulid/rails/type.rb
172
+ - lib/ulid/rails/validator.rb
150
173
  - lib/ulid/rails/version.rb
151
174
  - ulid-rails.gemspec
152
- homepage:
175
+ homepage: https://github.com/k2nr/ulid-rails/
153
176
  licenses:
154
177
  - MIT
155
- metadata: {}
156
- post_install_message:
178
+ metadata:
179
+ changelog_uri: https://github.com/k2nr/ulid-rails/blob/master/CHANGELOG.md
180
+ source_code_uri: https://github.com/k2nr/ulid-rails/
181
+ bug_tracker_uri: https://github.com/k2nr/ulid-rails/issues
182
+ rubygems_mfa_required: 'true'
183
+ post_install_message:
157
184
  rdoc_options: []
158
185
  require_paths:
159
186
  - lib
@@ -161,16 +188,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
188
  requirements:
162
189
  - - ">="
163
190
  - !ruby/object:Gem::Version
164
- version: '0'
191
+ version: 2.5.0
165
192
  required_rubygems_version: !ruby/object:Gem::Requirement
166
193
  requirements:
167
194
  - - ">="
168
195
  - !ruby/object:Gem::Version
169
196
  version: '0'
170
197
  requirements: []
171
- rubyforge_project:
172
- rubygems_version: 2.7.6
173
- signing_key:
198
+ rubygems_version: 3.2.29
199
+ signing_key:
174
200
  specification_version: 4
175
201
  summary: ULID for rails
176
202
  test_files: []
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.5.1
7
- before_install: gem install bundler -v 1.16.4
data/bin/wait-for-it.sh DELETED
@@ -1,178 +0,0 @@
1
- #!/usr/bin/env bash
2
- # Use this script to test if a given TCP host/port are available
3
-
4
- WAITFORIT_cmdname=${0##*/}
5
-
6
- echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
7
-
8
- usage()
9
- {
10
- cat << USAGE >&2
11
- Usage:
12
- $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
13
- -h HOST | --host=HOST Host or IP under test
14
- -p PORT | --port=PORT TCP port under test
15
- Alternatively, you specify the host and port as host:port
16
- -s | --strict Only execute subcommand if the test succeeds
17
- -q | --quiet Don't output any status messages
18
- -t TIMEOUT | --timeout=TIMEOUT
19
- Timeout in seconds, zero for no timeout
20
- -- COMMAND ARGS Execute command with args after the test finishes
21
- USAGE
22
- exit 1
23
- }
24
-
25
- wait_for()
26
- {
27
- if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
28
- echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
29
- else
30
- echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
31
- fi
32
- WAITFORIT_start_ts=$(date +%s)
33
- while :
34
- do
35
- if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
36
- nc -z $WAITFORIT_HOST $WAITFORIT_PORT
37
- WAITFORIT_result=$?
38
- else
39
- (echo > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
40
- WAITFORIT_result=$?
41
- fi
42
- if [[ $WAITFORIT_result -eq 0 ]]; then
43
- WAITFORIT_end_ts=$(date +%s)
44
- echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
45
- break
46
- fi
47
- sleep 1
48
- done
49
- return $WAITFORIT_result
50
- }
51
-
52
- wait_for_wrapper()
53
- {
54
- # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
55
- if [[ $WAITFORIT_QUIET -eq 1 ]]; then
56
- timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
57
- else
58
- timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
59
- fi
60
- WAITFORIT_PID=$!
61
- trap "kill -INT -$WAITFORIT_PID" INT
62
- wait $WAITFORIT_PID
63
- WAITFORIT_RESULT=$?
64
- if [[ $WAITFORIT_RESULT -ne 0 ]]; then
65
- echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
66
- fi
67
- return $WAITFORIT_RESULT
68
- }
69
-
70
- # process arguments
71
- while [[ $# -gt 0 ]]
72
- do
73
- case "$1" in
74
- *:* )
75
- WAITFORIT_hostport=(${1//:/ })
76
- WAITFORIT_HOST=${WAITFORIT_hostport[0]}
77
- WAITFORIT_PORT=${WAITFORIT_hostport[1]}
78
- shift 1
79
- ;;
80
- --child)
81
- WAITFORIT_CHILD=1
82
- shift 1
83
- ;;
84
- -q | --quiet)
85
- WAITFORIT_QUIET=1
86
- shift 1
87
- ;;
88
- -s | --strict)
89
- WAITFORIT_STRICT=1
90
- shift 1
91
- ;;
92
- -h)
93
- WAITFORIT_HOST="$2"
94
- if [[ $WAITFORIT_HOST == "" ]]; then break; fi
95
- shift 2
96
- ;;
97
- --host=*)
98
- WAITFORIT_HOST="${1#*=}"
99
- shift 1
100
- ;;
101
- -p)
102
- WAITFORIT_PORT="$2"
103
- if [[ $WAITFORIT_PORT == "" ]]; then break; fi
104
- shift 2
105
- ;;
106
- --port=*)
107
- WAITFORIT_PORT="${1#*=}"
108
- shift 1
109
- ;;
110
- -t)
111
- WAITFORIT_TIMEOUT="$2"
112
- if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
113
- shift 2
114
- ;;
115
- --timeout=*)
116
- WAITFORIT_TIMEOUT="${1#*=}"
117
- shift 1
118
- ;;
119
- --)
120
- shift
121
- WAITFORIT_CLI=("$@")
122
- break
123
- ;;
124
- --help)
125
- usage
126
- ;;
127
- *)
128
- echoerr "Unknown argument: $1"
129
- usage
130
- ;;
131
- esac
132
- done
133
-
134
- if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
135
- echoerr "Error: you need to provide a host and port to test."
136
- usage
137
- fi
138
-
139
- WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
140
- WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
141
- WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
142
- WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
143
-
144
- # check to see if timeout is from busybox?
145
- WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
146
- WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
147
- if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
148
- WAITFORIT_ISBUSY=1
149
- WAITFORIT_BUSYTIMEFLAG="-t"
150
-
151
- else
152
- WAITFORIT_ISBUSY=0
153
- WAITFORIT_BUSYTIMEFLAG=""
154
- fi
155
-
156
- if [[ $WAITFORIT_CHILD -gt 0 ]]; then
157
- wait_for
158
- WAITFORIT_RESULT=$?
159
- exit $WAITFORIT_RESULT
160
- else
161
- if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
162
- wait_for_wrapper
163
- WAITFORIT_RESULT=$?
164
- else
165
- wait_for
166
- WAITFORIT_RESULT=$?
167
- fi
168
- fi
169
-
170
- if [[ $WAITFORIT_CLI != "" ]]; then
171
- if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
172
- echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
173
- exit $WAITFORIT_RESULT
174
- fi
175
- exec "${WAITFORIT_CLI[@]}"
176
- else
177
- exit $WAITFORIT_RESULT
178
- fi