Un-hoeify the project, more 2.7 updates.
M .hgignore +1 -0
@@ 11,3 11,4 @@ logs/
 coverage/
 \.paw$
 doc/
+^spec/\.status$

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

          
M History.rdoc => History.md +0 -0

M Manifest.txt +4 -10
@@ 1,15 1,6 @@ 
 .simplecov
-ChangeLog
-Gemfile
-History.rdoc
-LICENSE
-Manifest.txt
-Procfile
-README.rdoc
-Rakefile
 bin/thingfish
-etc/mongrel2-config.rb
-etc/thingfish.conf.example
+History.md
 lib/strelka/app/metadata.rb
 lib/strelka/apps.rb
 lib/strelka/httprequest/metadata.rb

          
@@ 24,6 15,9 @@ lib/thingfish/mixins.rb
 lib/thingfish/processor.rb
 lib/thingfish/processor/sha256.rb
 lib/thingfish/spechelpers.rb
+LICENSE
+Rakefile
+README.md
 spec/data/APIC-1-image.mp3
 spec/data/APIC-2-images.mp3
 spec/data/PIC-1-image.mp3

          
M README.rdoc => README.md +41 -31
@@ 1,8 1,16 @@ 
-= Thingfish
+# Thingfish
+
+home
+: https://thing.fish
 
-* https://thing.fish
+code
+: https://hg.sr.ht/~ged/thingfish
 
-== Description
+docs
+: https://thing.fish/docs/
+
+
+## Description
 
 Thingfish is a extensible, web-based digital asset manager. It can be used to
 store chunks of data on the network in an application-independent way, link the

          
@@ 10,42 18,31 @@ chunks together with metadata, and then 
 fetch it, all through a REST API.
 
 
-== Authors
-
-* Michael Granger <ged@FaerieMUD.org>
-* Mahlon E. Smith <mahlon@martini.nu>
+## Requirements
 
-== Contributors
-
-* Jeremiah Jordan <phaedrus@perlreason.com>
-* Ben Bleything <ben@bleything.net>
-* Jeff Davis <jeff-thingfish@j-davis.com>
+Thingfish is written in ruby, and is tested using [version 2.7](http://www.ruby-lang.org/en/downloads/). Other versions may work,
+but are not tested.
 
 
-== Installation
-
-=== Requirements
+## Installation
 
-Thingfish is written in ruby, and is tested using {version 2.3}[http://www.ruby-lang.org/en/downloads/]. Other versions may work,
-but are not tested.
+You can install Thingfish via Rubygems:
 
-=== Ruby Modules
-
-You can install Thingfish via the Rubygems package manager:
-
-  $ gem install thingfish
+    $ gem install thingfish
 
 This will install the basic server and its dependencies. Additional functionality is available via separate gems in the following namespaces:
 
-[thingfish-metastore-*]
-  Storage backends for resource metadata
-[thingfish-filestore-*]
-  Storage backends for resources themselves
-[thingfish-processor-*]
-  Filters and extractors for resources
+`thingfish-metastore-*`
+: Storage backends for resource metadata
+
+`thingfish-filestore-*`
+: Storage backends for resources themselves
+
+`thingfish-processor-*`
+: Filters and extractors for resources
 
 
-== Contributing
+## Contributing
 
 You can check out the current development source
 {with Mercurial}[http://bitbucket.org/ged/thingfish], or

          
@@ 63,9 60,22 @@ You can submit bug reports, suggestions,
 {the project page}[http://bitbucket.org/ged/thingfish].
 
 
-== License
+## Authors
+
+* Michael Granger <ged@FaerieMUD.org>
+* Mahlon E. Smith <mahlon@martini.nu>
+
+
+## Contributors
 
-Copyright (c) 2007-2016, Michael Granger and Mahlon E. Smith
+* Jeremiah Jordan <phaedrus@perlreason.com>
+* Ben Bleything <ben@bleything.net>
+* Jeff Davis <jeff-thingfish@j-davis.com>
+
+
+## License
+
+Copyright (c) 2007-2020, Michael Granger and Mahlon E. Smith
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without

          
M Rakefile +4 -86
@@ 1,90 1,8 @@ 
-#!/usr/bin/env rake
-#encoding: utf-8
-
-begin
-	require 'hoe'
-rescue LoadError
-	abort "This Rakefile requires hoe (gem install hoe)"
-end
-
-GEMSPEC = 'thingfish.gemspec'
-
-
-Hoe.plugin :mercurial
-Hoe.plugin :signing
-Hoe.plugin :deveiate
-
-Hoe.plugins.delete :rubyforge
+#!/usr/bin/env ruby -S rake
 
-hoespec = Hoe.spec 'thingfish' do
-	self.readme_file = 'README.rdoc'
-	self.history_file = 'History.rdoc'
-	self.extra_rdoc_files = Rake::FileList[ '*.rdoc' ]
-	self.license 'BSD-3-Clause'
-
-	self.developer 'Michael Granger', 'ged@FaerieMUD.org'
-	self.developer 'Mahlon E. Smith', 'mahlon@martini.nu'
-	self.license "BSD"
+require 'rake/deveiate'
 
-	self.dependency 'strelka',      '~> 0.14'
-
-	self.dependency 'hoe-deveiate', '~> 0.3',  :development
-	self.dependency 'simplecov',    '~> 0.7',  :development
-
-	self.require_ruby_version( '>=2.0.0' )
-
-	self.hg_sign_tags = true if self.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/thingfish/api"
+Rake::DevEiate.setup( 'thingfish' ) do |project|
+	project.publish_to = 'deveiate:/usr/local/www/public/code'
 end
 
-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.rdoc"
-		rdoc.markup = 'markdown'
-	    rdoc.rdoc_files.include( "*.rdoc", "ChangeLog", "lib/**/*.rb" )
-	    rdoc.generator = :sixfish
-		rdoc.title = 'Thingfish'
-	    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 = Dir.glob( 'certs/*.pem' )
-	spec.version = "#{spec.version.bump}.0.pre#{Time.now.strftime("%Y%m%d%H%M%S")}"
-	File.open( task.name, 'w' ) do |fh|
-		fh.write( spec.to_ruby )
-	end
-end
-
-CLOBBER.include( GEMSPEC.to_s )
-

          
M certs/ged.pem +23 -24
@@ 1,26 1,25 @@ 
 -----BEGIN CERTIFICATE-----
-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
+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
+JnC4lpJfCP6aCXa5h2XAQfPSH636cQap
 -----END CERTIFICATE-----

          
M .gems => gem.deps.rb +10 -7
@@ 1,7 1,10 @@ 
-configurability
-loggability
-hoe-deveiate
-strelka
-simplecov
-mongrel2
-rdoc
+source 'https://rubygems.org/'
+
+gem 'strelka', '~> 0.14'
+
+group :development do
+	gem 'rake-deveiate', '~> 0.10'
+	gem 'rdoc-generator-fivefish', '~> 0.4'
+	gem 'simplecov', '~> 0.18'
+end
+

          
M spec/helpers.rb +19 -13
@@ 42,26 42,32 @@ Loggability.format_with( :color ) if $st
 
 
 ### Mock with RSpec
-RSpec.configure do |c|
+RSpec.configure do |config|
 	include Strelka::Constants
 	include Thingfish::SpecHelpers
 	include Thingfish::SpecHelpers::Constants
 
-	c.run_all_when_everything_filtered = true
-	c.filter_run :focus
-	c.order = 'random'
-    # c.warnings = true
-	c.mock_with( :rspec ) do |mock|
+	config.mock_with( :rspec ) do |mock|
 		mock.syntax = :expect
 	end
 
-	c.include( Loggability::SpecHelpers )
-	c.include( Mongrel2::SpecHelpers )
-	c.include( Mongrel2::Constants )
-	c.include( Mongrel2::Config::DSL )
-	c.include( Strelka::Constants )
-	c.include( Strelka::Testing )
-	c.include( Thingfish::SpecHelpers )
+	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 )
+	config.include( Mongrel2::SpecHelpers )
+	config.include( Mongrel2::Constants )
+	config.include( Mongrel2::Config::DSL )
+	config.include( Strelka::Constants )
+	config.include( Strelka::Testing )
+	config.include( Thingfish::SpecHelpers )
 end
 
 # vim: set nosta noet ts=4 sw=4:

          
M spec/thingfish/datastore/memory_spec.rb +1 -1
@@ 7,7 7,7 @@ require 'thingfish/datastore'
 require 'thingfish/behaviors'
 
 
-describe Thingfish::Datastore, "memory" do
+RSpec.describe Thingfish::Datastore, "memory" do
 
 	let( :store ) { Thingfish::Datastore.create(:memory) }
 

          
M spec/thingfish/datastore_spec.rb +1 -1
@@ 9,7 9,7 @@ class TestingDatastore < Thingfish::Data
 end
 
 
-describe Thingfish::Datastore do
+RSpec.describe Thingfish::Datastore do
 
 	it "is abstract" do
 		expect { described_class.new }.to raise_error( NoMethodError, /private/i )

          
M spec/thingfish/handler_spec.rb +1 -1
@@ 7,7 7,7 @@ require 'thingfish/handler'
 require 'thingfish/processor'
 
 
-describe Thingfish::Handler do
+RSpec.describe Thingfish::Handler do
 
 	EVENT_SOCKET_URI = 'tcp://127.0.0.1:*'
 

          
M spec/thingfish/metastore/memory_spec.rb +1 -1
@@ 8,7 8,7 @@ require 'thingfish/metastore/memory'
 require 'thingfish/behaviors'
 
 
-describe Thingfish::Metastore::Memory do
+RSpec.describe Thingfish::Metastore::Memory do
 
 	it_behaves_like "a Thingfish metastore"
 

          
M spec/thingfish/metastore_spec.rb +1 -1
@@ 9,7 9,7 @@ class TestingMetastore < Thingfish::Meta
 end
 
 
-describe Thingfish::Metastore do
+RSpec.describe Thingfish::Metastore do
 
 	before( :all ) do
 		setup_logging()

          
M spec/thingfish/mixins_spec.rb +1 -1
@@ 8,7 8,7 @@ require 'rspec'
 require 'thingfish/mixins'
 
 
-describe Thingfish, 'mixins' do
+RSpec.describe Thingfish, 'mixins' do
 
 	# A collection of functions for dealing with object IDs.
 	describe 'Normalization' do

          
M spec/thingfish/processor/sha256_spec.rb +1 -1
@@ 8,7 8,7 @@ require 'thingfish/processor'
 require 'strelka/httprequest/metadata'
 
 
-describe Thingfish::Processor, "SHA256" do
+RSpec.describe Thingfish::Processor, "SHA256" do
 
 	before( :all ) do
 		Strelka::HTTPRequest.class_eval { include Strelka::HTTPRequest::Metadata }

          
M spec/thingfish/processor_spec.rb +1 -1
@@ 6,7 6,7 @@ require 'rspec'
 require 'thingfish/processor'
 
 
-describe Thingfish::Processor do
+RSpec.describe Thingfish::Processor do
 
 	before( :all ) do
 		setup_logging()

          
M spec/thingfish_spec.rb +1 -1
@@ 6,7 6,7 @@ require 'rspec'
 require 'thingfish'
 
 
-describe Thingfish do
+RSpec.describe Thingfish do
 
 	it "returns a version string if asked" do
 		expect( described_class.version_string ).to match( /\w+ [\d.]+/ )

          
M thingfish.gemspec +18 -35
@@ 1,54 1,37 @@ 
 # -*- encoding: utf-8 -*-
-# stub: thingfish 0.7.0.pre20170119154654 ruby lib
+# stub: thingfish 0.8.0.pre.20200304144036 ruby lib
 
 Gem::Specification.new do |s|
   s.name = "thingfish".freeze
-  s.version = "0.7.0.pre20170119154654"
+  s.version = "0.8.0.pre.20200304144036"
 
   s.required_rubygems_version = Gem::Requirement.new("> 1.3.1".freeze) if s.respond_to? :required_rubygems_version=
+  s.metadata = { "bug_tracker_uri" => "https://todo.sr.ht/~ged/thingfish", "changelog_uri" => "https://thing.fish/docs/History_md.html", "documentation_uri" => "https://thing.fish/docs/", "homepage_uri" => "https://thing.fish", "source_uri" => "https://hg.sr.ht/~ged/thingfish" } if s.respond_to? :metadata=
   s.require_paths = ["lib".freeze]
   s.authors = ["Michael Granger".freeze, "Mahlon E. Smith".freeze]
-  s.cert_chain = ["certs/ged.pem".freeze]
-  s.date = "2017-01-19"
-  s.description = "Thingfish is a extensible, web-based digital asset manager. It can be used to\nstore chunks of data on the network in an application-independent way, link the\nchunks together with metadata, and then search for the chunk you need later and\nfetch it, all through a REST API.".freeze
+  s.date = "2020-03-04"
+  s.description = "Thingfish is a extensible, web-based digital asset manager. It can be used to store chunks of data on the network in an application-independent way, link the chunks together with metadata, and then search for the chunk you need later and fetch it, all through a REST API.".freeze
   s.email = ["ged@FaerieMUD.org".freeze, "mahlon@martini.nu".freeze]
   s.executables = ["thingfish".freeze]
-  s.extra_rdoc_files = ["History.rdoc".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "History.rdoc".freeze, "README.rdoc".freeze]
-  s.files = [".simplecov".freeze, "ChangeLog".freeze, "Gemfile".freeze, "History.rdoc".freeze, "LICENSE".freeze, "Manifest.txt".freeze, "Procfile".freeze, "README.rdoc".freeze, "Rakefile".freeze, "bin/thingfish".freeze, "etc/mongrel2-config.rb".freeze, "etc/thingfish.conf.example".freeze, "lib/strelka/app/metadata.rb".freeze, "lib/strelka/apps.rb".freeze, "lib/strelka/httprequest/metadata.rb".freeze, "lib/thingfish.rb".freeze, "lib/thingfish/behaviors.rb".freeze, "lib/thingfish/datastore.rb".freeze, "lib/thingfish/datastore/memory.rb".freeze, "lib/thingfish/handler.rb".freeze, "lib/thingfish/metastore.rb".freeze, "lib/thingfish/metastore/memory.rb".freeze, "lib/thingfish/mixins.rb".freeze, "lib/thingfish/processor.rb".freeze, "lib/thingfish/processor/sha256.rb".freeze, "lib/thingfish/spechelpers.rb".freeze, "spec/data/APIC-1-image.mp3".freeze, "spec/data/APIC-2-images.mp3".freeze, "spec/data/PIC-1-image.mp3".freeze, "spec/data/PIC-2-images.mp3".freeze, "spec/helpers.rb".freeze, "spec/spec.opts".freeze, "spec/thingfish/datastore/memory_spec.rb".freeze, "spec/thingfish/datastore_spec.rb".freeze, "spec/thingfish/handler_spec.rb".freeze, "spec/thingfish/metastore/memory_spec.rb".freeze, "spec/thingfish/metastore_spec.rb".freeze, "spec/thingfish/mixins_spec.rb".freeze, "spec/thingfish/processor/sha256_spec.rb".freeze, "spec/thingfish/processor_spec.rb".freeze, "spec/thingfish_spec.rb".freeze]
+  s.files = [".simplecov".freeze, "History.md".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "bin/thingfish".freeze, "lib/strelka/app/metadata.rb".freeze, "lib/strelka/apps.rb".freeze, "lib/strelka/httprequest/metadata.rb".freeze, "lib/thingfish.rb".freeze, "lib/thingfish/behaviors.rb".freeze, "lib/thingfish/datastore.rb".freeze, "lib/thingfish/datastore/memory.rb".freeze, "lib/thingfish/handler.rb".freeze, "lib/thingfish/metastore.rb".freeze, "lib/thingfish/metastore/memory.rb".freeze, "lib/thingfish/mixins.rb".freeze, "lib/thingfish/processor.rb".freeze, "lib/thingfish/processor/sha256.rb".freeze, "lib/thingfish/spechelpers.rb".freeze, "spec/data/APIC-1-image.mp3".freeze, "spec/data/APIC-2-images.mp3".freeze, "spec/data/PIC-1-image.mp3".freeze, "spec/data/PIC-2-images.mp3".freeze, "spec/helpers.rb".freeze, "spec/spec.opts".freeze, "spec/thingfish/datastore/memory_spec.rb".freeze, "spec/thingfish/datastore_spec.rb".freeze, "spec/thingfish/handler_spec.rb".freeze, "spec/thingfish/metastore/memory_spec.rb".freeze, "spec/thingfish/metastore_spec.rb".freeze, "spec/thingfish/mixins_spec.rb".freeze, "spec/thingfish/processor/sha256_spec.rb".freeze, "spec/thingfish/processor_spec.rb".freeze, "spec/thingfish_spec.rb".freeze]
   s.homepage = "https://thing.fish".freeze
-  s.licenses = ["BSD-3-Clause".freeze, "BSD".freeze]
-  s.rdoc_options = ["--main".freeze, "README.rdoc".freeze]
-  s.required_ruby_version = Gem::Requirement.new(">= 2.0.0".freeze)
-  s.rubygems_version = "2.6.8".freeze
-  s.summary = "Thingfish is a extensible, web-based digital asset manager".freeze
+  s.licenses = ["BSD-3-Clause".freeze]
+  s.rubygems_version = "3.1.2".freeze
+  s.summary = "Thingfish is a extensible, web-based digital asset manager.".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<strelka>.freeze, ["~> 0.14"])
-      s.add_development_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
-      s.add_development_dependency(%q<hoe-deveiate>.freeze, ["~> 0.8"])
-      s.add_development_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
-      s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.7"])
-      s.add_development_dependency(%q<rdoc>.freeze, ["~> 4.0"])
-      s.add_development_dependency(%q<hoe>.freeze, ["~> 3.15"])
-    else
-      s.add_dependency(%q<strelka>.freeze, ["~> 0.14"])
-      s.add_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
-      s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.8"])
-      s.add_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
-      s.add_dependency(%q<simplecov>.freeze, ["~> 0.7"])
-      s.add_dependency(%q<rdoc>.freeze, ["~> 4.0"])
-      s.add_dependency(%q<hoe>.freeze, ["~> 3.15"])
-    end
+  if s.respond_to? :add_runtime_dependency then
+    s.add_runtime_dependency(%q<strelka>.freeze, ["~> 0.14"])
+    s.add_development_dependency(%q<rake-deveiate>.freeze, ["~> 0.10"])
+    s.add_development_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.4"])
+    s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.18"])
   else
     s.add_dependency(%q<strelka>.freeze, ["~> 0.14"])
-    s.add_dependency(%q<hoe-mercurial>.freeze, ["~> 1.4"])
-    s.add_dependency(%q<hoe-deveiate>.freeze, ["~> 0.8"])
-    s.add_dependency(%q<hoe-highline>.freeze, ["~> 0.2"])
-    s.add_dependency(%q<simplecov>.freeze, ["~> 0.7"])
-    s.add_dependency(%q<rdoc>.freeze, ["~> 4.0"])
-    s.add_dependency(%q<hoe>.freeze, ["~> 3.15"])
+    s.add_dependency(%q<rake-deveiate>.freeze, ["~> 0.10"])
+    s.add_dependency(%q<rdoc-generator-fivefish>.freeze, ["~> 0.4"])
+    s.add_dependency(%q<simplecov>.freeze, ["~> 0.18"])
   end
 end