]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/2175'
authorTom Hughes <tom@compton.nu>
Tue, 26 Mar 2019 19:14:04 +0000 (19:14 +0000)
committerTom Hughes <tom@compton.nu>
Tue, 26 Mar 2019 19:14:04 +0000 (19:14 +0000)
.rubocop.yml
.travis.yml
INSTALL.md
app/controllers/geocoder_controller.rb
app/helpers/browse_tags_helper.rb
app/models/language.rb
bin/yarn
lib/password_hash.rb
test/controllers/api/changesets_controller_test.rb
test/models/message_test.rb

index b33f9046cb87c117925cc8e290392f2021aae270..690d984f74ad8c94962a24c2224c2107fcbe4841 100644 (file)
@@ -1,7 +1,7 @@
 inherit_from: .rubocop_todo.yml
 
 AllCops:
-  TargetRubyVersion: 2.3
+  TargetRubyVersion: 2.5
 
 Rails:
   Enabled: true
index 0b528b46958ae30757c28f8a3eff56811c3ded21..1b99a514375447cc93ad5b9606f3d0063a67c593 100644 (file)
@@ -1,7 +1,7 @@
 sudo: false
 language: ruby
 rvm:
-  - 2.3.3
+  - 2.5.1
 cache: bundler
 addons:
   postgresql: 9.5
index f069521eb80feacc08a52b4d12614483dcea4247..5b2652c3e0cc4dc114b5bd692f01f375c7e6eac3 100644 (file)
@@ -5,7 +5,7 @@ If you want to deploy the software for your own project, then see the notes at t
 
 You can install the software directly on your machine, which is the traditional and probably best-supported approach. However, there is an alternative which may be easier: Vagrant. This installs the software into a virtual machine, which makes it easier to get a consistent development environment and may avoid installation difficulties. For Vagrant instructions, see [VAGRANT.md](VAGRANT.md).
 
-These instructions are based on Ubuntu 16.04 LTS, which is the platform used by the OSMF servers.
+These instructions are based on Ubuntu 18.04 LTS, which is the platform used by the OSMF servers.
 The instructions also work, with only minor amendments, for all other current Ubuntu releases, Fedora and MacOSX
 
 We don't recommend attempting to develop or deploy this software on Windows. If you need to use Windows, then try developing this software using Ubuntu in a virtual machine, or use [Vagrant](VAGRANT.md).
@@ -18,8 +18,7 @@ of packages required before you can get the various gems installed.
 
 ## Minimum requirements
 
-* Ruby 2.3
-* RubyGems 1.3.1+
+* Ruby 2.5+
 * PostgreSQL 9.1+
 * ImageMagick
 * Bundler
@@ -28,12 +27,12 @@ of packages required before you can get the various gems installed.
 These can be installed on Ubuntu 16.04 or later with:
 
 ```
-sudo apt-get install ruby2.3 libruby2.3 ruby2.3-dev \
+sudo apt-get install ruby2.5 libruby2.5 ruby2.5-dev \
                      libmagickwand-dev libxml2-dev libxslt1-dev nodejs \
                      apache2 apache2-dev build-essential git-core \
                      postgresql postgresql-contrib libpq-dev postgresql-server-dev-all \
                      libsasl2-dev imagemagick libffi-dev
-sudo gem2.3 install bundler
+sudo gem2.5 install bundler
 ```
 
 ### Alternative platforms
index a877fc0926d575c56c9d6bed892447bd8f324602..4a8f7765065ab11c7f6db3caa668f37826f2fc4e 100644 (file)
@@ -17,11 +17,11 @@ class GeocoderController < ApplicationController
       @sources.push "osm_nominatim_reverse"
       @sources.push "geonames_reverse" if Settings.key?(:geonames_username)
     elsif @params[:query]
-      if @params[:query] =~ /^\d{5}(-\d{4})?$/
+      if @params[:query].match?(/^\d{5}(-\d{4})?$/)
         @sources.push "osm_nominatim"
-      elsif @params[:query] =~ /^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i
+      elsif @params[:query].match?(/^(GIR 0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]|[A-HK-Y][0-9]([0-9]|[ABEHMNPRV-Y]))|[0-9][A-HJKS-UW])\s*[0-9][ABD-HJLNP-UW-Z]{2})$/i)
         @sources.push "osm_nominatim"
-      elsif @params[:query] =~ /^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i
+      elsif @params[:query].match?(/^[A-Z]\d[A-Z]\s*\d[A-Z]\d$/i)
         @sources.push "ca_postcode"
         @sources.push "osm_nominatim"
       else
index 7c43511c45bcfe7579d91602fa2b25852f83d351..90e75e90a4766e0b8d366b65bec11b5a053da9a9 100644 (file)
@@ -120,7 +120,7 @@ module BrowseTagsHelper
     #
     # Also accepting / as a visual separator although not given in RFC 3966,
     # because it is used as a visual separator in OSM data in some countries.
-    if value =~ %r{^\s*\+[\d\s\(\)/\.-]{6,25}\s*(;\s*\+[\d\s\(\)/\.-]{6,25}\s*)*$}
+    if value.match?(%r{^\s*\+[\d\s\(\)/\.-]{6,25}\s*(;\s*\+[\d\s\(\)/\.-]{6,25}\s*)*$})
       return value.split(";").map do |phone_number|
         # for display, remove leading and trailing whitespace
         phone_number = phone_number.strip
index 67e98569bbf14315099efb4b79d40dc7ef32e2ad..bb1aa4bd26016758ad3d8b66d09a7527a72b8ad8 100644 (file)
@@ -15,14 +15,12 @@ class Language < ActiveRecord::Base
   def self.load(file)
     Language.transaction do
       YAML.safe_load(File.read(file)).each do |k, v|
-        begin
-          Language.update(k, :english_name => v["english"], :native_name => v["native"])
-        rescue ActiveRecord::RecordNotFound
-          Language.create do |l|
-            l.code = k
-            l.english_name = v["english"]
-            l.native_name = v["native"]
-          end
+        Language.update(k, :english_name => v["english"], :native_name => v["native"])
+      rescue ActiveRecord::RecordNotFound
+        Language.create do |l|
+          l.code = k
+          l.english_name = v["english"]
+          l.native_name = v["native"]
         end
       end
     end
index 38f278aa087e2bbab837f887c2ff66b90b40d8be..99e5e77285b1827fe23d420604d7c90eff4b44d7 100755 (executable)
--- a/bin/yarn
+++ b/bin/yarn
@@ -1,11 +1,9 @@
 #!/usr/bin/env ruby
 APP_ROOT = File.expand_path("..", __dir__)
 Dir.chdir(APP_ROOT) do
-  begin
-    exec "yarnpkg", *ARGV
-  rescue Errno::ENOENT
-    warn "Yarn executable was not detected in the system."
-    warn "Download Yarn at https://yarnpkg.com/en/docs/install"
-    exit 1
-  end
+  exec "yarnpkg", *ARGV
+rescue Errno::ENOENT
+  warn "Yarn executable was not detected in the system."
+  warn "Download Yarn at https://yarnpkg.com/en/docs/install"
+  exit 1
 end
index c65df2c4fd7fc070496cf8dac2c5851e3e12f25a..9f77fdc0ddd9fd6825ce68dc504cd1e96f9c3500 100644 (file)
@@ -18,7 +18,7 @@ module PasswordHash
   def self.check(hash, salt, candidate)
     if salt.nil?
       candidate = Digest::MD5.hexdigest(candidate)
-    elsif salt =~ /!/
+    elsif salt.match?(/!/)
       algorithm, iterations, salt = salt.split("!")
       size = Base64.strict_decode64(hash).length
       candidate = self.hash(candidate, salt, iterations.to_i, size, algorithm)
@@ -32,7 +32,7 @@ module PasswordHash
   def self.upgrade?(hash, salt)
     if salt.nil?
       return true
-    elsif salt =~ /!/
+    elsif salt.match?(/!/)
       algorithm, iterations, salt = salt.split("!")
       return true if Base64.strict_decode64(salt).length != SALT_BYTE_SIZE
       return true if Base64.strict_decode64(hash).length != HASH_BYTE_SIZE
index be4875630caece982a086a8f0d68630cbc6b4ffc..e9132764c12b3a77ad1b8e96da0e561bf5a5cb7a 100644 (file)
@@ -165,12 +165,10 @@ module Api
     # check that a changeset that doesn't exist returns an appropriate message
     def test_show_not_found
       [0, -32, 233455644, "afg", "213"].each do |id|
-        begin
-          get :show, :params => { :id => id }
-          assert_response :not_found, "should get a not found"
-        rescue ActionController::UrlGenerationError => ex
-          assert_match(/No route matches/, ex.to_s)
-        end
+        get :show, :params => { :id => id }
+        assert_response :not_found, "should get a not found"
+      rescue ActionController::UrlGenerationError => ex
+        assert_match(/No route matches/, ex.to_s)
       end
     end
 
@@ -239,23 +237,19 @@ module Api
 
       # First try to do it with no auth
       cs_ids.each do |id|
-        begin
-          put :close, :params => { :id => id }
-          assert_response :unauthorized, "Shouldn't be able close the non-existant changeset #{id}, when not authorized"
-        rescue ActionController::UrlGenerationError => ex
-          assert_match(/No route matches/, ex.to_s)
-        end
+        put :close, :params => { :id => id }
+        assert_response :unauthorized, "Shouldn't be able close the non-existant changeset #{id}, when not authorized"
+      rescue ActionController::UrlGenerationError => ex
+        assert_match(/No route matches/, ex.to_s)
       end
 
       # Now try with auth
       basic_authorization create(:user).email, "test"
       cs_ids.each do |id|
-        begin
-          put :close, :params => { :id => id }
-          assert_response :not_found, "The changeset #{id} doesn't exist, so can't be closed"
-        rescue ActionController::UrlGenerationError => ex
-          assert_match(/No route matches/, ex.to_s)
-        end
+        put :close, :params => { :id => id }
+        assert_response :not_found, "The changeset #{id} doesn't exist, so can't be closed"
+      rescue ActionController::UrlGenerationError => ex
+        assert_match(/No route matches/, ex.to_s)
       end
     end
 
index 18b75f451e6aabe0aabef026e7750d136d23d115..9c321d3c39c7ff5c317a14235d393c40d011ae5d 100644 (file)
@@ -53,20 +53,18 @@ class MessageTest < ActiveSupport::TestCase
                          "\x82\x82",     # multibyte continuations without multibyte identifier
                          "\xe1\x82\x4a"] # three-byte identifier, contination and (incorrectly) plain ASCII
     invalid_sequences.each do |char|
-      begin
-        # create a message and save to the database
-        msg = make_message(char, 1)
-        # if the save throws, thats fine and the test should pass, as we're
-        # only testing invalid sequences anyway.
-        msg.save!
-
-        # get the saved message back and check that it is identical - i.e:
-        # its OK to accept invalid UTF-8 as long as we return it unmodified.
-        db_msg = msg.class.find(msg.id)
-        assert_equal char, db_msg.title, "Database silently truncated message title"
-      rescue ArgumentError => ex
-        assert_equal ex.to_s, "invalid byte sequence in UTF-8"
-      end
+      # create a message and save to the database
+      msg = make_message(char, 1)
+      # if the save throws, thats fine and the test should pass, as we're
+      # only testing invalid sequences anyway.
+      msg.save!
+
+      # get the saved message back and check that it is identical - i.e:
+      # its OK to accept invalid UTF-8 as long as we return it unmodified.
+      db_msg = msg.class.find(msg.id)
+      assert_equal char, db_msg.title, "Database silently truncated message title"
+    rescue ArgumentError => ex
+      assert_equal ex.to_s, "invalid byte sequence in UTF-8"
     end
   end