はじめに
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