diff options
33 files changed, 129 insertions, 1684 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b26c2d16d77..2c3d18d21be 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -77,18 +77,6 @@ stages: - mysql:5.7 - redis:alpine -.rails4: &rails4 - allow_failure: false - except: - variables: - - $CI_COMMIT_REF_NAME =~ /(^docs[\/-].*|.*-docs$)/ - - $CI_COMMIT_REF_NAME =~ /(^qa[\/-].*|.*-qa$)/ - - $CI_COMMIT_REF_NAME =~ /norails4/ - - $RAILS5_DISABLED - variables: - BUNDLE_GEMFILE: "Gemfile.rails4" - RAILS5: "false" - # Skip all jobs except the ones that begin with 'docs/'. # Used for commits including ONLY documentation changes. # https://docs.gitlab.com/ce/development/documentation/#testing @@ -180,18 +168,10 @@ stages: <<: *rspec-metadata <<: *use-pg -.rspec-metadata-pg-rails4: &rspec-metadata-pg-rails4 - <<: *rspec-metadata-pg - <<: *rails4 - .rspec-metadata-mysql: &rspec-metadata-mysql <<: *rspec-metadata <<: *use-mysql -.rspec-metadata-mysql-rails4: &rspec-metadata-mysql-rails4 - <<: *rspec-metadata-mysql - <<: *rails4 - .only-canonical-masters: &only-canonical-masters only: - master@gitlab-org/gitlab-ce @@ -432,7 +412,6 @@ setup-test-env: script: - bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init' - scripts/gitaly-test-build # Do not use 'bundle exec' here - - BUNDLE_GEMFILE=Gemfile.rails4 bundle install $BUNDLE_INSTALL_FLAGS artifacts: expire_in: 7d paths: @@ -513,14 +492,6 @@ rspec-mysql: <<: *rspec-metadata-mysql parallel: 50 -rspec-pg-rails4: - <<: *rspec-metadata-pg-rails4 - parallel: 50 - -rspec-mysql-rails4: - <<: *rspec-metadata-mysql-rails4 - parallel: 50 - static-analysis: <<: *dedicated-no-docs-no-db-pull-cache-job dependencies: @@ -565,12 +536,6 @@ downtime_check: - /(^docs[\/-].*|.*-docs$)/ - /(^qa[\/-].*|.*-qa$)/ -rails4_gemfile_lock_check: - <<: *dedicated-no-docs-no-db-pull-cache-job - <<: *except-docs-and-qa - script: - - scripts/rails4-gemfile-lock-check - ee_compat_check: <<: *rake-exec dependencies: [] @@ -1,22 +1,6 @@ -# --- Special code for migrating to Rails 5.0 --- -def rails5? - !%w[0 false].include?(ENV["RAILS5"]) -end - -gem_versions = {} -gem_versions['activerecord_sane_schema_dumper'] = rails5? ? '1.0' : '0.2' -gem_versions['rails'] = rails5? ? '5.0.7' : '4.2.11' -gem_versions['rails-i18n'] = rails5? ? '~> 5.1' : '~> 4.0.9' - -# The 2.0.6 version of rack requires monkeypatch to be present in -# `config.ru`. This can be removed once a new update for Rack -# is available that contains https://github.com/rack/rack/pull/1201. -gem_versions['rack'] = rails5? ? '2.0.6' : '1.6.11' -# --- The end of special code for migrating to Rails 5.0 --- - source 'https://rubygems.org' -gem 'rails', gem_versions['rails'] +gem 'rails', '5.0.7' gem 'rails-deprecated_sanitizer', '~> 1.0.3' # Improves copy-on-write performance for MRI @@ -28,11 +12,7 @@ gem 'responders', '~> 2.0' gem 'sprockets', '~> 3.7.0' # Default values for AR models -if rails5? - gem 'gitlab-default_value_for', '~> 3.1.1', require: 'default_value_for' -else - gem 'default_value_for', '~> 3.0.0' -end +gem 'gitlab-default_value_for', '~> 3.1.1', require: 'default_value_for' # Supported DBs gem 'mysql2', '~> 0.4.10', group: :mysql @@ -159,7 +139,10 @@ gem 'icalendar' gem 'diffy', '~> 3.1.0' # Application server -gem 'rack', gem_versions['rack'] +# The 2.0.6 version of rack requires monkeypatch to be present in +# `config.ru`. This can be removed once a new update for Rack +# is available that contains https://github.com/rack/rack/pull/1201. +gem 'rack', '2.0.6' group :unicorn do gem 'unicorn', '~> 5.1.0' @@ -297,7 +280,7 @@ gem 'premailer-rails', '~> 1.9.7' # I18n gem 'ruby_parser', '~> 3.8', require: false -gem 'rails-i18n', gem_versions['rails-i18n'] +gem 'rails-i18n', '~> 5.1' gem 'gettext_i18n_rails', '~> 1.8.0' gem 'gettext_i18n_rails_js', '~> 1.3' gem 'gettext', '~> 3.2.2', require: false, group: :development @@ -383,7 +366,7 @@ group :development, :test do gem 'license_finder', '~> 5.4', require: false gem 'knapsack', '~> 1.17' - gem 'activerecord_sane_schema_dumper', gem_versions['activerecord_sane_schema_dumper'] + gem 'activerecord_sane_schema_dumper', '1.0' gem 'stackprof', '~> 0.2.10', require: false @@ -397,8 +380,7 @@ group :test do gem 'email_spec', '~> 2.2.0' gem 'json-schema', '~> 2.8.0' gem 'webmock', '~> 2.3.2' - gem 'rails-controller-testing' if rails5? # Rails5 only gem. - gem 'test_after_commit', '~> 1.1' unless rails5? # Remove this gem when migrated to rails 5.0. It's been integrated to rails 5.0. + gem 'rails-controller-testing' gem 'sham_rack', '~> 1.3.6' gem 'concurrent-ruby', '~> 1.1' gem 'test-prof', '~> 0.2.5' diff --git a/Gemfile.rails4 b/Gemfile.rails4 deleted file mode 100644 index 0ec00e702aa..00000000000 --- a/Gemfile.rails4 +++ /dev/null @@ -1,7 +0,0 @@ -# BUNDLE_GEMFILE=Gemfile.rails4 bundle install - -ENV["RAILS5"] = "false" - -gemfile = File.expand_path("../Gemfile", __FILE__) - -eval(File.read(gemfile), nil, gemfile) diff --git a/Gemfile.rails4.lock b/Gemfile.rails4.lock deleted file mode 100644 index 3d81c570b89..00000000000 --- a/Gemfile.rails4.lock +++ /dev/null @@ -1,1164 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - RedCloth (4.3.2) - abstract_type (0.0.7) - ace-rails-ap (4.1.2) - actionmailer (4.2.10) - actionpack (= 4.2.10) - actionview (= 4.2.10) - activejob (= 4.2.10) - mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.10) - actionview (= 4.2.10) - activesupport (= 4.2.10) - rack (~> 1.6) - rack-test (~> 0.6.2) - rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.10) - activesupport (= 4.2.10) - builder (~> 3.1) - erubis (~> 2.7.0) - rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (4.2.10) - activesupport (= 4.2.10) - globalid (>= 0.3.0) - activemodel (4.2.10) - activesupport (= 4.2.10) - builder (~> 3.1) - activerecord (4.2.10) - activemodel (= 4.2.10) - activesupport (= 4.2.10) - arel (~> 6.0) - activerecord_sane_schema_dumper (0.2) - rails (>= 4, < 5) - activesupport (4.2.10) - i18n (~> 0.7) - minitest (~> 5.1) - thread_safe (~> 0.3, >= 0.3.4) - tzinfo (~> 1.1) - acts-as-taggable-on (5.0.0) - activerecord (>= 4.2.8) - adamantium (0.2.0) - ice_nine (~> 0.11.0) - memoizable (~> 0.4.0) - addressable (2.5.2) - public_suffix (>= 2.0.2, < 4.0) - aes_key_wrap (1.0.1) - akismet (2.0.0) - arel (6.0.4) - asana (0.8.1) - faraday (~> 0.9) - faraday_middleware (~> 0.9) - faraday_middleware-multi_json (~> 0.0) - oauth2 (~> 1.0) - asciidoctor (1.5.8) - asciidoctor-plantuml (0.0.8) - asciidoctor (~> 1.5) - ast (2.4.0) - atomic (1.1.99) - attr_encrypted (3.1.0) - encryptor (~> 3.0.0) - attr_required (1.0.0) - awesome_print (1.8.0) - axiom-types (0.1.1) - descendants_tracker (~> 0.0.4) - ice_nine (~> 0.11.0) - thread_safe (~> 0.3, >= 0.3.1) - babosa (1.0.2) - base32 (0.3.2) - batch-loader (1.2.2) - bcrypt (3.1.12) - bcrypt_pbkdf (1.0.0) - benchmark-ips (2.3.0) - better_errors (2.5.0) - coderay (>= 1.0.0) - erubi (>= 1.0.0) - rack (>= 0.9.0) - bindata (2.4.3) - binding_ninja (0.2.2) - binding_of_caller (0.8.0) - debug_inspector (>= 0.0.1) - bootsnap (1.3.2) - msgpack (~> 1.0) - bootstrap_form (2.7.0) - brakeman (4.2.1) - browser (2.5.3) - builder (3.2.3) - bullet (5.5.1) - activesupport (>= 3.0.0) - uniform_notifier (~> 1.10.0) - bundler-audit (0.5.0) - bundler (~> 1.2) - thor (~> 0.18) - byebug (9.0.6) - capybara (2.15.1) - addressable - mini_mime (>= 0.1.3) - nokogiri (>= 1.3.3) - rack (>= 1.0.0) - rack-test (>= 0.5.4) - xpath (~> 2.0) - capybara-screenshot (1.0.14) - capybara (>= 1.0, < 3) - launchy - carrierwave (1.2.3) - activemodel (>= 4.0.0) - activesupport (>= 4.0.0) - mime-types (>= 1.16) - cause (0.1) - charlock_holmes (0.7.6) - childprocess (0.9.0) - ffi (~> 1.0, >= 1.0.11) - chronic (0.10.2) - chronic_duration (0.10.6) - numerizer (~> 0.1.1) - chunky_png (1.3.5) - citrus (3.0.2) - coderay (1.1.2) - coercible (1.0.0) - descendants_tracker (~> 0.0.1) - commonmarker (0.17.13) - ruby-enum (~> 0.5) - concord (0.1.5) - adamantium (~> 0.2.0) - equalizer (~> 0.0.9) - concurrent-ruby (1.1.3) - concurrent-ruby-ext (1.1.3) - concurrent-ruby (= 1.1.3) - connection_pool (2.2.2) - crack (0.4.3) - safe_yaml (~> 1.0.0) - crass (1.0.4) - creole (0.5.0) - css_parser (1.5.0) - addressable - daemons (1.2.6) - database_cleaner (1.5.3) - debug_inspector (0.0.3) - debugger-ruby_core_source (1.3.8) - deckar01-task_list (2.0.0) - html-pipeline - declarative (0.0.10) - declarative-option (0.1.0) - default_value_for (3.0.2) - activerecord (>= 3.2.0, < 5.1) - descendants_tracker (0.0.4) - thread_safe (~> 0.3, >= 0.3.1) - device_detector (1.0.0) - devise (4.4.3) - bcrypt (~> 3.0) - orm_adapter (~> 0.1) - railties (>= 4.1.0, < 6.0) - responders - warden (~> 1.2.3) - devise-two-factor (3.0.0) - activesupport - attr_encrypted (>= 1.3, < 4, != 2) - devise (~> 4.0) - railties - rotp (~> 2.0) - diff-lcs (1.3) - diffy (3.1.0) - discordrb-webhooks-blackst0ne (3.3.0) - rest-client (~> 2.0) - docile (1.1.5) - domain_name (0.5.20180417) - unf (>= 0.0.5, < 1.0.0) - doorkeeper (4.3.2) - railties (>= 4.2) - doorkeeper-openid_connect (1.5.0) - doorkeeper (~> 4.3) - json-jwt (~> 1.6) - ed25519 (1.2.4) - email_reply_trimmer (0.1.6) - email_spec (2.2.0) - htmlentities (~> 4.3.3) - launchy (~> 2.1) - mail (~> 2.7) - encryptor (3.0.0) - equalizer (0.0.11) - erubi (1.7.1) - erubis (2.7.0) - escape_utils (1.2.1) - et-orbi (1.0.3) - tzinfo - eventmachine (1.2.7) - excon (0.62.0) - execjs (2.6.0) - expression_parser (0.9.0) - factory_bot (4.8.2) - activesupport (>= 3.0.0) - factory_bot_rails (4.8.2) - factory_bot (~> 4.8.2) - railties (>= 3.0.0) - faraday (0.12.2) - multipart-post (>= 1.2, < 3) - faraday_middleware (0.12.2) - faraday (>= 0.7.4, < 1.0) - faraday_middleware-multi_json (0.0.6) - faraday_middleware - multi_json - fast_blank (1.0.0) - fast_gettext (1.6.0) - ffaker (2.10.0) - ffi (1.9.25) - flipper (0.13.0) - flipper-active_record (0.13.0) - activerecord (>= 3.2, < 6) - flipper (~> 0.13.0) - flipper-active_support_cache_store (0.13.0) - activesupport (>= 3.2, < 6) - flipper (~> 0.13.0) - flowdock (0.7.1) - httparty (~> 0.7) - multi_json - fog-aliyun (0.2.0) - fog-core (~> 1.27) - fog-json (~> 1.0) - ipaddress (~> 0.8) - xml-simple (~> 1.1) - fog-aws (2.0.1) - fog-core (~> 1.38) - fog-json (~> 1.0) - fog-xml (~> 0.1) - ipaddress (~> 0.8) - fog-core (1.45.0) - builder - excon (~> 0.58) - formatador (~> 0.2) - fog-google (1.7.1) - fog-core - fog-json - fog-xml - google-api-client (~> 0.23.0) - fog-json (1.0.2) - fog-core (~> 1.0) - multi_json (~> 1.10) - fog-local (0.3.1) - fog-core (~> 1.27) - fog-openstack (0.1.21) - fog-core (>= 1.40) - fog-json (>= 1.0) - ipaddress (>= 0.8) - fog-rackspace (0.1.1) - fog-core (>= 1.35) - fog-json (>= 1.0) - fog-xml (>= 0.1) - ipaddress (>= 0.8) - fog-xml (0.1.3) - fog-core - nokogiri (>= 1.5.11, < 2.0.0) - font-awesome-rails (4.7.0.1) - railties (>= 3.2, < 5.1) - foreman (0.84.0) - thor (~> 0.19.1) - formatador (0.2.5) - fuubar (2.2.0) - rspec-core (~> 3.0) - ruby-progressbar (~> 1.4) - gemojione (3.3.0) - json - get_process_mem (0.2.0) - gettext (3.2.9) - locale (>= 2.0.5) - text (>= 1.3.0) - gettext_i18n_rails (1.8.0) - fast_gettext (>= 0.9.0) - gettext_i18n_rails_js (1.3.0) - gettext (>= 3.0.2) - gettext_i18n_rails (>= 0.7.1) - po_to_json (>= 1.0.0) - rails (>= 3.2.0) - gitaly-proto (1.3.0) - grpc (~> 1.0) - github-markup (1.7.0) - gitlab-markup (1.6.5) - gitlab-sidekiq-fetcher (0.3.0) - sidekiq (~> 5) - gitlab-styles (2.4.1) - rubocop (~> 0.54.0) - rubocop-gitlab-security (~> 0.1.0) - rubocop-rspec (~> 1.19) - gitlab_omniauth-ldap (2.0.4) - net-ldap (~> 0.16) - omniauth (~> 1.3) - pyu-ruby-sasl (>= 0.0.3.3, < 0.1) - rubyntlm (~> 0.5) - globalid (0.4.1) - activesupport (>= 4.2.0) - gon (6.2.0) - actionpack (>= 3.0) - multi_json - request_store (>= 1.0) - google-api-client (0.23.4) - addressable (~> 2.5, >= 2.5.1) - googleauth (>= 0.5, < 0.7.0) - httpclient (>= 2.8.1, < 3.0) - mime-types (~> 3.0) - representable (~> 3.0) - retriable (>= 2.0, < 4.0) - google-protobuf (3.6.1) - googleapis-common-protos-types (1.0.2) - google-protobuf (~> 3.0) - googleauth (0.6.6) - faraday (~> 0.12) - jwt (>= 1.4, < 3.0) - memoist (~> 0.12) - multi_json (~> 1.11) - os (>= 0.9, < 2.0) - signet (~> 0.7) - gpgme (2.0.18) - mini_portile2 (~> 2.3) - grape (1.1.0) - activesupport - builder - mustermann-grape (~> 1.0.0) - rack (>= 1.3.0) - rack-accept - virtus (>= 1.0.0) - grape-entity (0.7.1) - activesupport (>= 4.0) - multi_json (>= 1.3.2) - grape-path-helpers (1.0.6) - activesupport (>= 4, < 5.1) - grape (~> 1.0) - rake (~> 12) - grape_logging (1.7.0) - grape - graphiql-rails (1.4.10) - railties - sprockets-rails - graphql (1.8.1) - grpc (1.15.0) - google-protobuf (~> 3.1) - googleapis-common-protos-types (~> 1.0.0) - haml (5.0.4) - temple (>= 0.8.0) - tilt - haml_lint (0.28.0) - haml (>= 4.0, < 5.1) - rainbow - rake (>= 10, < 13) - rubocop (>= 0.50.0) - sysexits (~> 1.1) - hamlit (2.8.8) - temple (>= 0.8.0) - thor - tilt - hangouts-chat (0.0.5) - hashdiff (0.3.4) - hashie (3.5.7) - hashie-forbidden_attributes (0.1.1) - hashie (>= 3.0) - health_check (2.6.0) - rails (>= 4.0) - hipchat (1.5.2) - httparty - mimemagic - html-pipeline (2.8.4) - activesupport (>= 2) - nokogiri (>= 1.4) - html2text (0.2.0) - nokogiri (~> 1.6) - htmlentities (4.3.4) - http (3.3.0) - addressable (~> 2.3) - http-cookie (~> 1.0) - http-form_data (~> 2.0) - http_parser.rb (~> 0.6.0) - http-cookie (1.0.3) - domain_name (~> 0.5) - http-form_data (2.1.1) - http_parser.rb (0.6.0) - httparty (0.13.7) - json (~> 1.8) - multi_xml (>= 0.5.2) - httpclient (2.8.3) - i18n (0.9.5) - concurrent-ruby (~> 1.0) - icalendar (2.4.1) - ice_nine (0.11.2) - influxdb (0.2.3) - cause - json - ipaddress (0.8.3) - jira-ruby (1.4.1) - activesupport - multipart-post - oauth (~> 0.5, >= 0.5.0) - jquery-atwho-rails (1.3.2) - js_regex (2.2.1) - regexp_parser (>= 0.4.11, <= 0.5.0) - json (1.8.6) - json-jwt (1.9.4) - activesupport - aes_key_wrap - bindata - json-schema (2.8.0) - addressable (>= 2.4) - jwt (1.5.6) - kaminari (1.0.1) - activesupport (>= 4.1.0) - kaminari-actionview (= 1.0.1) - kaminari-activerecord (= 1.0.1) - kaminari-core (= 1.0.1) - kaminari-actionview (1.0.1) - actionview - kaminari-core (= 1.0.1) - kaminari-activerecord (1.0.1) - activerecord - kaminari-core (= 1.0.1) - kaminari-core (1.0.1) - kgio (2.10.0) - knapsack (1.17.0) - rake - kubeclient (4.0.0) - http (~> 3.0) - recursive-open-struct (~> 1.0, >= 1.0.4) - rest-client (~> 2.0) - launchy (2.4.3) - addressable (~> 2.3) - letter_opener (1.4.1) - launchy (~> 2.2) - letter_opener_web (1.3.0) - actionmailer (>= 3.2) - letter_opener (~> 1.0) - railties (>= 3.2) - license_finder (5.4.0) - bundler - rubyzip - thor - toml (= 0.2.0) - with_env (= 1.1.0) - xml-simple - licensee (8.9.2) - rugged (~> 0.24) - locale (2.1.2) - lograge (0.10.0) - actionpack (>= 4) - activesupport (>= 4) - railties (>= 4) - request_store (~> 1.0) - loofah (2.2.3) - crass (~> 1.0.2) - nokogiri (>= 1.5.9) - mail (2.7.0) - mini_mime (>= 0.1.1) - mail_room (0.9.1) - memoist (0.16.0) - memoizable (0.4.2) - thread_safe (~> 0.3, >= 0.3.1) - method_source (0.9.0) - mime-types (3.2.2) - mime-types-data (~> 3.2015) - mime-types-data (3.2018.0812) - mimemagic (0.3.2) - mini_magick (4.8.0) - mini_mime (1.0.1) - mini_portile2 (2.3.0) - minitest (5.7.0) - msgpack (1.2.4) - multi_json (1.13.1) - multi_xml (0.6.0) - multipart-post (2.0.0) - mustermann (1.0.3) - mustermann-grape (1.0.0) - mustermann (~> 1.0.0) - mysql2 (0.4.10) - nakayoshi_fork (0.0.4) - net-ldap (0.16.0) - net-ssh (5.0.1) - netrc (0.11.0) - nokogiri (1.8.5) - mini_portile2 (~> 2.3.0) - nokogumbo (1.5.0) - nokogiri - numerizer (0.1.1) - oauth (0.5.4) - oauth2 (1.4.0) - faraday (>= 0.8, < 0.13) - jwt (~> 1.0) - multi_json (~> 1.3) - multi_xml (~> 0.5) - rack (>= 1.2, < 3) - octokit (4.9.0) - sawyer (~> 0.8.0, >= 0.5.3) - omniauth (1.8.1) - hashie (>= 3.4.6, < 3.6.0) - rack (>= 1.6.2, < 3) - omniauth-auth0 (2.0.0) - omniauth-oauth2 (~> 1.4) - omniauth-authentiq (0.3.3) - jwt (>= 1.5) - omniauth-oauth2 (>= 1.5) - omniauth-azure-oauth2 (0.0.9) - jwt (~> 1.0) - omniauth (~> 1.0) - omniauth-oauth2 (~> 1.4) - omniauth-cas3 (1.1.4) - addressable (~> 2.3) - nokogiri (~> 1.7, >= 1.7.1) - omniauth (~> 1.2) - omniauth-facebook (4.0.0) - omniauth-oauth2 (~> 1.2) - omniauth-github (1.3.0) - omniauth (~> 1.5) - omniauth-oauth2 (>= 1.4.0, < 2.0) - omniauth-gitlab (1.0.3) - omniauth (~> 1.0) - omniauth-oauth2 (~> 1.0) - omniauth-google-oauth2 (0.5.3) - jwt (>= 1.5) - omniauth (>= 1.1.1) - omniauth-oauth2 (>= 1.5) - omniauth-kerberos (0.3.0) - omniauth-multipassword - timfel-krb5-auth (~> 0.8) - omniauth-multipassword (0.4.2) - omniauth (~> 1.0) - omniauth-oauth (1.1.0) - oauth - omniauth (~> 1.0) - omniauth-oauth2 (1.5.0) - oauth2 (~> 1.1) - omniauth (~> 1.2) - omniauth-oauth2-generic (0.2.2) - omniauth-oauth2 (~> 1.0) - omniauth-saml (1.10.0) - omniauth (~> 1.3, >= 1.3.2) - ruby-saml (~> 1.7) - omniauth-shibboleth (1.3.0) - omniauth (>= 1.0.0) - omniauth-twitter (1.4.0) - omniauth-oauth (~> 1.1) - rack - omniauth_crowd (2.2.3) - activesupport - nokogiri (>= 1.4.4) - omniauth (~> 1.0) - org-ruby (0.9.12) - rubypants (~> 0.2) - orm_adapter (0.5.0) - os (1.0.0) - parallel (1.12.1) - parser (2.5.3.0) - ast (~> 2.4.0) - parslet (1.8.2) - peek (1.0.1) - concurrent-ruby (>= 0.9.0) - concurrent-ruby-ext (>= 0.9.0) - railties (>= 4.0.0) - peek-gc (0.0.2) - peek - peek-mysql2 (1.1.0) - atomic (>= 1.0.0) - mysql2 - peek - peek-pg (1.3.0) - concurrent-ruby - concurrent-ruby-ext - peek - pg - peek-rblineprof (0.2.0) - peek - rblineprof - peek-redis (1.2.0) - atomic (>= 1.0.0) - peek - redis - pg (0.18.4) - po_to_json (1.0.1) - json (>= 1.6.0) - powerpack (0.1.1) - premailer (1.10.4) - addressable - css_parser (>= 1.4.10) - htmlentities (>= 4.0.0) - premailer-rails (1.9.7) - actionmailer (>= 3, < 6) - premailer (~> 1.7, >= 1.7.9) - proc_to_ast (0.1.0) - coderay - parser - unparser - procto (0.0.3) - prometheus-client-mmap (0.9.4) - pry (0.11.3) - coderay (~> 1.1.0) - method_source (~> 0.9.0) - pry-byebug (3.4.3) - byebug (>= 9.0, < 9.1) - pry (~> 0.10) - pry-rails (0.3.6) - pry (>= 0.10.4) - public_suffix (3.0.3) - puma (3.12.0) - puma_worker_killer (0.1.0) - get_process_mem (~> 0.2) - puma (>= 2.7, < 4) - pyu-ruby-sasl (0.0.3.3) - rack (1.6.11) - rack-accept (0.4.5) - rack (>= 0.4) - rack-attack (4.4.1) - rack - rack-cors (1.0.2) - rack-oauth2 (1.2.3) - activesupport (>= 2.3) - attr_required (>= 0.0.5) - httpclient (>= 2.4) - multi_json (>= 1.3.6) - rack (>= 1.1) - rack-protection (2.0.4) - rack - rack-proxy (0.6.0) - rack - rack-test (0.6.3) - rack (>= 1.0) - rails (4.2.11) - actionmailer (= 4.2.11) - actionpack (= 4.2.11) - actionview (= 4.2.11) - activejob (= 4.2.11) - activemodel (= 4.2.11) - activerecord (= 4.2.11) - activesupport (= 4.2.11) - bundler (>= 1.3.0, < 2.0) - railties (= 4.2.11) - sprockets-rails - rails-deprecated_sanitizer (1.0.3) - activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.9) - activesupport (>= 4.2.0, < 5.0) - nokogiri (~> 1.6) - rails-deprecated_sanitizer (>= 1.0.1) - rails-html-sanitizer (1.0.4) - loofah (~> 2.2, >= 2.2.2) - rails-i18n (4.0.9) - i18n (~> 0.7) - railties (~> 4.0) - railties (4.2.10) - actionpack (= 4.2.10) - activesupport (= 4.2.10) - rake (>= 0.8.7) - thor (>= 0.18.1, < 2.0) - rainbow (3.0.0) - raindrops (0.18.0) - rake (12.3.1) - rb-fsevent (0.10.2) - rb-inotify (0.9.10) - ffi (>= 0.5.0, < 2) - rblineprof (0.3.6) - debugger-ruby_core_source (~> 1.3) - rbtrace (0.4.10) - ffi (>= 1.0.6) - msgpack (>= 0.4.3) - trollop (>= 1.16.2) - rdoc (6.0.4) - re2 (1.1.1) - recaptcha (3.0.0) - json - recursive-open-struct (1.1.0) - redcarpet (3.4.0) - redis (3.3.5) - redis-actionpack (5.0.2) - actionpack (>= 4.0, < 6) - redis-rack (>= 1, < 3) - redis-store (>= 1.1.0, < 2) - redis-activesupport (5.0.4) - activesupport (>= 3, < 6) - redis-store (>= 1.3, < 2) - redis-namespace (1.6.0) - redis (>= 3.0.4) - redis-rack (2.0.4) - rack (>= 1.5, < 3) - redis-store (>= 1.2, < 2) - redis-rails (5.0.2) - redis-actionpack (>= 5.0, < 6) - redis-activesupport (>= 5.0, < 6) - redis-store (>= 1.2, < 2) - redis-store (1.6.0) - redis (>= 2.2, < 5) - regexp_parser (0.5.0) - representable (3.0.4) - declarative (< 0.1.0) - declarative-option (< 0.2.0) - uber (< 0.2.0) - request_store (1.3.1) - responders (2.4.0) - actionpack (>= 4.2.0, < 5.3) - railties (>= 4.2.0, < 5.3) - rest-client (2.0.2) - http-cookie (>= 1.0.2, < 2.0) - mime-types (>= 1.16, < 4.0) - netrc (~> 0.8) - retriable (3.1.2) - rinku (2.0.0) - rotp (2.1.2) - rouge (3.3.0) - rqrcode (0.7.0) - chunky_png - rqrcode-rails3 (0.1.7) - rqrcode (>= 0.4.2) - rspec (3.7.0) - rspec-core (~> 3.7.0) - rspec-expectations (~> 3.7.0) - rspec-mocks (~> 3.7.0) - rspec-core (3.7.1) - rspec-support (~> 3.7.0) - rspec-expectations (3.7.0) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.7.0) - rspec-mocks (3.7.0) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.7.0) - rspec-parameterized (0.4.1) - binding_ninja (>= 0.2.1) - parser - proc_to_ast - rspec (>= 2.13, < 4) - unparser - rspec-rails (3.7.2) - actionpack (>= 3.0) - activesupport (>= 3.0) - railties (>= 3.0) - rspec-core (~> 3.7.0) - rspec-expectations (~> 3.7.0) - rspec-mocks (~> 3.7.0) - rspec-support (~> 3.7.0) - rspec-retry (0.4.5) - rspec-core - rspec-set (0.1.3) - rspec-support (3.7.1) - rspec_junit_formatter (0.2.3) - builder (< 4) - rspec-core (>= 2, < 4, != 2.12.0) - rspec_profiling (0.0.5) - activerecord - pg - rails - sqlite3 - rubocop (0.54.0) - parallel (~> 1.10) - parser (>= 2.5) - powerpack (~> 0.1) - rainbow (>= 2.2.2, < 4.0) - ruby-progressbar (~> 1.7) - unicode-display_width (~> 1.0, >= 1.0.1) - rubocop-gitlab-security (0.1.1) - rubocop (>= 0.51) - rubocop-rspec (1.22.2) - rubocop (>= 0.52.1) - ruby-enum (0.7.2) - i18n - ruby-fogbugz (0.2.1) - crack (~> 0.4) - ruby-prof (0.17.0) - ruby-progressbar (1.9.0) - ruby-saml (1.7.2) - nokogiri (>= 1.5.10) - ruby_parser (3.11.0) - sexp_processor (~> 4.9) - rubyntlm (0.6.2) - rubypants (0.2.0) - rubyzip (1.2.2) - rufus-scheduler (3.4.0) - et-orbi (~> 1.0) - rugged (0.27.5) - safe_yaml (1.0.4) - sanitize (4.6.6) - crass (~> 1.0.2) - nokogiri (>= 1.4.4) - nokogumbo (~> 1.4) - sass (3.5.5) - sass-listen (~> 4.0.0) - sass-listen (4.0.0) - rb-fsevent (~> 0.9, >= 0.9.4) - rb-inotify (~> 0.9, >= 0.9.7) - sass-rails (5.0.6) - railties (>= 4.0.0, < 6) - sass (~> 3.1) - sprockets (>= 2.8, < 4.0) - sprockets-rails (>= 2.0, < 4.0) - tilt (>= 1.1, < 3) - sawyer (0.8.1) - addressable (>= 2.3.5, < 2.6) - faraday (~> 0.8, < 1.0) - scss_lint (0.56.0) - rake (>= 0.9, < 13) - sass (~> 3.5.3) - seed-fu (2.3.7) - activerecord (>= 3.1) - activesupport (>= 3.1) - select2-rails (3.5.9.3) - thor (~> 0.14) - selenium-webdriver (3.12.0) - childprocess (~> 0.5) - rubyzip (~> 1.2) - sentry-raven (2.7.2) - faraday (>= 0.7.6, < 1.0) - settingslogic (2.0.9) - sexp_processor (4.11.0) - sham_rack (1.3.6) - rack - shoulda-matchers (3.1.2) - activesupport (>= 4.0.0) - sidekiq (5.2.3) - connection_pool (~> 2.2, >= 2.2.2) - rack-protection (>= 1.5.0) - redis (>= 3.3.5, < 5) - sidekiq-cron (0.6.0) - rufus-scheduler (>= 3.3.0) - sidekiq (>= 4.2.1) - signet (0.11.0) - addressable (~> 2.3) - faraday (~> 0.9) - jwt (>= 1.5, < 3.0) - multi_json (~> 1.10) - simple_po_parser (1.1.2) - simplecov (0.14.1) - docile (~> 1.1.0) - json (>= 1.8, < 3) - simplecov-html (~> 0.10.0) - simplecov-html (0.10.0) - slack-notifier (1.5.1) - spring (2.0.2) - activesupport (>= 4.2) - spring-commands-rspec (1.0.4) - spring (>= 0.9.1) - sprockets (3.7.2) - concurrent-ruby (~> 1.0) - rack (> 1, < 3) - sprockets-rails (3.2.1) - actionpack (>= 4.0) - activesupport (>= 4.0) - sprockets (>= 3.0.0) - sqlite3 (1.3.13) - sshkey (1.9.0) - stackprof (0.2.10) - state_machines (0.5.0) - state_machines-activemodel (0.5.1) - activemodel (>= 4.1, < 6.0) - state_machines (>= 0.5.0) - state_machines-activerecord (0.5.1) - activerecord (>= 4.1, < 6.0) - state_machines-activemodel (>= 0.5.0) - sys-filesystem (1.1.6) - ffi - sysexits (1.2.0) - temple (0.8.0) - test-prof (0.2.5) - test_after_commit (1.1.0) - activerecord (>= 3.2) - text (1.3.1) - thin (1.7.2) - daemons (~> 1.0, >= 1.0.9) - eventmachine (~> 1.0, >= 1.0.4) - rack (>= 1, < 3) - thor (0.19.4) - thread_safe (0.3.6) - tilt (2.0.8) - timecop (0.8.1) - timfel-krb5-auth (0.8.3) - toml (0.2.0) - parslet (~> 1.8.0) - toml-rb (1.0.0) - citrus (~> 3.0, > 3.0) - trollop (2.1.3) - truncato (0.7.10) - htmlentities (~> 4.3.1) - nokogiri (~> 1.8.0, >= 1.7.0) - tzinfo (1.2.5) - thread_safe (~> 0.1) - u2f (0.2.1) - uber (0.1.0) - uglifier (2.7.2) - execjs (>= 0.3.0) - json (>= 1.8.0) - unf (0.1.4) - unf_ext - unf_ext (0.0.7.5) - unicode-display_width (1.3.2) - unicorn (5.1.0) - kgio (~> 2.6) - raindrops (~> 0.7) - unicorn-worker-killer (0.4.4) - get_process_mem (~> 0) - unicorn (>= 4, < 6) - uniform_notifier (1.10.0) - unparser (0.4.2) - abstract_type (~> 0.0.7) - adamantium (~> 0.2.0) - concord (~> 0.1.5) - diff-lcs (~> 1.3) - equalizer (~> 0.0.9) - parser (>= 2.3.1.2, < 2.6) - procto (~> 0.0.2) - validates_hostname (1.0.6) - activerecord (>= 3.0) - activesupport (>= 3.0) - version_sorter (2.1.0) - virtus (1.0.5) - axiom-types (~> 0.1) - coercible (~> 1.0) - descendants_tracker (~> 0.0, >= 0.0.3) - equalizer (~> 0.0, >= 0.0.9) - vmstat (2.3.0) - warden (1.2.7) - rack (>= 1.0) - webmock (2.3.2) - addressable (>= 2.3.6) - crack (>= 0.3.2) - hashdiff - webpack-rails (0.9.11) - railties (>= 3.2.0) - wikicloth (0.8.1) - builder - expression_parser - rinku - with_env (1.1.0) - xml-simple (1.1.5) - xpath (2.1.0) - nokogiri (~> 1.3) - -PLATFORMS - ruby - -DEPENDENCIES - RedCloth (~> 4.3.2) - ace-rails-ap (~> 4.1.0) - activerecord_sane_schema_dumper (= 0.2) - acts-as-taggable-on (~> 5.0) - addressable (~> 2.5.2) - akismet (~> 2.0) - asana (~> 0.8.1) - asciidoctor (~> 1.5.8) - asciidoctor-plantuml (= 0.0.8) - attr_encrypted (~> 3.1.0) - awesome_print - babosa (~> 1.0.2) - base32 (~> 0.3.0) - batch-loader (~> 1.2.2) - bcrypt_pbkdf (~> 1.0) - benchmark-ips (~> 2.3.0) - better_errors (~> 2.5.0) - binding_of_caller (~> 0.8.0) - bootsnap (~> 1.3) - bootstrap_form (~> 2.7.0) - brakeman (~> 4.2) - browser (~> 2.5) - bullet (~> 5.5.0) - bundler-audit (~> 0.5.0) - capybara (~> 2.15) - capybara-screenshot (~> 1.0.0) - carrierwave (= 1.2.3) - charlock_holmes (~> 0.7.5) - chronic (~> 0.10.2) - chronic_duration (~> 0.10.6) - commonmarker (~> 0.17) - concurrent-ruby (~> 1.1) - connection_pool (~> 2.0) - creole (~> 0.5.0) - database_cleaner (~> 1.5.0) - deckar01-task_list (= 2.0.0) - default_value_for (~> 3.0.0) - device_detector - devise (~> 4.4) - devise-two-factor (~> 3.0.0) - diffy (~> 3.1.0) - discordrb-webhooks-blackst0ne (~> 3.3) - doorkeeper (~> 4.3) - doorkeeper-openid_connect (~> 1.5) - ed25519 (~> 1.2) - email_reply_trimmer (~> 0.1) - email_spec (~> 2.2.0) - escape_utils (~> 1.1) - factory_bot_rails (~> 4.8.2) - faraday (~> 0.12) - fast_blank - ffaker (~> 2.10) - flipper (~> 0.13.0) - flipper-active_record (~> 0.13.0) - flipper-active_support_cache_store (~> 0.13.0) - flowdock (~> 0.7) - fog-aliyun (~> 0.2.0) - fog-aws (~> 2.0.1) - fog-core (~> 1.44) - fog-google (~> 1.7.1) - fog-local (~> 0.3) - fog-openstack (~> 0.1) - fog-rackspace (~> 0.1.1) - font-awesome-rails (~> 4.7) - foreman (~> 0.84.0) - fuubar (~> 2.2.0) - gemojione (~> 3.3) - gettext (~> 3.2.2) - gettext_i18n_rails (~> 1.8.0) - gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 1.3.0) - github-markup (~> 1.7.0) - gitlab-markup (~> 1.6.5) - gitlab-sidekiq-fetcher - gitlab-styles (~> 2.4) - gitlab_omniauth-ldap (~> 2.0.4) - gon (~> 6.2) - google-api-client (~> 0.23) - google-protobuf (~> 3.6) - gpgme (~> 2.0.18) - grape (~> 1.1.0) - grape-entity (~> 0.7.1) - grape-path-helpers (~> 1.0) - grape_logging (~> 1.7) - graphiql-rails (~> 1.4.10) - graphql (~> 1.8.0) - grpc (~> 1.15.0) - haml_lint (~> 0.28.0) - hamlit (~> 2.8.8) - hangouts-chat (~> 0.0.5) - hashie-forbidden_attributes - health_check (~> 2.6.0) - hipchat (~> 1.5.0) - html-pipeline (~> 2.8) - html2text - httparty (~> 0.13.3) - icalendar - influxdb (~> 0.2) - jira-ruby (~> 1.4) - jquery-atwho-rails (~> 1.3.2) - js_regex (~> 2.2.1) - json-schema (~> 2.8.0) - jwt (~> 1.5.6) - kaminari (~> 1.0) - knapsack (~> 1.17) - kubeclient (~> 4.0.0) - letter_opener_web (~> 1.3.0) - license_finder (~> 5.4) - licensee (~> 8.9) - lograge (~> 0.5) - loofah (~> 2.2) - mail_room (~> 0.9.1) - method_source (~> 0.8) - mimemagic (~> 0.3.2) - mini_magick - minitest (~> 5.7.0) - mysql2 (~> 0.4.10) - nakayoshi_fork (~> 0.0.4) - net-ldap - net-ssh (~> 5.0) - nokogiri (~> 1.8.2) - oauth2 (~> 1.4) - octokit (~> 4.9) - omniauth (~> 1.8) - omniauth-auth0 (~> 2.0.0) - omniauth-authentiq (~> 0.3.3) - omniauth-azure-oauth2 (~> 0.0.9) - omniauth-cas3 (~> 1.1.4) - omniauth-facebook (~> 4.0.0) - omniauth-github (~> 1.3) - omniauth-gitlab (~> 1.0.2) - omniauth-google-oauth2 (~> 0.5.3) - omniauth-kerberos (~> 0.3.0) - omniauth-oauth2-generic (~> 0.2.2) - omniauth-saml (~> 1.10) - omniauth-shibboleth (~> 1.3.0) - omniauth-twitter (~> 1.4) - omniauth_crowd (~> 2.2.0) - org-ruby (~> 0.9.12) - peek (~> 1.0.1) - peek-gc (~> 0.0.2) - peek-mysql2 (~> 1.1.0) - peek-pg (~> 1.3.0) - peek-rblineprof (~> 0.2.0) - peek-redis (~> 1.2.0) - pg (~> 0.18.2) - premailer-rails (~> 1.9.7) - prometheus-client-mmap (~> 0.9.4) - pry-byebug (~> 3.4.1) - pry-rails (~> 0.3.4) - puma (~> 3.12) - puma_worker_killer - rack (= 1.6.11) - rack-attack (~> 4.4.1) - rack-cors (~> 1.0.0) - rack-oauth2 (~> 1.2.1) - rack-proxy (~> 0.6.0) - rails (= 4.2.11) - rails-deprecated_sanitizer (~> 1.0.3) - rails-i18n (~> 4.0.9) - rainbow (~> 3.0) - raindrops (~> 0.18) - rblineprof (~> 0.3.6) - rbtrace (~> 0.4) - rdoc (~> 6.0) - re2 (~> 1.1.1) - recaptcha (~> 3.0) - redcarpet (~> 3.4) - redis (~> 3.2) - redis-namespace (~> 1.6.0) - redis-rails (~> 5.0.2) - request_store (~> 1.3) - responders (~> 2.0) - rouge (~> 3.1) - rqrcode-rails3 (~> 0.1.7) - rspec-parameterized - rspec-rails (~> 3.7.0) - rspec-retry (~> 0.4.5) - rspec-set (~> 0.1.3) - rspec_junit_formatter - rspec_profiling (~> 0.0.5) - rubocop (~> 0.54.0) - rubocop-rspec (~> 1.22.1) - ruby-fogbugz (~> 0.2.1) - ruby-prof (~> 0.17.0) - ruby-progressbar - ruby_parser (~> 3.8) - rufus-scheduler (~> 3.4) - rugged (~> 0.27) - sanitize (~> 4.6) - sass (~> 3.5) - sass-rails (~> 5.0.6) - scss_lint (~> 0.56.0) - seed-fu (~> 2.3.7) - select2-rails (~> 3.5.9) - selenium-webdriver (~> 3.12) - sentry-raven (~> 2.7) - settingslogic (~> 2.0.9) - sham_rack (~> 1.3.6) - shoulda-matchers (~> 3.1.2) - sidekiq (~> 5.2.1) - sidekiq-cron (~> 0.6.0) - simple_po_parser (~> 1.1.2) - simplecov (~> 0.14.0) - slack-notifier (~> 1.5.1) - spring (~> 2.0.0) - spring-commands-rspec (~> 1.0.4) - sprockets (~> 3.7.0) - sshkey (~> 1.9.0) - stackprof (~> 0.2.10) - state_machines-activerecord (~> 0.5.1) - sys-filesystem (~> 1.1.6) - test-prof (~> 0.2.5) - test_after_commit (~> 1.1) - thin (~> 1.7.0) - timecop (~> 0.8.0) - toml-rb (~> 1.0.0) - truncato (~> 0.7.9) - u2f (~> 0.2.1) - uglifier (~> 2.7.2) - unf (~> 0.1.4) - unicorn (~> 5.1.0) - unicorn-worker-killer (~> 0.4.4) - validates_hostname (~> 1.0.6) - version_sorter (~> 2.1.0) - virtus (~> 1.0.1) - vmstat (~> 2.3.0) - webmock (~> 2.3.2) - webpack-rails (~> 0.9.10) - wikicloth (= 0.8.1) - -BUNDLED WITH - 1.17.1 diff --git a/bin/rails b/bin/rails index d21b64b3007..07396602377 100755 --- a/bin/rails +++ b/bin/rails @@ -1,14 +1,4 @@ #!/usr/bin/env ruby - -# Remove this block when upgraded to rails 5.0. -if %w[0 false].include?(ENV["RAILS5"]) - begin - load File.expand_path('../spring', __FILE__) - rescue LoadError => e - raise unless e.message.include?('spring') - end -end - APP_PATH = File.expand_path('../config/application', __dir__) require_relative '../config/boot' require 'rails/commands' @@ -1,14 +1,4 @@ #!/usr/bin/env ruby - -# Remove this block when upgraded to rails 5.0. -if %w[0 false].include?(ENV["RAILS5"]) - begin - load File.expand_path('../spring', __FILE__) - rescue LoadError => e - raise unless e.message.include?('spring') - end -end - require_relative '../config/boot' require 'rake' Rake.application.run diff --git a/bin/rspec b/bin/rspec index b0770e30a70..4236753c9c1 100755 --- a/bin/rspec +++ b/bin/rspec @@ -1,10 +1,5 @@ #!/usr/bin/env ruby -# Remove these two lines below when upgraded to rails 5.0. -# Allow run `rspec` command as `RAILS5=1 rspec ...` instead of `BUNDLE_GEMFILE=Gemfile.rails5 rspec ...` -gemfile = %w[0 false].include?(ENV["RAILS5"]) ? "Gemfile.rails4" : "Gemfile" -ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../#{gemfile}", __dir__) - begin load File.expand_path('../spring', __FILE__) rescue LoadError => e diff --git a/bin/setup b/bin/setup index 34bb667087a..883825bc0a2 100755 --- a/bin/setup +++ b/bin/setup @@ -1,18 +1,12 @@ #!/usr/bin/env ruby -def rails5? - !%w[0 false].include?(ENV["RAILS5"]) -end - require "pathname" # path to your application root. APP_ROOT = Pathname.new File.expand_path("../../", __FILE__) -if rails5? - def system!(*args) - system(*args) || abort("\n== Command #{args} failed ==") - end +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") end Dir.chdir APP_ROOT do @@ -20,14 +14,8 @@ Dir.chdir APP_ROOT do # Add necessary setup steps to this file: puts "== Installing dependencies ==" - - if rails5? - system! "gem install bundler --conservative" - system("bundle check") || system!("bundle install") - else - system "gem install bundler --conservative" - system "bundle check || bundle install" - end + system! "gem install bundler --conservative" + system("bundle check") || system!("bundle install") # puts "\n== Copying sample files ==" # unless File.exist?("config/database.yml") @@ -35,27 +23,11 @@ Dir.chdir APP_ROOT do # end puts "\n== Preparing database ==" - - if rails5? - system! "bin/rails db:setup" - else - system "bin/rake db:reset" - end + system! "bin/rails db:setup" puts "\n== Removing old logs and tempfiles ==" - - if rails5? - system! "bin/rails log:clear tmp:clear" - else - system "rm -f log/*" - system "rm -rf tmp/cache" - end + system! "bin/rails log:clear tmp:clear" puts "\n== Restarting application server ==" - - if rails5? - system! "bin/rails restart" - else - system "touch tmp/restart.txt" - end + system! "bin/rails restart" end diff --git a/changelogs/unreleased/remove-rails4-support.yml b/changelogs/unreleased/remove-rails4-support.yml new file mode 100644 index 00000000000..a05c913a70c --- /dev/null +++ b/changelogs/unreleased/remove-rails4-support.yml @@ -0,0 +1,5 @@ +--- +title: Remove rails 4 support in CI, Gemfiles, bin/ and config/ +merge_request: 23717 +author: Jasper Maes +type: other diff --git a/config/application.rb b/config/application.rb index f10b8ed5bd2..720196b945e 100644 --- a/config/application.rb +++ b/config/application.rb @@ -8,7 +8,7 @@ module Gitlab # This method is used for smooth upgrading from the current Rails 4.x to Rails 5.0. # https://gitlab.com/gitlab-org/gitlab-ce/issues/14286 def self.rails5? - !%w[0 false].include?(ENV["RAILS5"]) + true end class Application < Rails::Application @@ -26,9 +26,6 @@ module Gitlab # setting disabled require_dependency Rails.root.join('lib/mysql_zero_date') - # This can be removed when we drop support for rails 4 - require_dependency Rails.root.join('lib/rails4_migration_version') - # Settings in config/environments/* take precedence over those specified here. # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. @@ -86,7 +83,7 @@ module Gitlab # namespaces/users. # https://github.com/rails/rails/blob/5-0-stable/actioncable/lib/action_cable.rb#L38 # Please change this value when configuring ActionCable for real usage. - config.action_cable.mount_path = "/-/cable" if rails5? + config.action_cable.mount_path = "/-/cable" # Configure sensitive parameters which will be filtered from the log file. # @@ -213,8 +210,6 @@ module Gitlab config.cache_store = :redis_store, caching_config_hash - config.active_record.raise_in_transactional_callbacks = true unless rails5? - config.active_job.queue_adapter = :sidekiq # This is needed for gitlab-shell diff --git a/config/boot.rb b/config/boot.rb index 725473ac7f6..2811f0e6188 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,11 +1,4 @@ -def rails5? - !%w[0 false].include?(ENV["RAILS5"]) -end - -require 'rubygems' unless rails5? - -gemfile = rails5? ? "Gemfile" : "Gemfile.rails4" -ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../#{gemfile}", __dir__) +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) # Set up gems listed in the Gemfile. require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) diff --git a/config/environment.rb b/config/environment.rb index 3a52656a2c1..7e55c7803d3 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -1,11 +1,6 @@ # Load the rails application -# Remove this condition when upgraded to rails 5.0. -if %w[0 false].include?(ENV["RAILS5"]) - require File.expand_path('application', __dir__) -else - require_relative 'application' -end +require_relative 'application' # Initialize the rails application Rails.application.initialize! diff --git a/config/environments/production.rb b/config/environments/production.rb index 49a4e873093..09bcf49a9a5 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -9,11 +9,7 @@ Rails.application.configure do config.action_controller.perform_caching = true # Disable Rails's static asset server (Apache or nginx will already do this) - if Gitlab.rails5? - config.public_file_server.enabled = false - else - config.serve_static_files = false - end + config.public_file_server.enabled = false # Compress JavaScripts and CSS. config.assets.js_compressor = :uglifier diff --git a/config/environments/test.rb b/config/environments/test.rb index 072f93150a3..3461099253a 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -19,13 +19,8 @@ Rails.application.configure do # Configure static asset server for tests with Cache-Control for performance config.assets.compile = false if ENV['CI'] - if Gitlab.rails5? - config.public_file_server.enabled = true - config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' } - else - config.serve_static_files = true - config.static_cache_control = "public, max-age=3600" - end + config.public_file_server.enabled = true + config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' } # Show full error reports and disable caching config.consider_all_requests_local = true diff --git a/config/initializers/active_record_array_type_casting.rb b/config/initializers/active_record_array_type_casting.rb deleted file mode 100644 index a149e048ee2..00000000000 --- a/config/initializers/active_record_array_type_casting.rb +++ /dev/null @@ -1,23 +0,0 @@ -# Remove this initializer when upgraded to Rails 5.0 -unless Gitlab.rails5? - module ActiveRecord - class PredicateBuilder - class ArrayHandler - module TypeCasting - def call(attribute, value) - # This is necessary because by default ActiveRecord does not respect - # custom type definitions (like our `ShaAttribute`) when providing an - # array in `where`, like in `where(commit_sha: [sha1, sha2, sha3])`. - model = attribute.relation&.engine - type = model.user_provided_columns[attribute.name] if model - value = value.map { |value| type.type_cast_for_database(value) } if type - - super(attribute, value) - end - end - - prepend TypeCasting - end - end - end -end diff --git a/config/initializers/active_record_avoid_type_casting_in_uniqueness_validator.rb b/config/initializers/active_record_avoid_type_casting_in_uniqueness_validator.rb index ef4abb77bd7..3e765469995 100644 --- a/config/initializers/active_record_avoid_type_casting_in_uniqueness_validator.rb +++ b/config/initializers/active_record_avoid_type_casting_in_uniqueness_validator.rb @@ -20,75 +20,73 @@ # # This bug was fixed in Rails 5.1 by https://github.com/rails/rails/pull/24745/commits/aa062318c451512035c10898a1af95943b1a3803 -if Gitlab.rails5? - if Rails.version.start_with?("5.1") - raise "Remove this monkey patch: #{__FILE__}" - end +if Rails.version.start_with?("5.1") + raise "Remove this monkey patch: #{__FILE__}" +end - # Copy-paste from https://github.com/kamipo/rails/blob/aa062318c451512035c10898a1af95943b1a3803/activerecord/lib/active_record/validations/uniqueness.rb - # including local fixes to make Rubocop happy again. - module ActiveRecord - module Validations - class UniquenessValidator < ActiveModel::EachValidator # :nodoc: - def validate_each(record, attribute, value) - finder_class = find_finder_class_for(record) - table = finder_class.arel_table - value = map_enum_attribute(finder_class, attribute, value) +# Copy-paste from https://github.com/kamipo/rails/blob/aa062318c451512035c10898a1af95943b1a3803/activerecord/lib/active_record/validations/uniqueness.rb +# including local fixes to make Rubocop happy again. +module ActiveRecord + module Validations + class UniquenessValidator < ActiveModel::EachValidator # :nodoc: + def validate_each(record, attribute, value) + finder_class = find_finder_class_for(record) + table = finder_class.arel_table + value = map_enum_attribute(finder_class, attribute, value) - relation = build_relation(finder_class, table, attribute, value) + relation = build_relation(finder_class, table, attribute, value) - if record.persisted? - if finder_class.primary_key - relation = relation.where.not(finder_class.primary_key => record.id_was || record.id) - else - raise UnknownPrimaryKey.new(finder_class, "Can not validate uniqueness for persisted record without primary key.") - end + if record.persisted? + if finder_class.primary_key + relation = relation.where.not(finder_class.primary_key => record.id_was || record.id) + else + raise UnknownPrimaryKey.new(finder_class, "Can not validate uniqueness for persisted record without primary key.") end + end - relation = scope_relation(record, table, relation) - relation = relation.merge(options[:conditions]) if options[:conditions] + relation = scope_relation(record, table, relation) + relation = relation.merge(options[:conditions]) if options[:conditions] - if relation.exists? - error_options = options.except(:case_sensitive, :scope, :conditions) - error_options[:value] = value + if relation.exists? + error_options = options.except(:case_sensitive, :scope, :conditions) + error_options[:value] = value - record.errors.add(attribute, :taken, error_options) - end - rescue RangeError + record.errors.add(attribute, :taken, error_options) end + rescue RangeError + end - protected - - def build_relation(klass, table, attribute, value) #:nodoc: - if reflection = klass._reflect_on_association(attribute) - attribute = reflection.foreign_key - value = value.attributes[reflection.klass.primary_key] unless value.nil? - end + protected - # the attribute may be an aliased attribute - if klass.attribute_alias?(attribute) - attribute = klass.attribute_alias(attribute) - end + def build_relation(klass, table, attribute, value) #:nodoc: + if reflection = klass._reflect_on_association(attribute) + attribute = reflection.foreign_key + value = value.attributes[reflection.klass.primary_key] unless value.nil? + end - attribute_name = attribute.to_s + # the attribute may be an aliased attribute + if klass.attribute_alias?(attribute) + attribute = klass.attribute_alias(attribute) + end - column = klass.columns_hash[attribute_name] - cast_type = klass.type_for_attribute(attribute_name) + attribute_name = attribute.to_s - comparison = - if !options[:case_sensitive] && !value.nil? - # will use SQL LOWER function before comparison, unless it detects a case insensitive collation - klass.connection.case_insensitive_comparison(table, attribute, column, value) - else - klass.connection.case_sensitive_comparison(table, attribute, column, value) - end + column = klass.columns_hash[attribute_name] + cast_type = klass.type_for_attribute(attribute_name) - if value.nil? - klass.unscoped.where(comparison) + comparison = + if !options[:case_sensitive] && !value.nil? + # will use SQL LOWER function before comparison, unless it detects a case insensitive collation + klass.connection.case_insensitive_comparison(table, attribute, column, value) else - bind = Relation::QueryAttribute.new(attribute_name, value, cast_type) - klass.unscoped.where(comparison, bind) + klass.connection.case_sensitive_comparison(table, attribute, column, value) end + + if value.nil? + klass.unscoped.where(comparison) + else + bind = Relation::QueryAttribute.new(attribute_name, value, cast_type) + klass.unscoped.where(comparison, bind) end end end diff --git a/config/initializers/active_record_data_types.rb b/config/initializers/active_record_data_types.rb index 717e30b5b7e..e95157bfde5 100644 --- a/config/initializers/active_record_data_types.rb +++ b/config/initializers/active_record_data_types.rb @@ -65,7 +65,7 @@ elsif Gitlab::Database.mysql? prepend RegisterDateTimeWithTimeZone # Add the class `DateTimeWithTimeZone` so we can map `timestamp` to it. - class MysqlDateTimeWithTimeZone < (Gitlab.rails5? ? ActiveRecord::Type::DateTime : MysqlDateTime) + class MysqlDateTimeWithTimeZone < ActiveRecord::Type::DateTime def type :datetime_with_timezone end diff --git a/config/initializers/active_record_locking.rb b/config/initializers/active_record_locking.rb index 21ff323927b..bfe41e6029a 100644 --- a/config/initializers/active_record_locking.rb +++ b/config/initializers/active_record_locking.rb @@ -64,21 +64,13 @@ module ActiveRecord # This is patched because we want `lock_version` default to `NULL` # rather than `0` - if Gitlab.rails5? - class LockingType - def deserialize(value) - super - end - - def serialize(value) - super - end + class LockingType + def deserialize(value) + super end - else - class LockingType < SimpleDelegator - def type_cast_from_database(value) - super - end + + def serialize(value) + super end end end diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb deleted file mode 100644 index a65f8aecf9e..00000000000 --- a/config/initializers/application_controller_renderer.rb +++ /dev/null @@ -1,12 +0,0 @@ -# Remove this `if` condition when upgraded to rails 5.0. -# The body must be kept. -if Gitlab.rails5? - # Be sure to restart your server when you modify this file. - - # ActiveSupport::Reloader.to_prepare do - # ApplicationController.renderer.defaults.merge!( - # http_host: 'example.org', - # https: false - # ) - # end -end diff --git a/config/initializers/ar5_batching.rb b/config/initializers/ar5_batching.rb deleted file mode 100644 index 874455ce5af..00000000000 --- a/config/initializers/ar5_batching.rb +++ /dev/null @@ -1,40 +0,0 @@ -# Remove this file when upgraded to rails 5.0. -unless Gitlab.rails5? - module ActiveRecord - module Batches - # Differences from upstream: enumerator support was removed, and custom - # order/limit clauses are ignored without a warning. - def in_batches(of: 1000, start: nil, finish: nil, load: false) - raise "Must provide a block" unless block_given? - - relation = self.reorder(batch_order).limit(of) - relation = relation.where(arel_table[primary_key].gteq(start)) if start - relation = relation.where(arel_table[primary_key].lteq(finish)) if finish - batch_relation = relation - - loop do - if load - records = batch_relation.records - ids = records.map(&:id) - yielded_relation = self.where(primary_key => ids) - yielded_relation.load_records(records) - else - ids = batch_relation.pluck(primary_key) - yielded_relation = self.where(primary_key => ids) - end - - break if ids.empty? - - primary_key_offset = ids.last - raise ArgumentError.new("Primary key not included in the custom select clause") unless primary_key_offset - - yield yielded_relation - - break if ids.length < of - - batch_relation = relation.where(arel_table[primary_key].gt(primary_key_offset)) - end - end - end - end -end diff --git a/config/initializers/ar5_pg_10_support.rb b/config/initializers/ar5_pg_10_support.rb deleted file mode 100644 index 40548290ce8..00000000000 --- a/config/initializers/ar5_pg_10_support.rb +++ /dev/null @@ -1,58 +0,0 @@ -# Remove this file when upgraded to rails 5.0. -if !Gitlab.rails5? && Gitlab::Database.postgresql? - require 'active_record/connection_adapters/postgresql_adapter' - require 'active_record/connection_adapters/postgresql/schema_statements' - - # - # Monkey-patch the refused Rails 4.2 patch at https://github.com/rails/rails/pull/31330 - # - # Updates sequence logic to support PostgreSQL 10. - # - # rubocop:disable all - module ActiveRecord - module ConnectionAdapters - - # We need #postgresql_version to be public as in ActiveRecord 5 for seed_fu - # to work. In ActiveRecord 4, it is protected. - # https://github.com/mbleigh/seed-fu/issues/123 - class PostgreSQLAdapter - public :postgresql_version - end - - module PostgreSQL - module SchemaStatements - # Resets the sequence of a table's primary key to the maximum value. - def reset_pk_sequence!(table, pk = nil, sequence = nil) #:nodoc: - unless pk and sequence - default_pk, default_sequence = pk_and_sequence_for(table) - - pk ||= default_pk - sequence ||= default_sequence - end - - if @logger && pk && !sequence - @logger.warn "#{table} has primary key #{pk} with no default sequence" - end - - if pk && sequence - quoted_sequence = quote_table_name(sequence) - max_pk = select_value("SELECT MAX(#{quote_column_name pk}) FROM #{quote_table_name(table)}") - if max_pk.nil? - if postgresql_version >= 100000 - minvalue = select_value("SELECT seqmin FROM pg_sequence WHERE seqrelid = #{quote(quoted_sequence)}::regclass") - else - minvalue = select_value("SELECT min_value FROM #{quoted_sequence}") - end - end - - select_value <<-end_sql, 'SCHEMA' - SELECT setval(#{quote(quoted_sequence)}, #{max_pk ? max_pk : minvalue}, #{max_pk ? true : false}) - end_sql - end - end - end - end - end - end - # rubocop:enable all -end diff --git a/config/initializers/mysql_set_length_for_binary_indexes.rb b/config/initializers/mysql_set_length_for_binary_indexes.rb index 0445d8fcae2..552f3a20a95 100644 --- a/config/initializers/mysql_set_length_for_binary_indexes.rb +++ b/config/initializers/mysql_set_length_for_binary_indexes.rb @@ -2,28 +2,6 @@ # MySQL adapter apply a length of 20. Otherwise MySQL can't create an index on # binary columns. -# This module can be removed once a Rails 5 schema is used. -# It can't be wrapped in a check that checks Gitlab.rails5? because -# the old Rails 4 schema layout is still used -module MysqlSetLengthForBinaryIndex - def add_index(table_name, column_names, options = {}) - options[:length] ||= {} - Array(column_names).each do |column_name| - column = ActiveRecord::Base.connection.columns(table_name).find { |c| c.name == column_name } - - if column&.type == :binary - options[:length][column_name] = 20 - end - end - - super(table_name, column_names, options) - end -end - -if defined?(ActiveRecord::ConnectionAdapters::Mysql2Adapter) - ActiveRecord::ConnectionAdapters::Mysql2Adapter.send(:prepend, MysqlSetLengthForBinaryIndex) -end - module MysqlSetLengthForBinaryIndexAndIgnorePostgresOptionsForSchema # This method is used in Rails 5 schema loading as t.index def index(column_names, options = {}) @@ -34,15 +12,6 @@ module MysqlSetLengthForBinaryIndexAndIgnorePostgresOptionsForSchema return end - # when running rails 4 with rails 5 schema, rails 4 doesn't support multiple - # indexes on the same set of columns. Mysql doesn't support partial indexes, so if - # an index already exists and we add another index, skip it if it's partial: - # see https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/21492#note_102821326 - if !Gitlab.rails5? && indexes[column_names] && options[:where] - warn "WARNING: index on columns #{column_names} already exists and partial index is not supported, skipping." - return - end - options[:length] ||= {} Array(column_names).each do |column_name| column = columns.find { |c| c.name == column_name } @@ -56,14 +25,6 @@ module MysqlSetLengthForBinaryIndexAndIgnorePostgresOptionsForSchema end end -def mysql_adapter? - defined?(ActiveRecord::ConnectionAdapters::Mysql2Adapter) && ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters::Mysql2Adapter) -end - -if Gitlab.rails5? - if defined?(ActiveRecord::ConnectionAdapters::MySQL::TableDefinition) - ActiveRecord::ConnectionAdapters::MySQL::TableDefinition.send(:prepend, MysqlSetLengthForBinaryIndexAndIgnorePostgresOptionsForSchema) - end -elsif mysql_adapter? && defined?(ActiveRecord::ConnectionAdapters::TableDefinition) - ActiveRecord::ConnectionAdapters::TableDefinition.send(:prepend, MysqlSetLengthForBinaryIndexAndIgnorePostgresOptionsForSchema) +if defined?(ActiveRecord::ConnectionAdapters::MySQL::TableDefinition) + ActiveRecord::ConnectionAdapters::MySQL::TableDefinition.send(:prepend, MysqlSetLengthForBinaryIndexAndIgnorePostgresOptionsForSchema) end diff --git a/config/initializers/new_framework_defaults.rb b/config/initializers/new_framework_defaults.rb index 2d130bc0bf8..5adb9f7a4b4 100644 --- a/config/initializers/new_framework_defaults.rb +++ b/config/initializers/new_framework_defaults.rb @@ -1,29 +1,27 @@ # Remove this `if` condition when upgraded to rails 5.0. # The body must be kept. -if Gitlab.rails5? - # Be sure to restart your server when you modify this file. - # - # This file contains migration options to ease your Rails 5.0 upgrade. - # - # Once upgraded flip defaults one by one to migrate to the new default. - # - # Read the Guide for Upgrading Ruby on Rails for more info on each option. +# Be sure to restart your server when you modify this file. +# +# This file contains migration options to ease your Rails 5.0 upgrade. +# +# Once upgraded flip defaults one by one to migrate to the new default. +# +# Read the Guide for Upgrading Ruby on Rails for more info on each option. - Rails.application.config.action_controller.raise_on_unfiltered_parameters = true +Rails.application.config.action_controller.raise_on_unfiltered_parameters = true - # Enable per-form CSRF tokens. Previous versions had false. - Rails.application.config.action_controller.per_form_csrf_tokens = false +# Enable per-form CSRF tokens. Previous versions had false. +Rails.application.config.action_controller.per_form_csrf_tokens = false - # Enable origin-checking CSRF mitigation. Previous versions had false. - Rails.application.config.action_controller.forgery_protection_origin_check = false +# Enable origin-checking CSRF mitigation. Previous versions had false. +Rails.application.config.action_controller.forgery_protection_origin_check = false - # Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. - # Previous versions had false. - ActiveSupport.to_time_preserves_timezone = false +# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. +# Previous versions had false. +ActiveSupport.to_time_preserves_timezone = false - # Require `belongs_to` associations by default. Previous versions had false. - Rails.application.config.active_record.belongs_to_required_by_default = false +# Require `belongs_to` associations by default. Previous versions had false. +Rails.application.config.active_record.belongs_to_required_by_default = false - # Do not halt callback chains when a callback returns false. Previous versions had true. - ActiveSupport.halt_callback_chains_on_return_false = true -end +# Do not halt callback chains when a callback returns false. Previous versions had true. +ActiveSupport.halt_callback_chains_on_return_false = true diff --git a/config/initializers/postgresql_opclasses_support.rb b/config/initializers/postgresql_opclasses_support.rb index 5d643b75dd8..70b530415f5 100644 --- a/config/initializers/postgresql_opclasses_support.rb +++ b/config/initializers/postgresql_opclasses_support.rb @@ -41,10 +41,7 @@ module ActiveRecord # Abstract representation of an index definition on a table. Instances of # this type are typically created and returned by methods in database # adapters. e.g. ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter#indexes - attrs = [:table, :name, :unique, :columns, :lengths, :orders, :where, :type, :using, :opclasses] - - # In Rails 5 the second last attribute is newly `:comment` - attrs.insert(-2, :comment) if Gitlab.rails5? + attrs = [:table, :name, :unique, :columns, :lengths, :orders, :where, :type, :using, :comment, :opclasses] class IndexDefinition < Struct.new(*attrs) #:nodoc: end @@ -112,15 +109,8 @@ module ActiveRecord result.map do |row| index_name = row[0] - unique = if Gitlab.rails5? - row[1] - else - row[1] == 't' - end - indkey = row[2].split(" ") - if Gitlab.rails5? - indkey = indkey.map(&:to_i) - end + unique = row[1] + indkey = row[2].split(" ").map(&:to_i) inddef = row[3] oid = row[4] @@ -144,8 +134,7 @@ module ActiveRecord [column, opclass] if opclass end.compact] - index_attrs = [table_name, index_name, unique, column_names, [], orders, where, nil, using, opclasses] - index_attrs.insert(-2, nil) if Gitlab.rails5? # include index comment for Rails 5 + index_attrs = [table_name, index_name, unique, column_names, [], orders, where, nil, using, nil, opclasses] IndexDefinition.new(*index_attrs) end @@ -205,7 +194,7 @@ module ActiveRecord index_parts << "using: #{index.using.inspect}" if index.using index_parts << "type: #{index.type.inspect}" if index.type index_parts << "opclasses: #{index.opclasses.inspect}" if index.opclasses.present? - index_parts << "comment: #{index.comment.inspect}" if Gitlab.rails5? && index.comment + index_parts << "comment: #{index.comment.inspect}" if index.comment index_parts end diff --git a/config/initializers/static_files.rb b/config/initializers/static_files.rb index a0b8b68f3ef..e02f0868e9f 100644 --- a/config/initializers/static_files.rb +++ b/config/initializers/static_files.rb @@ -1,26 +1,17 @@ app = Rails.application -if (Gitlab.rails5? && app.config.public_file_server.enabled) || app.config.serve_static_files +if app.config.public_file_server.enabled # The `ActionDispatch::Static` middleware intercepts requests for static files # by checking if they exist in the `/public` directory. # We're replacing it with our `Gitlab::Middleware::Static` that does the same, # except ignoring `/uploads`, letting those go through to the GitLab Rails app. - if Gitlab.rails5? - app.config.middleware.swap( - ActionDispatch::Static, - Gitlab::Middleware::Static, - app.paths["public"].first, - headers: app.config.public_file_server.headers - ) - else - app.config.middleware.swap( - ActionDispatch::Static, - Gitlab::Middleware::Static, - app.paths["public"].first, - app.config.static_cache_control - ) - end + app.config.middleware.swap( + ActionDispatch::Static, + Gitlab::Middleware::Static, + app.paths["public"].first, + headers: app.config.public_file_server.headers + ) # If webpack-dev-server is configured, proxy webpack's public directory # instead of looking for static assets diff --git a/config/initializers/trusted_proxies.rb b/config/initializers/trusted_proxies.rb index ca2eed664ed..7af465d8443 100644 --- a/config/initializers/trusted_proxies.rb +++ b/config/initializers/trusted_proxies.rb @@ -26,12 +26,10 @@ Rails.application.config.action_dispatch.trusted_proxies = ( # A monkey patch to make trusted proxies work with Rails 5.0. # Inspired by https://github.com/rails/rails/issues/5223#issuecomment-263778719 # Remove this monkey patch when upstream is fixed. -if Gitlab.rails5? - module TrustedProxyMonkeyPatch - def ip - @ip ||= (get_header("action_dispatch.remote_ip") || super).to_s - end +module TrustedProxyMonkeyPatch + def ip + @ip ||= (get_header("action_dispatch.remote_ip") || super).to_s end - - ActionDispatch::Request.send(:include, TrustedProxyMonkeyPatch) end + +ActionDispatch::Request.send(:include, TrustedProxyMonkeyPatch) diff --git a/danger/gemfile/Dangerfile b/danger/gemfile/Dangerfile index 8ef4a464fe4..4e91abc371a 100644 --- a/danger/gemfile/Dangerfile +++ b/danger/gemfile/Dangerfile @@ -4,7 +4,7 @@ GEMFILE_LOCK_NOT_UPDATED_MESSAGE = <<~MSG.freeze Usually, when %<gemfile>s is updated, you should run ``` bundle install && \ - BUNDLE_GEMFILE=Gemfile.rails5 bundle install + bundle install ``` or diff --git a/lib/rails4_migration_version.rb b/lib/rails4_migration_version.rb deleted file mode 100644 index ae48734dfad..00000000000 --- a/lib/rails4_migration_version.rb +++ /dev/null @@ -1,16 +0,0 @@ -# rubocop:disable Naming/FileName -# frozen_string_literal: true - -# When switching to rails 5, we added migration version to all migration -# classes. This patch makes it possible to run versioned migrations -# also with rails 4 - -unless Gitlab.rails5? - module ActiveRecord - class Migration - def self.[](version) - Migration - end - end - end -end diff --git a/scripts/rails4-gemfile-lock-check b/scripts/rails4-gemfile-lock-check deleted file mode 100755 index a74a49874e1..00000000000 --- a/scripts/rails4-gemfile-lock-check +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -echo -e "=> Checking if Gemfile.rails4.lock is up-to-date...\\n" - -cp Gemfile.rails4.lock Gemfile.rails4.lock.orig -BUNDLE_GEMFILE=Gemfile.rails4 bundle install "$BUNDLE_INSTALL_FLAGS" -diff -u Gemfile.rails4.lock.orig Gemfile.rails4.lock >/dev/null 2>&1 - -if [ $? == 1 ] -then - diff -u Gemfile.rails4.lock.orig Gemfile.rails4.lock - - echo -e "\\nā ERROR: Gemfile.rails4.lock is not up-to-date! - Please run 'BUNDLE_GEMFILE=Gemfile.rails4 bundle install'\\n" >&2 - exit 1 -fi - -echo "ā Gemfile.rails4.lock is up-to-date" -exit 0 diff --git a/spec/lib/gitlab/database/migration_helpers_spec.rb b/spec/lib/gitlab/database/migration_helpers_spec.rb index 23f27939dd2..4e83b27e4a5 100644 --- a/spec/lib/gitlab/database/migration_helpers_spec.rb +++ b/spec/lib/gitlab/database/migration_helpers_spec.rb @@ -1338,12 +1338,7 @@ describe Gitlab::Database::MigrationHelpers do end describe '#index_exists_by_name?' do - # TODO: remove rails5-only after removing rails4 tests - # rails 4 can not handle multiple indexes on the same column set if - # index was added by 't.index' - t.index is used by default in schema.rb in - # rails 5. Let's run this test only in rails 5 env: - # see https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/21492#note_113602758 - it 'returns true if an index exists', :rails5 do + it 'returns true if an index exists' do expect(model.index_exists_by_name?(:projects, 'index_projects_on_path')) .to be_truthy end diff --git a/spec/lib/gitlab/database_spec.rb b/spec/lib/gitlab/database_spec.rb index fc295b2deff..0826bc3eeed 100644 --- a/spec/lib/gitlab/database_spec.rb +++ b/spec/lib/gitlab/database_spec.rb @@ -462,8 +462,7 @@ describe Gitlab::Database do expect(described_class.db_read_only?).to be_truthy end - # TODO: remove rails5-only tag after removing rails4 tests - it 'detects a read only database', :rails5 do + it 'detects a read only database' do allow(ActiveRecord::Base.connection).to receive(:execute).with('SELECT pg_is_in_recovery()').and_return([{ "pg_is_in_recovery" => true }]) expect(described_class.db_read_only?).to be_truthy @@ -475,8 +474,7 @@ describe Gitlab::Database do expect(described_class.db_read_only?).to be_falsey end - # TODO: remove rails5-only tag after removing rails4 tests - it 'detects a read write database', :rails5 do + it 'detects a read write database' do allow(ActiveRecord::Base.connection).to receive(:execute).with('SELECT pg_is_in_recovery()').and_return([{ "pg_is_in_recovery" => false }]) expect(described_class.db_read_only?).to be_falsey diff --git a/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb b/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb index efca8564894..25684ea9e2c 100644 --- a/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb +++ b/spec/lib/gitlab/github_import/importer/pull_request_importer_spec.rb @@ -240,12 +240,7 @@ describe Gitlab::GithubImport::Importer::PullRequestImporter, :clean_gitlab_redi .and_return(user.id) end - # TODO: remove rails5-only after removing rails4 tests - # rails 4 can not handle multiple indexes on the same column set if - # index was added by 't.index' - t.index is used by default in schema.rb in - # rails 5. Let's run this test only in rails 5 env: - # see https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/21492#note_113602758 - it 'returns the existing merge request', :rails5 do + it 'returns the existing merge request' do mr1, exists1 = importer.create_merge_request mr2, exists2 = importer.create_merge_request diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 3fedb9ed48c..cd69160be10 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -235,10 +235,6 @@ RSpec.configure do |config| example.run if Gitlab::Database.mysql? end - config.around(:each, :rails5) do |example| - example.run if Gitlab.rails5? - end - # This makes sure the `ApplicationController#can?` method is stubbed with the # original implementation for all view specs. config.before(:each, type: :view) do |