Update for Ruby 2.7

- Fix passing keywords as trailing hash
- De-hoeify
- Update project links (bitbucket -> sr.ht)
- Update my gem-signing cert
R .gems =>  +0 -5
@@ 1,5 0,0 @@ 
-hoe-deveiate
-loggability
-inflecto
-faker
-simplecov

          
M .hgignore +4 -2
@@ 1,6 1,8 @@ 
+ChangeLog
 coverage/
 doc/
+pkg/
 \.esproj/
+\.lock$
+\.status$
 \.yml$
-ChangeLog
-pkg/

          
M .ruby-version +1 -1
@@ 1,1 1,1 @@ 
-2.6
+2.7

          
R Gemfile =>  +0 -2
@@ 1,2 0,0 @@ 
-source "https://rubygems.org/"
-gemspec

          
M Manifest.txt +0 -1
@@ 1,7 1,6 @@ 
 .document
 .rdoc_options
 .simplecov
-ChangeLog
 History.md
 LICENSE.txt
 Manifest.txt

          
M README.md +10 -8
@@ 1,7 1,10 @@ 
 # fluent_fixtures
 
 home
-: http://bitbucket.org/ged/fluent_fixtures
+: https://hg.sr.ht/~ged/fluent_fixtures
+
+code
+: https://hg.sr.ht/~ged/fluent_fixtures/browse
 
 github
 : https://github.com/ged/fluent_fixtures

          
@@ 20,6 23,7 @@ To see a walkthrough of how you might se
 
 If you're already on your way and just want some API docs, [we got those, too](FluentFixtures.html).
 
+
 ## Prerequisites
 
 * Ruby

          
@@ 33,20 37,18 @@ If you're already on your way and just w
 ## Contributing
 
 You can check out the current development source with Mercurial via its
-[project page][bitbucket]. Or if you prefer Git, via [its Github
-mirror][github].
+[project page][sr.ht]. Or if you prefer Git, via [its Github mirror][github].
 
 After checking out the source, run:
 
-    $ rake newb
+    $ rake setup
 
-This task will install any missing dependencies, run the tests/specs,
-and generate the API documentation.
+This task will install dependencies, and do any other necessary setup for development.
 
 
 ## License
 
-Copyright (c) 2016, Michael Granger
+Copyright (c) 2016-2020, Michael Granger
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without

          
@@ 75,6 77,6 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWI
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 
-[bitbucket]: http://bitbucket.org/ged/fluent_fixtures
+[sr.ht]: https://hg.sr.ht/~ged/fluent_fixtures
 [github]: https://github.com/ged/fluent_fixtures
 

          
M Rakefile +4 -94
@@ 1,97 1,7 @@ 
-#!/usr/bin/env rake
-
-begin
-	require 'hoe'
-rescue LoadError
-	abort "This Rakefile requires hoe (gem install hoe)"
-end
-
-GEMSPEC = 'fluent_fixtures.gemspec'
-
-
-Hoe.plugin :mercurial
-Hoe.plugin :signing
-Hoe.plugin :deveiate
-
-Hoe.plugins.delete :rubyforge
+# -*- ruby -*-
+# frozen_string_literal: true
 
-hoespec = Hoe.spec 'fluent_fixtures' do |spec|
-	spec.readme_file = 'README.md'
-	spec.history_file = 'History.md'
-	spec.extra_rdoc_files = FileList[ '*.rdoc', '*.md' ]
-	spec.license 'BSD-3-Clause'
-	spec.urls = {
-		home:   'http://deveiate.org/projects/fluent_fixtures',
-		code:   'http://bitbucket.org/ged/fluent_fixtures',
-		docs:   'http://deveiate.org/code/fluent_fixtures',
-		github: 'http://github.com/ged/fluent_fixtures',
-	}
-
-	spec.developer 'Michael Granger', 'ged@FaerieMUD.org'
-
-	spec.dependency 'loggability', '~> 0.11'
-	spec.dependency 'inflecto', '~> 0.0'
-
-	spec.dependency 'faker',                   '~> 2.1', :developer
-	spec.dependency 'hoe-deveiate',            '~> 0.3', :developer
-	spec.dependency 'simplecov',               '~> 0.12', :developer
-	spec.dependency 'rdoc-generator-fivefish', '~> 0.1', :developer
-
-	spec.require_ruby_version( '>=2.2.0' )
-	spec.hg_sign_tags = true if spec.respond_to?( :hg_sign_tags= )
-	spec.check_history_on_release = true if spec.respond_to?( :check_history_on_release= )
-
-	self.rdoc_locations << "deveiate:/usr/local/www/public/code/#{remote_rdoc_dir}"
-end
+require 'rake/deveiate'
 
 
-ENV['VERSION'] ||= hoespec.spec.version.to_s
-
-# Run the tests before checking in
-task 'hg:precheckin' => [ :check_history, :check_manifest, :gemspec, :spec ]
-
-task :test => :spec
-
-# Rebuild the ChangeLog immediately before release
-task :prerelease => 'ChangeLog'
-CLOBBER.include( 'ChangeLog' )
-
-desc "Build a coverage report"
-task :coverage do
-	ENV["COVERAGE"] = 'yes'
-	Rake::Task[:spec].invoke
-end
-CLOBBER.include( 'coverage' )
-
-
-# Use the fivefish formatter for docs generated from development checkout
-if File.directory?( '.hg' )
-	require 'rdoc/task'
-
-	Rake::Task[ 'docs' ].clear
-	RDoc::Task.new( 'docs' ) do |rdoc|
-	    rdoc.main = "README.md"
-		rdoc.markup = 'markdown'
-	    rdoc.rdoc_files.include( "*.md", "ChangeLog", "lib/**/*.rb" )
-	    rdoc.generator = :fivefish
-		rdoc.title = 'fluent_fixtures'
-	    rdoc.rdoc_dir = 'doc'
-	end
-end
-
-task :gemspec => GEMSPEC
-file GEMSPEC => __FILE__
-task GEMSPEC do |task|
-	spec = $hoespec.spec
-	spec.files.delete( '.gemtest' )
-	spec.signing_key = nil
-	spec.cert_chain = ['certs/ged.pem']
-	spec.version = "#{spec.version}.pre.#{Time.now.strftime("%Y%m%d%H%M%S")}"
-	puts "Spec version is set to: %s" % [ spec.version ]
-	File.open( task.name, 'w' ) do |fh|
-		fh.write( spec.to_ruby )
-	end
-end
-
-CLOBBER.include( GEMSPEC.to_s )
-
+Rake::DevEiate.setup( 'fluent_fixtures' )

          
M certs/ged.pem +14 -15
@@ 1,7 1,7 @@ 
 -----BEGIN CERTIFICATE-----
-MIIENDCCApygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
-REM9RmFlcmllTVVEL0RDPW9yZzAeFw0xODExMjAxODI5NTlaFw0xOTExMjAxODI5
-NTlaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
+MIID+DCCAmCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
+REM9RmFlcmllTVVEL0RDPW9yZzAeFw0xOTEyMjQyMDE5NTFaFw0yMDEyMjMyMDE5
+NTFaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
 hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyVhkRzvlEs0fe7145BYLfN6njX9ih5H
 L60U0p0euIurpv84op9CNKF9tx+1WKwyQvQP7qFGuZxkSUuWcP/sFhDXL1lWUuIl
 M4uHbGCRmOshDrF4dgnBeOvkHr1fIhPlJm5FO+Vew8tSQmlDsosxLUx+VB7DrVFO

          
@@ 10,16 10,15 @@ Sl6phTvgBrG8GExHbNZpLARd3xrBYLEFsX7RvBn2
 vQ66lts4alKC69TE5cuKasWBm+16A4aEe3XdZBRNmtOu/g81gvwA7fkJHKllJuaI
 dXzdHqq+zbGZVSQ7pRYHYomD0IiDe1DbIouFnPWmagaBnGHwXkDT2bKKP+s2v21m
 ozilJg4aar2okb/RA6VS87o+d7g6LpDDMMQjH4G9OPnJENLdhu8KnPw/ivSVvQw7
-N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjdTBzMAkGA1UdEwQCMAAwCwYD
-VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DAcBgNVHREE
-FTATgRFnZWRARmFlcmllTVVELm9yZzAcBgNVHRIEFTATgRFnZWRARmFlcmllTVVE
-Lm9yZzANBgkqhkiG9w0BAQsFAAOCAYEAP9Ffkvg4e8CjIWi8SykQ8oJSS8jbmbgF
-abke3vXWLG6V9kFiObuJd5wZRBluJANu7bEtjgc3fFaGVP2XxVdCpVjNbmMDg4Qp
-ovvczP53X6pQP2RSZgxF6Lblvy8y11RziUTVRG/Z2aJHsElo6gI7vQznE/OSDrhC
-gEhr8uaIUt7D+HZWRbU0+MkKPpL5uMqaFuJbqXEvSwPTuUuYkDfNfsjQO7ruWBac
-bxHCrvpZ6Tijc0nrlyXi6gPOCLeaqhau2xFnlvKgELwsGYSoKBJyDwqtQ5kwrOlU
-tkSyLrfZ+RZcH535Hyvif7ZxB0v5OxXXoec+N2vrUsEUMRDL9dg4/WFdN8hIOixF
-3IPKpZ1ho0Ya5q7yhygtBK9/NBFHw+nbJjcltfPDBXleRe8u73gnQo8AZIhStYSP
-v4qqqa27Bs468d6SoPxjSm8a2mM9HZ4OdWhq4tFsbTeXDVquCfi64OTEaTt2xQdR
-JnC4lpJfCP6aCXa5h2XAQfPSH636cQap
+N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYD
+VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DANBgkqhkiG
+9w0BAQsFAAOCAYEAifxlz7x0EfT3fjhM520ZEIrWa+tLMuLKNefkY18u8tZnx4EX
+Xxwh3tna3fvNfrOrdY5leIj1dbv4FTRg+gIBnIxAySqvpGvI/Axg5EdYbwninCLL
+LAKCmRo+5QwaPMYN2zdHIjGrp8jg1neCo5zy6tVvyTv0DMI6FLrydVJYduMMDFSy
+gQKR1rVOcCJtnBnLCF9+kKEUKohAHOmGsE7OBZFnjMIpH5yUDUVJKByv0gIipFt0
+1T6zff6oVU0w8WBiNKR381+6sF3wIZVnVY0XeJg6hNL+YecE8ILxLhHTmtT/BO0S
+3xPze9uXDR+iD6HYl8KU5QEg/dXFPhfQb512vVkTJDZvMcwu6PxDUjHFChLjAji/
+AZXjg1C5E9znTkeUR8ieU9F1MOKoiH57a5lYSTI8Ga8PpsNXTxNeXc16Ob26CqrJ
+83uuAYSy65yXDGXXPVBeKPVnYrqp91pqpS5Nh7wfuiCrE8lgU8PATh7K4BV1UhAT
+0MHbAT42wTYkfUj3
 -----END CERTIFICATE-----

          
M fluent_fixtures.gemspec +22 -46
@@ 1,62 1,38 @@ 
 # -*- encoding: utf-8 -*-
-# stub: fluent_fixtures 0.7.0.pre.20180612160111 ruby lib
+# stub: fluent_fixtures 0.9.0.pre.20201102181742 ruby lib
 
 Gem::Specification.new do |s|
   s.name = "fluent_fixtures".freeze
-  s.version = "0.7.0.pre.20180612160111"
+  s.version = "0.9.0.pre.20201102181742"
 
   s.required_rubygems_version = Gem::Requirement.new("> 1.3.1".freeze) if s.respond_to? :required_rubygems_version=
+  s.metadata = { "changelog_uri" => "http://deveiate.org/code/fluent_fixtures/History_md.html", "documentation_uri" => "http://deveiate.org/code/fluent_fixtures", "homepage_uri" => "http://bitbucket.org/ged/fluent_fixtures" } if s.respond_to? :metadata=
   s.require_paths = ["lib".freeze]
-  s.authors = ["Michael Granger".freeze]
-  s.cert_chain = ["certs/ged.pem".freeze]
-  s.date = "2018-06-12"
-  s.description = "FluentFixtures is a toolkit for building testing objects with a fluent interface.\n\nIt allows testers to describe test data via composition rather than setting up fragile monolithic datasets.\n\nTo see a walkthrough of how you might set your own fixtures up, check out the [The Setup](TheSetup_md.html).\n\nIf you're already on your way and just want some API docs, [we got those, too](FluentFixtures.html).".freeze
-  s.email = ["ged@FaerieMUD.org".freeze]
-  s.extra_rdoc_files = ["History.md".freeze, "LICENSE.txt".freeze, "Manifest.txt".freeze, "README.md".freeze, "TheSetup.md".freeze, "History.md".freeze, "README.md".freeze, "TheSetup.md".freeze]
-  s.files = [".document".freeze, ".rdoc_options".freeze, ".simplecov".freeze, "ChangeLog".freeze, "History.md".freeze, "LICENSE.txt".freeze, "Manifest.txt".freeze, "README.md".freeze, "Rakefile".freeze, "TheSetup.md".freeze, "lib/fluent_fixtures.rb".freeze, "lib/fluent_fixtures/collection.rb".freeze, "lib/fluent_fixtures/dsl.rb".freeze, "lib/fluent_fixtures/factory.rb".freeze, "spec/fluent_fixtures/collection_spec.rb".freeze, "spec/fluent_fixtures/dsl_spec.rb".freeze, "spec/fluent_fixtures/factory_spec.rb".freeze, "spec/fluent_fixtures_spec.rb".freeze, "spec/spec_helper.rb".freeze]
-  s.homepage = "http://deveiate.org/projects/fluent_fixtures".freeze
+  s.date = "2020-11-02"
+  s.description = "FluentFixtures is a toolkit for building testing objects with a fluent interface.".freeze
+  s.files = [".document".freeze, ".rdoc_options".freeze, ".simplecov".freeze, "History.md".freeze, "LICENSE.txt".freeze, "Manifest.txt".freeze, "README.md".freeze, "Rakefile".freeze, "TheSetup.md".freeze, "lib/fluent_fixtures.rb".freeze, "lib/fluent_fixtures/collection.rb".freeze, "lib/fluent_fixtures/dsl.rb".freeze, "lib/fluent_fixtures/factory.rb".freeze, "spec/fluent_fixtures/collection_spec.rb".freeze, "spec/fluent_fixtures/dsl_spec.rb".freeze, "spec/fluent_fixtures/factory_spec.rb".freeze, "spec/fluent_fixtures_spec.rb".freeze, "spec/spec_helper.rb".freeze]
+  s.homepage = "http://bitbucket.org/ged/fluent_fixtures".freeze
   s.licenses = ["BSD-3-Clause".freeze]
-  s.rdoc_options = ["--main".freeze, "README.md".freeze]
-  s.required_ruby_version = Gem::Requirement.new(">= 2.2.0".freeze)
-  s.rubygems_version = "2.7.6".freeze
-  s.summary = "FluentFixtures is a toolkit for building testing objects with a fluent interface".freeze
+  s.rubygems_version = "3.1.2".freeze
+  s.summary = "FluentFixtures is a toolkit for building testing objects with a fluent interface.".freeze
 
   if s.respond_to? :specification_version then
     s.specification_version = 4
+  end
 
-    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
-      s.add_runtime_dependency(%q<loggability>.freeze, ["~> 0.11"])
-      s.add_runtime_dependency(%q<inflecto>.freeze, ["~> 0.0"])
-      s.add_development_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
-      s.add_development_dependency(%q<hoe-deveiate>.freeze, ["~> 0.9"])
-      s.add_development_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
-      s.add_development_dependency(%q<faker>.freeze, ["~> 1.6"])
-      s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.12"])
-      s.add_development_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.1"])
-      s.add_development_dependency(%q<rdoc>.freeze, ["~> 4.0"])
-      s.add_development_dependency(%q<hoe>.freeze, ["~> 3.16"])
-    else
-      s.add_dependency(%q<loggability>.freeze, ["~> 0.11"])
-      s.add_dependency(%q<inflecto>.freeze, ["~> 0.0"])
-      s.add_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
-      s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.9"])
-      s.add_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
-      s.add_dependency(%q<faker>.freeze, ["~> 1.6"])
-      s.add_dependency(%q<simplecov>.freeze, ["~> 0.12"])
-      s.add_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.1"])
-      s.add_dependency(%q<rdoc>.freeze, ["~> 4.0"])
-      s.add_dependency(%q<hoe>.freeze, ["~> 3.16"])
-    end
+  if s.respond_to? :add_runtime_dependency then
+    s.add_runtime_dependency(%q<faker>.freeze, ["~> 2.14"])
+    s.add_runtime_dependency(%q<inflecto>.freeze, ["~> 0.0"])
+    s.add_runtime_dependency(%q<loggability>.freeze, ["~> 0.17"])
+    s.add_runtime_dependency(%q<simplecov>.freeze, ["~> 0.19"])
+    s.add_development_dependency(%q<rake-deveiate>.freeze, ["~> 0.15"])
+    s.add_development_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.4"])
   else
-    s.add_dependency(%q<loggability>.freeze, ["~> 0.11"])
+    s.add_dependency(%q<faker>.freeze, ["~> 2.14"])
     s.add_dependency(%q<inflecto>.freeze, ["~> 0.0"])
-    s.add_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
-    s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.9"])
-    s.add_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
-    s.add_dependency(%q<faker>.freeze, ["~> 1.6"])
-    s.add_dependency(%q<simplecov>.freeze, ["~> 0.12"])
-    s.add_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.1"])
-    s.add_dependency(%q<rdoc>.freeze, ["~> 4.0"])
-    s.add_dependency(%q<hoe>.freeze, ["~> 3.16"])
+    s.add_dependency(%q<loggability>.freeze, ["~> 0.17"])
+    s.add_dependency(%q<simplecov>.freeze, ["~> 0.19"])
+    s.add_dependency(%q<rake-deveiate>.freeze, ["~> 0.15"])
+    s.add_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.4"])
   end
 end

          
A => gem.deps.rb +11 -0
@@ 0,0 1,11 @@ 
+source 'https://rubygems.org/'
+
+gem 'faker', '~> 2.14'
+gem 'inflecto', '~> 0.0'
+gem 'loggability', '~> 0.17'
+gem 'simplecov', '~> 0.19'
+
+group :development do
+	gem 'rake-deveiate', '~> 0.15'
+	gem 'rdoc-generator-fivefish', '~> 0.4'
+end

          
M lib/fluent_fixtures.rb +3 -3
@@ 34,9 34,9 @@ module FluentFixtures
 	log_as :fluent_fixtures
 
 
-	require 'fluent_fixtures/collection'
-	require 'fluent_fixtures/dsl'
-	require 'fluent_fixtures/factory'
+	autoload :Collection, 'fluent_fixtures/collection'
+	autoload :DSL, 'fluent_fixtures/dsl'
+	autoload :Factory, 'fluent_fixtures/factory'
 
 end # module FluentFixtures
 

          
M lib/fluent_fixtures/dsl.rb +1 -1
@@ 90,7 90,7 @@ module FluentFixtures::DSL
 		options = hash.reject {|k,_| k == name }.merge( prelude: components )
 		block ||= Proc.new {}
 
-		self.decorator( name, options, &block )
+		self.decorator( name, **options, &block )
 	end
 
 

          
M spec/fluent_fixtures/collection_spec.rb +1 -1
@@ 5,7 5,7 @@ require_relative '../spec_helper'
 require 'fluent_fixtures/collection'
 
 
-describe FluentFixtures::Collection do
+RSpec.describe FluentFixtures::Collection do
 
 	let( :collection ) do
 		mod = Module.new

          
M spec/fluent_fixtures/dsl_spec.rb +1 -1
@@ 6,7 6,7 @@ require 'fluent_fixtures/dsl'
 require 'faker'
 
 
-describe FluentFixtures::DSL do
+RSpec.describe FluentFixtures::DSL do
 
 	let( :collection ) { Module.new {extend FluentFixtures::Collection} }
 

          
M spec/fluent_fixtures/factory_spec.rb +1 -1
@@ 6,7 6,7 @@ require 'faker'
 require 'fluent_fixtures/factory'
 
 
-describe FluentFixtures::Factory do
+RSpec.describe FluentFixtures::Factory do
 
 	let( :collection ) { Module.new {extend FluentFixtures::Collection} }
 

          
M spec/fluent_fixtures_spec.rb +1 -1
@@ 5,7 5,7 @@ require_relative 'spec_helper'
 require 'fluent_fixtures'
 
 
-describe FluentFixtures do
+RSpec.describe FluentFixtures do
 
 	it "has a semver version" do
 		expect( described_class::VERSION ).to match( /\A\d+\.\d+\.\d+(-[\p{Alnum}-]+)?/ )

          
M spec/spec_helper.rb +10 -3
@@ 10,13 10,20 @@ require 'loggability/spechelpers'
 
 ### Mock with RSpec
 RSpec.configure do |config|
-	config.run_all_when_everything_filtered = true
-	config.filter_run :focus
-	config.order = 'random'
 	config.mock_with( :rspec ) do |mock|
 		mock.syntax = :expect
 	end
 
+	config.disable_monkey_patching!
+	config.example_status_persistence_file_path = "spec/.status"
+	config.filter_run :focus
+	config.filter_run_when_matching :focus
+	config.order = :random
+	config.profile_examples = 5
+	config.run_all_when_everything_filtered = true
+	config.shared_context_metadata_behavior = :apply_to_host_groups
+	config.warnings = true
+
 	config.include( Loggability::SpecHelpers )
 end