ulid-rails 0.1.0 → 0.5.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: 83a5f3c3e4d66efd9d2df7948564b0e9603c1740dd2f3d8114f53d9db1da2d6b
4
- data.tar.gz: ce3fa484e01d9886b24e9ad6c2e3ea18c7ddd7f2608888af48ef758abafd756e
3
+ metadata.gz: b4ae7aa650be9d57249be6d2a1a3bf77bf26fdb14493533137d7296f07772410
4
+ data.tar.gz: 521af5d85b5b033b182678cd189ebbbbebf6e4571f2cfe076bcae4fa37800c6d
5
5
  SHA512:
6
- metadata.gz: 6782bc00605c44caec5faeaa1ec5e94f5db637226300a1db95cb852633405bf95ca73099dcd275eb4b59c72fe3a140b40d722aebcccc86a56c0bd5b07f233731
7
- data.tar.gz: aaa614bb9fca638ecad81d0c5f76027ef464f7ba1e9b1e4d1493455d56f23090d03dcaaf2e1cbae27da7b40a7a2bda7f06e8d6e371d7a586e8a78385a10dde8a
6
+ metadata.gz: 7feebaa207e82b83fb213380f14df767216afb69ab8ee91d4ffd68495776d9b8c7f1ee2550f92ac5f7292b5b5c1511dc4a714cfa0671b2a7fe3528a15fb567b8
7
+ data.tar.gz: 886b465219c7fd77f57dad6c2c6c658149cfa22918ab7505863af86382beafbeb1d4616f02e1d13190fb14ab2044a95c8a9ca55bba6cbd87703c870e00c19284
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,17 @@
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.2", "6.0", "6.1"]
10
+ ruby-version: ["2.6", "2.7", "3.0"]
11
+ exclude:
12
+ - activerecord-version: "5.2"
13
+ ruby-version: "3.0"
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ - name: Test ActiveRecord ${{ matrix.activerecord-version }} and Ruby ${{ matrix.ruby-version }}
17
+ run: RUBY_VERSION=${{ matrix.ruby-version }} docker-compose run -e AR_VERSION=${{ matrix.activerecord-version }} test
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /Gemfile.lock
data/.standard.yml ADDED
@@ -0,0 +1 @@
1
+ ruby_version: 2.3
data/CHANGELOG.md ADDED
@@ -0,0 +1,30 @@
1
+ # ulid-rails CHANGELOG
2
+
3
+ ## 0.5
4
+
5
+ - Ensure ULID order respects timestamp order to millisecond precision.
6
+ - Validation of ULID format when setting value. A wrong format value will trigger a `ULID::Rails::ArgumentError`.
7
+
8
+ ## 0.4
9
+
10
+ - Support old ruby versions
11
+ - Fix auto_generate #2
12
+
13
+ ## 0.3
14
+
15
+ - Support PostgresQL
16
+
17
+ ## 0.2
18
+
19
+ ### Breaking Changes
20
+
21
+ - `primary_key` option's default has been changed to `false`. Now you need to specify `primary_key: true` for primary keys: `ulid :id, primary_key: true`
22
+
23
+ ### New Features
24
+
25
+ - Added `auto_generate` option
26
+
27
+ ### Bug Fixes
28
+
29
+ - Auto-generate was on for foreign keys
30
+ - Encoded ULID was not 0-padded #1
data/Gemfile CHANGED
@@ -1,6 +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
+
8
+ version = ENV["AR_VERSION"] || "6.0"
9
+ eval_gemfile File.expand_path("../gemfiles/#{version}.gemfile", __FILE__)
data/README.md CHANGED
@@ -22,58 +22,76 @@ Or install it yourself as:
22
22
 
23
23
  ### Migrations
24
24
 
25
- If you use MySQL, specify `id: false` to `create_table` and add `id` column as 16-byte binary type.
25
+ Specify `id: false` to `create_table` and add `id` column as 16-byte binary type.
26
26
 
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
34
34
  ```
35
35
 
36
- If you use PostgreSQL, just specify `id: :uuid` to `create_table`
36
+
37
+ ### Model Changes
38
+
39
+ Just add the below lines to your models.
37
40
 
38
41
  ```ruby
39
- def change
40
- create_table :users, id: :uuid do |t|
41
- # ...
42
- end
43
- end
42
+ class MyModel < ApplicationRecord
43
+ include ULID::Rails
44
+ ulid :id, primary_key: true # The first argument is the ULID column name
45
+ end
44
46
  ```
45
47
 
48
+ ### Extract timestamp
46
49
 
47
- ### Model Changes
48
-
49
- Just add the below lines to your models.
50
+ Since ULID includes milli seconds precision timestamp, you don't need to store `created_at`.
51
+ `ulid-rails` provides a helper method that defines timestamp method which extract timestamp from ULID column.
50
52
 
51
53
  ```ruby
52
54
  class MyModel < ApplicationRecord
53
55
  include ULID::Rails
54
- ulid :id # The argument is the primary key column name
56
+ ulid :id, primary_key: true # The first argument is the ULID column name
57
+
58
+ # defines `created_at` method which extract timestamp value from id column.
59
+ # This way you don't need physical `created_at` column.
60
+ ulid_extract_timestamp :id, :created_at
55
61
  end
56
62
  ```
57
63
 
58
64
  ### `created_at` virtual column
59
65
 
60
- **MySQL Only (for now)**
61
-
62
- Since ULID includes milli seconds precision timestamp, you don't need to store `created_at`. You can instead create a virtual column that extracts the timestamp from the ULID column.
66
+ **MySQL 5.7 and higher Only (for now)**
63
67
 
68
+ You can define a "virtual column" in MySQL DB that acts same as a physical column.
64
69
  Defining the virtual `created_at` is kind of comlicated so this gem provides a helper method for it.
65
70
 
71
+ A virtual column is useful if you want to add index on the timestamp column or want to execute raw SQL with created_at.
72
+
66
73
  ```ruby
67
- create_table :users, id: false do |t|
68
- t.binary :id, limit: 16, primary_key: true
69
- t.datetime :updated_at
70
- t.virtual_ulid_timestamp :created_at, :id
71
- end
74
+ create_table :users, id: false do |t|
75
+ t.binary :id, limit: 16, primary_key: true
76
+ t.datetime :updated_at
77
+ t.virtual_ulid_timestamp :created_at, :id
78
+ end
72
79
  ```
73
80
 
74
81
  `virtual_ulid_timestamp` takes two arguments, the first one is the name of the column name (typically, `created_at`) and the second one is the ULID column that creation timestamp is extracted from.
75
82
 
76
- ## FAQ
83
+ ### Auto-generate ULID
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.
87
+
88
+ ```
89
+ class Model < ApplicationRecord
90
+ ulid :id, primary_key: true # primary key. auto-generate enabled
91
+ ulid :foreign_key # auto-generate disabled
92
+ ulid :ulid, auto_generate: true # non primary, auto-generate enabled
93
+ end
94
+ ```
77
95
 
78
96
  ### Foreign Keys
79
97
 
@@ -86,6 +104,16 @@ You need to specicfy `type` option
86
104
  end
87
105
  ```
88
106
 
107
+ ## Development
108
+
109
+ ### Run tests
110
+
111
+ Just run the below command to test with all supported DB engines.
112
+
113
+ ```
114
+ $ docker-compose run test
115
+ ```
116
+
89
117
  ## License
90
118
 
91
119
  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 ADDED
@@ -0,0 +1,18 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ test_with_db() {
6
+ echo "Testing with $1"
7
+ DB=$1 bundle exec rake
8
+ }
9
+
10
+ test_with_db "sqlite3"
11
+
12
+ test_with_db "mysql56"
13
+
14
+ test_with_db "mysql57"
15
+
16
+ test_with_db "mysql80"
17
+
18
+ test_with_db "pg12"
@@ -0,0 +1,49 @@
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
+ depends_on:
7
+ pg12:
8
+ condition: service_healthy
9
+ mysql56:
10
+ condition: service_healthy
11
+ mysql57:
12
+ condition: service_healthy
13
+ mysql80:
14
+ condition: service_healthy
15
+ working_dir: /app
16
+ volumes:
17
+ - bundle:/usr/local/bundle
18
+ - .:/app
19
+
20
+ mysql56:
21
+ image: mysql:5.6
22
+ environment:
23
+ MYSQL_ROOT_PASSWORD: password
24
+ command: --innodb-large-prefix --innodb-file-format=barracuda
25
+ healthcheck:
26
+ test: mysql --password=password -e "show databases;"
27
+ mysql57:
28
+ image: mysql:5.7
29
+ environment:
30
+ MYSQL_ROOT_PASSWORD: password
31
+ healthcheck:
32
+ test: mysql --password=password -e "show databases;"
33
+ mysql80:
34
+ image: mysql:8.0
35
+ command: --default-authentication-plugin=mysql_native_password
36
+ environment:
37
+ MYSQL_ROOT_PASSWORD: password
38
+ healthcheck:
39
+ test: mysql --password=password -e "show databases;"
40
+ pg12:
41
+ image: postgres:12
42
+ environment:
43
+ PGDATA: /data
44
+ POSTGRES_DB: db
45
+ POSTGRES_HOST_AUTH_METHOD: trust
46
+ healthcheck:
47
+ test: echo "\\l" | psql -U postgres
48
+ volumes:
49
+ bundle:
@@ -0,0 +1,6 @@
1
+ gem "activesupport", "~> 5.2"
2
+ gem "activemodel", "~> 5.2"
3
+ gem "activerecord", "~> 5.2"
4
+ gem "sqlite3", "~> 1.3.6"
5
+ gem "mysql2"
6
+ gem "pg"
@@ -0,0 +1,6 @@
1
+ gem "activesupport", "~> 6.0"
2
+ gem "activemodel", "~> 6.0"
3
+ gem "activerecord", "~> 6.0"
4
+ gem "sqlite3", "~> 1.4.1"
5
+ gem "mysql2"
6
+ gem "pg"
@@ -0,0 +1,6 @@
1
+ gem "activesupport", "~> 6.1.0"
2
+ gem "activemodel", "~> 6.1.0"
3
+ gem "activerecord", "~> 6.1.0"
4
+ gem "sqlite3", "~> 1.4.2"
5
+ gem "mysql2"
6
+ gem "pg"
@@ -0,0 +1,5 @@
1
+ module ULID
2
+ module Rails
3
+ class ArgumentError < StandardError; end
4
+ end
5
+ end
@@ -4,20 +4,13 @@ module ULID
4
4
  module Rails
5
5
  module Formatter
6
6
  def self.format(v)
7
- if v.length == 32
8
- Base32::Crockford.encode(v.hex)
9
- else
10
- v
11
- end
7
+ sanitized = v.delete("-").hex
8
+ Base32::Crockford.encode(sanitized).rjust(26, "0")
12
9
  end
13
10
 
14
11
  def self.unformat(v)
15
12
  Base32::Crockford.decode(v).to_s(16).rjust(32, "0")
16
13
  end
17
-
18
- def self.regexp
19
- /\A[[:alnum:]]{25}\z/
20
- end
21
14
  end
22
15
  end
23
16
  end
@@ -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,24 +10,45 @@ 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)
17
- if value.is_a?(Data)
18
- @formatter.format(value.to_s)
19
- elsif value&.encoding == Encoding::ASCII_8BIT
20
- @formatter.format(value.unpack("H*")[0])
21
- else
22
- super
23
- end
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)
24
+ return nil if value.nil?
25
+
26
+ value = value.to_s if value.is_a?(Data)
27
+ value = value.unpack1("H*") if value.encoding == Encoding::ASCII_8BIT
28
+ value = value[2..-1] if value.start_with?("\\x")
29
+
30
+ value.length == 32 ? @formatter.format(value) : super
24
31
  end
25
32
 
26
33
  def serialize(value)
27
34
  return if value.nil?
28
- Data.new(@formatter.unformat(value))
35
+
36
+ case adapter
37
+ when "mysql2", "sqlite3"
38
+ Data.new(@formatter.unformat(value))
39
+ when "postgresql"
40
+ Data.new([@formatter.unformat(value)].pack("H*"))
41
+ end
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
29
52
  end
30
53
  end
31
54
  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.1.0"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
data/lib/ulid/rails.rb CHANGED
@@ -12,23 +12,32 @@ module ULID
12
12
  extend ActiveSupport::Concern
13
13
 
14
14
  class_methods do
15
- def ulid(column_name = :id, primary_key: true)
15
+ def ulid(column_name, primary_key: false, auto_generate: nil)
16
16
  attribute column_name, ULID::Rails::Type.new
17
17
 
18
- before_create do
19
- send("#{column_name}=", ULID.generate) if send(column_name).nil?
18
+ auto_generate = primary_key || auto_generate
19
+ if auto_generate
20
+ before_create do
21
+ send("#{column_name}=", ULID.generate) if send(column_name).nil?
22
+ end
20
23
  end
24
+ end
21
25
 
22
- if primary_key
23
- define_method :created_at do
24
- at = super() rescue nil
25
- if !at && (id_val = send(column_name))
26
- Time.zone.at((Base32::Crockford.decode(id_val) >> 80) / 1000.0)
27
- else
28
- at
29
- end
26
+ def ulid_extract_timestamp(ulid_column, timestamp_column = :created_at)
27
+ define_method timestamp_column do
28
+ at = begin
29
+ super()
30
+ rescue
31
+ nil
30
32
  end
33
+ if !at && (id_val = send(ulid_column))
34
+ Time.zone.at((Base32::Crockford.decode(id_val) >> 80) / 1000.0)
35
+ else
36
+ at
37
+ end
38
+ end
31
39
 
40
+ if timestamp_column.to_s == "created_at"
32
41
  define_singleton_method(:timestamp_attributes_for_create) do
33
42
  []
34
43
  end
data/ulid-rails.gemspec CHANGED
@@ -3,22 +3,22 @@ $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.authors = ["Kazunori Kajihiro", "Zendesk"]
9
+ spec.email = ["kazunori.kajihiro@gmail.com", "ruby-core@zendesk.com"]
10
10
 
11
- spec.summary = %q{ULID for rails}
12
- spec.description = %q{ULID for rails}
13
- spec.license = "MIT"
11
+ spec.summary = "ULID for rails"
12
+ spec.description = "ULID for rails"
13
+ spec.license = "MIT"
14
14
 
15
15
  # Specify which files should be added to the gem when it is released.
16
16
  # 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
17
+ spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
18
18
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
19
  end
20
- spec.bindir = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency "ulid", "~> 1.0"
@@ -26,7 +26,8 @@ Gem::Specification.new do |spec|
26
26
  spec.add_dependency "activesupport", ">= 5.0"
27
27
  spec.add_dependency "activemodel", ">= 5.0"
28
28
  spec.add_dependency "activerecord", ">= 5.0"
29
- spec.add_development_dependency "bundler", "~> 1.16"
30
- spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "bundler"
30
+ spec.add_development_dependency "rake"
31
31
  spec.add_development_dependency "minitest", "~> 5.0"
32
+ spec.add_development_dependency "standard", "~> 1.3.0"
32
33
  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.1.0
4
+ version: 0.5.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: 2018-11-22 00:00:00.000000000 Z
12
+ date: 2021-10-25 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,33 +123,58 @@ 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"
153
+ - CHANGELOG.md
134
154
  - Gemfile
135
- - Gemfile.lock
136
155
  - LICENSE.txt
137
156
  - README.md
138
157
  - Rakefile
139
158
  - bin/console
159
+ - bin/run_tests
140
160
  - bin/setup
161
+ - docker-compose.yml
162
+ - gemfiles/5.2.gemfile
163
+ - gemfiles/6.0.gemfile
164
+ - gemfiles/6.1.gemfile
141
165
  - lib/ulid/rails.rb
166
+ - lib/ulid/rails/errors.rb
142
167
  - lib/ulid/rails/formatter.rb
143
168
  - lib/ulid/rails/patch.rb
144
169
  - lib/ulid/rails/type.rb
170
+ - lib/ulid/rails/validator.rb
145
171
  - lib/ulid/rails/version.rb
146
172
  - ulid-rails.gemspec
147
- homepage:
173
+ homepage:
148
174
  licenses:
149
175
  - MIT
150
176
  metadata: {}
151
- post_install_message:
177
+ post_install_message:
152
178
  rdoc_options: []
153
179
  require_paths:
154
180
  - lib
@@ -163,9 +189,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
189
  - !ruby/object:Gem::Version
164
190
  version: '0'
165
191
  requirements: []
166
- rubyforge_project:
167
- rubygems_version: 2.7.6
168
- signing_key:
192
+ rubyforge_project:
193
+ rubygems_version: 2.7.6.3
194
+ signing_key:
169
195
  specification_version: 4
170
196
  summary: ULID for rails
171
197
  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/Gemfile.lock DELETED
@@ -1,49 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- ulid-rails (0.1.0)
5
- activemodel (>= 5.0)
6
- activerecord (>= 5.0)
7
- activesupport (>= 5.0)
8
- base32-crockford (~> 0.1)
9
- ulid (~> 1.0)
10
-
11
- GEM
12
- remote: https://rubygems.org/
13
- specs:
14
- activemodel (5.2.1)
15
- activesupport (= 5.2.1)
16
- activerecord (5.2.1)
17
- activemodel (= 5.2.1)
18
- activesupport (= 5.2.1)
19
- arel (>= 9.0)
20
- activesupport (5.2.1)
21
- concurrent-ruby (~> 1.0, >= 1.0.2)
22
- i18n (>= 0.7, < 2)
23
- minitest (~> 5.1)
24
- tzinfo (~> 1.1)
25
- arel (9.0.0)
26
- base32-crockford (0.1.0)
27
- concurrent-ruby (1.0.5)
28
- i18n (1.1.0)
29
- concurrent-ruby (~> 1.0)
30
- minitest (5.11.3)
31
- rake (10.5.0)
32
- sysrandom (1.0.5)
33
- thread_safe (0.3.6)
34
- tzinfo (1.2.5)
35
- thread_safe (~> 0.1)
36
- ulid (1.0.0)
37
- sysrandom (>= 1.0.0, < 2.0)
38
-
39
- PLATFORMS
40
- ruby
41
-
42
- DEPENDENCIES
43
- bundler (~> 1.16)
44
- minitest (~> 5.0)
45
- rake (~> 10.0)
46
- ulid-rails!
47
-
48
- BUNDLED WITH
49
- 1.16.4