LoginSignup
3
1

More than 3 years have passed since last update.

Rails6 のちょい足しな新機能を試す107(Digest::UUID編)

Posted at

はじめに

Rails 6 に追加された新機能を試す第107段。 今回は、 Digest::UUID 編です。
Rails 6 では、 Digest::UUID が require なしで使えるようになりました。

Ruby 2.6.5, Rails 6.0.0, Rails 5.2.3 で確認しました。

$ rails --version
Rails 6.0.0

今回は、簡単なスクリプトを作って確認します。

Rails プロジェクトを作成する

$ rails new rails_sandbox
$ cd rails_sandbox

スクリプトを作成する

Digest::UUID を使ったスクリプトを作成します。

scripts/uuid.rb
puts Digest::UUID.uuid_v3(Digest::UUID::DNS_NAMESPACE, 'rubyonrails.org')
puts Digest::UUID.uuid_v4
puts Digest::UUID.uuid_v5(Digest::UUID::DNS_NAMESPACE, 'rubyonrails.org')

スクリプトを実行する

rails runner でスクリプトを実行します。

$ bin/rails runner scripts/uuid.rb
Running via Spring preloader in process 54
a063dfac-9c20-314f-8597-169d162b1e83
bd997739-d65c-4f56-ac56-81fc08775a79
4d446767-11df-526a-a2da-93799c90dee7

Rails 5 では

Rails 5.2.3 では、 LoadError になります。

$ bin/rails runner scripts/uuid.rb
 ...
 1: from scripts/uuid.rb:1:in `<main>'
 /usr/local/lib/ruby/2.6.0/digest.rb:16:in `const_missing': library not found for class Digest::UUID -- digest/uuid (LoadError)`

明示的に require すれば、 LoadError は解消されます。

scripts/uuid.rb
require 'active_support/core_ext/digest/uuid'
puts Digest::UUID.uuid_v3(Digest::UUID::DNS_NAMESPACE, 'rubyonrails.org')
puts Digest::UUID.uuid_v4
puts Digest::UUID.uuid_v5(Digest::UUID::DNS_NAMESPACE, 'rubyonrails.org')

試したソース

試したソースは以下にあります。
https://github.com/suketa/rails_sandbox/tree/try106_digest_uuid

参考情報

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1