ulid-rails 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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