Hello community,
here is the log from the commit of package rubygem-globalid for
openSUSE:Factory checked in at 2019-01-21 10:53:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-globalid (Old)
and /work/SRC/openSUSE:Factory/.rubygem-globalid.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-globalid"
Mon Jan 21 10:53:17 2019 rev:7 rq:665962 version:0.4.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-globalid/rubygem-globalid.changes
2017-11-01 11:09:39.885715294 +0100
+++
/work/SRC/openSUSE:Factory/.rubygem-globalid.new.28833/rubygem-globalid.changes
2019-01-21 10:53:33.387786420 +0100
@@ -1,0 +2,9 @@
+Mon Jan 14 08:04:04 UTC 2019 - [email protected]
+
+- updated to version 0.4.2
+
+ * Allow configuration in initialisers 3c8f909
+ * Clear to_global_id memoization on dup #109
+ * Adds hash equality #108
+
+-------------------------------------------------------------------
Old:
----
globalid-0.4.1.gem
New:
----
globalid-0.4.2.gem
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rubygem-globalid.spec ++++++
--- /var/tmp/diff_new_pack.3Hh4Lw/_old 2019-01-21 10:53:33.975785710 +0100
+++ /var/tmp/diff_new_pack.3Hh4Lw/_new 2019-01-21 10:53:33.975785710 +0100
@@ -1,7 +1,7 @@
#
# spec file for package rubygem-globalid
#
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -24,7 +24,7 @@
#
Name: rubygem-globalid
-Version: 0.4.1
+Version: 0.4.2
Release: 0
%define mod_name globalid
%define mod_full_name %{mod_name}-%{version}
++++++ globalid-0.4.1.gem -> globalid-0.4.2.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md 2017-10-24 18:00:45.000000000 +0200
+++ new/README.md 2019-01-11 14:58:27.000000000 +0100
@@ -24,17 +24,17 @@
Support is automatically included in Active Record.
```ruby
->> person_gid = Person.find(1).to_global_id
-=> #<GlobalID ...
+person_gid = Person.find(1).to_global_id
+# => #<GlobalID ...
->> person_gid.uri
-=> #<URI ...
+person_gid.uri
+# => #<URI ...
->> person_gid.to_s
-=> "gid://app/Person/1"
+person_gid.to_s
+# => "gid://app/Person/1"
->> GlobalID::Locator.locate person_gid
-=> #<Person:0x007fae94bf6298 @id="1">
+GlobalID::Locator.locate person_gid
+# => #<Person:0x007fae94bf6298 @id="1">
```
### Signed Global IDs
@@ -42,77 +42,95 @@
For added security GlobalIDs can also be signed to ensure that the data hasn't
been tampered with.
```ruby
->> person_sgid = Person.find(1).to_signed_global_id
-=> #<SignedGlobalID:0x007fea1944b410>
+person_sgid = Person.find(1).to_signed_global_id
+# => #<SignedGlobalID:0x007fea1944b410>
->> person_sgid = Person.find(1).to_sgid
-=> #<SignedGlobalID:0x007fea1944b410>
+person_sgid = Person.find(1).to_sgid
+# => #<SignedGlobalID:0x007fea1944b410>
->> person_sgid.to_s
-=>
"BAhJIh5naWQ6Ly9pZGluYWlkaS9Vc2VyLzM5NTk5BjoGRVQ=--81d7358dd5ee2ca33189bb404592df5e8d11420e"
-
->> GlobalID::Locator.locate_signed person_sgid
-=> #<Person:0x007fae94bf6298 @id="1">
+person_sgid.to_s
+# =>
"BAhJIh5naWQ6Ly9pZGluYWlkaS9Vc2VyLzM5NTk5BjoGRVQ=--81d7358dd5ee2ca33189bb404592df5e8d11420e"
+GlobalID::Locator.locate_signed person_sgid
+# => #<Person:0x007fae94bf6298 @id="1">
```
-You can even bump the security up some more by explaining what purpose a
Signed Global ID is for.
-In this way evildoers can't reuse a sign-up form's SGID on the login page. For
example.
-```ruby
->> signup_person_sgid = Person.find(1).to_sgid(for: 'signup_form')
-=> #<SignedGlobalID:0x007fea1984b520
-
->> GlobalID::Locator.locate_signed(signup_person_sgid.to_s, for: 'signup_form')
-=> #<Person:0x007fae94bf6298 @id="1">
-```
+**Expiration**
-You can also have SGIDs that expire some time in the future. Useful if there's
a resource,
+Signed Global IDs can expire some time in the future. This is useful if
there's a resource
people shouldn't have indefinite access to, like a share link.
```ruby
->> expiring_sgid = Document.find(5).to_sgid(expires_in: 2.hours, for:
'sharing')
-=> #<SignedGlobalID:0x008fde45df8937 ...>
+expiring_sgid = Document.find(5).to_sgid(expires_in: 2.hours, for: 'sharing')
+# => #<SignedGlobalID:0x008fde45df8937 ...>
# Within 2 hours...
->> GlobalID::Locator.locate_signed(expiring_sgid.to_s, for: 'sharing')
-=> #<Document:0x007fae94bf6298 @id="5">
+GlobalID::Locator.locate_signed(expiring_sgid.to_s, for: 'sharing')
+# => #<Document:0x007fae94bf6298 @id="5">
# More than 2 hours later...
->> GlobalID::Locator.locate_signed(expiring_sgid.to_s, for: 'sharing')
-=> nil
+GlobalID::Locator.locate_signed(expiring_sgid.to_s, for: 'sharing')
+# => nil
+```
->> explicit_expiring_sgid = SecretAgentMessage.find(5).to_sgid(expires_at:
Time.now.advance(hours: 1))
-=> #<SignedGlobalID:0x008fde45df8937 ...>
+**In Rails, an auto-expiry of 1 month is set by default.** You can alter that
deal
+in an initializer with:
-# 1 hour later...
->> GlobalID::Locator.locate_signed explicit_expiring_sgid.to_s
-=> nil
+```ruby
+# config/initializers/global_id.rb
+Rails.application.config.global_id.expires_in = 3.months
+```
+
+You can assign a default SGID lifetime like so:
+
+```ruby
+SignedGlobalID.expires_in = 1.month
+```
+
+This way any generated SGID will use that relative expiry.
+It's worth noting that _expiring SGIDs are not idempotent_ because they encode
the current timestamp; repeated calls to `to_sgid` will produce different
results. For example, in Rails
+
+```ruby
+Document.find(5).to_sgid.to_s == Document.find(5).to_sgid.to_s
+# => false
+```
+
+You need to explicitly pass `expires_in: nil` to generate a permanent SGID
that will not expire,
+
+```ruby
# Passing a false value to either expiry option turns off expiration entirely.
->> never_expiring_sgid = Document.find(5).to_sgid(expires_in: nil)
-=> #<SignedGlobalID:0x008fde45df8937 ...>
+never_expiring_sgid = Document.find(5).to_sgid(expires_in: nil)
+# => #<SignedGlobalID:0x008fde45df8937 ...>
# Any time later...
->> GlobalID::Locator.locate_signed never_expiring_sgid
-=> #<Document:0x007fae94bf6298 @id="5">
+GlobalID::Locator.locate_signed never_expiring_sgid
+# => #<Document:0x007fae94bf6298 @id="5">
```
-Note that an explicit `:expires_at` takes precedence over a relative
`:expires_in`.
-
-You can assign a default SGID lifetime like so:
+It's also possible to pass a specific expiry time
```ruby
-SignedGlobalID.expires_in = 1.month
+explicit_expiring_sgid = SecretAgentMessage.find(5).to_sgid(expires_at:
Time.now.advance(hours: 1))
+# => #<SignedGlobalID:0x008fde45df8937 ...>
+
+# 1 hour later...
+GlobalID::Locator.locate_signed explicit_expiring_sgid.to_s
+# => nil
```
+Note that an explicit `:expires_at` takes precedence over a relative
`:expires_in`.
-This way any generated SGID will use that relative expiry.
+**Purpose**
-In Rails, an auto-expiry of 1 month is set by default. You can alter that deal
-in an initializer with:
+You can even bump the security up some more by explaining what purpose a
Signed Global ID is for.
+In this way evildoers can't reuse a sign-up form's SGID on the login page. For
example.
```ruby
-# config/initializers/global_id.rb
-Rails.application.config.global_id.expires_in = 3.months
+signup_person_sgid = Person.find(1).to_sgid(for: 'signup_form')
+# => #<SignedGlobalID:0x007fea1984b520
+
+GlobalID::Locator.locate_signed(signup_person_sgid.to_s, for: 'signup_form')
+# => #<Person:0x007fae94bf6298 @id="1">
```
### Custom App Locator
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/global_id/global_id.rb
new/lib/global_id/global_id.rb
--- old/lib/global_id/global_id.rb 2017-10-24 18:00:45.000000000 +0200
+++ new/lib/global_id/global_id.rb 2019-01-11 14:58:27.000000000 +0100
@@ -63,6 +63,11 @@
def ==(other)
other.is_a?(GlobalID) && @uri == other.uri
end
+ alias_method :eql?, :==
+
+ def hash
+ self.class.hash | @uri.hash
+ end
def to_param
# remove the = padding character for a prettier param -- it'll be added
back in parse_encoded_gid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/global_id/identification.rb
new/lib/global_id/identification.rb
--- old/lib/global_id/identification.rb 2017-10-24 18:00:45.000000000 +0200
+++ new/lib/global_id/identification.rb 2019-01-11 14:58:27.000000000 +0100
@@ -5,7 +5,7 @@
extend ActiveSupport::Concern
def to_global_id(options = {})
- @global_id ||= GlobalID.create(self, options)
+ GlobalID.create(self, options)
end
alias to_gid to_global_id
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/lib/global_id/railtie.rb new/lib/global_id/railtie.rb
--- old/lib/global_id/railtie.rb 2017-10-24 18:00:45.000000000 +0200
+++ new/lib/global_id/railtie.rb 2019-01-11 14:58:27.000000000 +0100
@@ -14,14 +14,16 @@
config.eager_load_namespaces << GlobalID
initializer 'global_id' do |app|
+ default_expires_in = 1.month
+ default_app_name = app.railtie_name.remove('_application').dasherize
- app.config.global_id.app ||=
app.railtie_name.remove('_application').dasherize
- GlobalID.app = app.config.global_id.app
-
- app.config.global_id.expires_in ||= 1.month
- SignedGlobalID.expires_in = app.config.global_id.expires_in
+ GlobalID.app = app.config.global_id.app ||= default_app_name
+ SignedGlobalID.expires_in = app.config.global_id.expires_in ||=
default_expires_in
config.after_initialize do
+ GlobalID.app = app.config.global_id.app ||= default_app_name
+ SignedGlobalID.expires_in = app.config.global_id.expires_in ||=
default_expires_in
+
app.config.global_id.verifier ||= begin
GlobalID::Verifier.new(app.key_generator.generate_key('signed_global_ids'))
rescue ArgumentError
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata 2017-10-24 18:00:45.000000000 +0200
+++ new/metadata 2019-01-11 14:58:27.000000000 +0100
@@ -1,14 +1,14 @@
--- !ruby/object:Gem::Specification
name: globalid
version: !ruby/object:Gem::Version
- version: 0.4.1
+ version: 0.4.2
platform: ruby
authors:
- David Heinemeier Hansson
autorequire:
bindir: bin
cert_chain: []
-date: 2017-10-24 00:00:00.000000000 Z
+date: 2019-01-11 00:00:00.000000000 Z
dependencies:
- !ruby/object:Gem::Dependency
name: activesupport
@@ -74,8 +74,7 @@
- !ruby/object:Gem::Version
version: '0'
requirements: []
-rubyforge_project:
-rubygems_version: 2.6.12
+rubygems_version: 3.0.2
signing_key:
specification_version: 4
summary: 'Refer to any model with a URI: gid://app/class/id'