From 48e70a76910ce215228071a0c88a00e0b69ea18d Mon Sep 17 00:00:00 2001 From: Lewis Buckley Date: Fri, 12 Dec 2025 12:00:29 +0000 Subject: [PATCH] Fix Ruby 3.4 frozen string literal warning Use array accumulation instead of string mutation in encode method to avoid warning about literal string being frozen in the future. Also adds a basic test and updates gemspec dev dependencies. --- README.md | 11 ++++++++++- Rakefile | 7 +++++++ geohash_ruby.gemspec | 5 +++-- lib/geohash_ruby.rb | 4 ++-- test/geohash_ruby_test.rb | 8 ++++++++ 5 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 test/geohash_ruby_test.rb diff --git a/README.md b/README.md index 1760d30..f08f084 100644 --- a/README.md +++ b/README.md @@ -71,8 +71,17 @@ Geohash.walk 'xn774c', [ ``` +Development +----------- + +```bash +bundle install +bundle exec rake test +``` + + License ------- -This project is copyright by [Creasty](http://www.creasty.com), released under the MIT lisence. +This project is copyright by [Creasty](http://www.creasty.com), released under the MIT license. See `LICENSE` file for details. diff --git a/Rakefile b/Rakefile index 33eb07c..24755d6 100644 --- a/Rakefile +++ b/Rakefile @@ -1,2 +1,9 @@ require 'bundler/gem_tasks' +require 'rake/testtask' + +Rake::TestTask.new do |t| + t.pattern = 'test/**/*_test.rb' +end + +task default: :test diff --git a/geohash_ruby.gemspec b/geohash_ruby.gemspec index 4cd6bf5..d5051ae 100644 --- a/geohash_ruby.gemspec +++ b/geohash_ruby.gemspec @@ -18,6 +18,7 @@ Gem::Specification.new do |spec| spec.test_files = spec.files.grep(%r{^(test|spec|features)/}) spec.require_paths = ['lib'] - spec.add_development_dependency 'bundler', '~> 1.6' - spec.add_development_dependency 'rake', '~> 10.3' + spec.add_development_dependency 'bundler' + spec.add_development_dependency 'rake' + spec.add_development_dependency 'minitest' end diff --git a/lib/geohash_ruby.rb b/lib/geohash_ruby.rb index 3c93742..75d0c73 100644 --- a/lib/geohash_ruby.rb +++ b/lib/geohash_ruby.rb @@ -79,7 +79,7 @@ def encode(latitude, longitude, precision = 12) mids = [latitude, longitude] bounds = [[-90.0, +90.0], [-180.0, +180.0]] - geohash = '' + geohash = [] precision.times do |i| d = 0 @@ -95,7 +95,7 @@ def encode(latitude, longitude, precision = 12) geohash << BASE32[d] end - geohash + geohash.join end ### diff --git a/test/geohash_ruby_test.rb b/test/geohash_ruby_test.rb new file mode 100644 index 0000000..93eacd1 --- /dev/null +++ b/test/geohash_ruby_test.rb @@ -0,0 +1,8 @@ +require "minitest/autorun" +require_relative "../lib/geohash_ruby" + +class GeohashRubyTest < Minitest::Test + def test_encode + assert_equal "xn76ggke6xs5", Geohash.encode(35.6581, 139.7414) + end +end