gitlab/bin/bundle not working properly
Overview
I've been having some issues with gdk update
in the last weeks. At first it seemed to be an intermittent error, but after debugging the issue I noticed that gitlab/bin/bundle
is not working as expected (at least on my machine). This is happening to me because I have on the top of my $PATH
the ./bin
$ echo $PATH
./bin:...
- If I ran a rake task with
bin/bundle exec rake
:
$ bin/bundle exec rake about
/Users/kassioborges/src/gdk/gitlab/app/models/application_setting_implementation.rb:7: warning: already initialized constant ApplicationSettingImplementation::STRING_LIST_SEPARATOR
/Users/kassioborges/src/gdk/gitlab/app/models/application_setting_implementation.rb:7: warning: previous definition of STRING_LIST_SEPARATOR was here
/Users/kassioborges/src/gdk/gitlab/app/models/application_setting_implementation.rb:16: warning: already initialized constant ApplicationSettingImplementation::FORBIDDEN_KEY_VALUE
/Users/kassioborges/src/gdk/gitlab/app/models/application_setting_implementation.rb:16: warning: previous definition of FORBIDDEN_KEY_VALUE was here
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/ssh_public_key.rb:5: warning: already initialized constant Gitlab::SSHPublicKey::Technology
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/ssh_public_key.rb:5: warning: previous definition of Technology was here
rake aborted!
NameError: uninitialized constant Net::SSH::Authentication::ED25519
Did you mean? Net::SSH::Authentication::ED25519Loader
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/ssh_public_key.rb:11:in `<class:SSHPublicKey>'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/ssh_public_key.rb:4:in `<module:Gitlab>'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/ssh_public_key.rb:3:in `<main>'
/Users/kassioborges/src/gdk/gitlab/app/models/application_setting_implementation.rb:17:in `<module:ApplicationSettingImplementation>'
/Users/kassioborges/src/gdk/gitlab/app/models/application_setting_implementation.rb:3:in `<main>'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/fake_application_settings.rb:10:in `<class:FakeApplicationSettings>'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/fake_application_settings.rb:9:in `<module:Gitlab>'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/fake_application_settings.rb:8:in `<main>'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/current_settings.rb:76:in `fake_application_settings'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/current_settings.rb:58:in `uncached_application_settings'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/current_settings.rb:42:in `ensure_application_settings!'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/current_settings.rb:15:in `block in current_application_settings'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/null_request_store.rb:34:in `fetch'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/safe_request_store.rb:12:in `fetch'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/current_settings.rb:15:in `current_application_settings'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/current_settings.rb:32:in `method_missing'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/metrics/prometheus.rb:98:in `prometheus_metrics_enabled_unmemoized'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/metrics/prometheus.rb:24:in `block in prometheus_metrics_enabled?'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/utils/strong_memoize.rb:28:in `strong_memoize'
/Users/kassioborges/src/gdk/gitlab/lib/gitlab/metrics/prometheus.rb:23:in `prometheus_metrics_enabled?'
/Users/kassioborges/src/gdk/gitlab/config/initializers/7_prometheus_metrics.rb:49:in `<main>'
/Users/kassioborges/src/gdk/gitlab/config/environment.rb:7:in `<main>'
bin/bundle:5:in `load'
bin/bundle:5:in `<main>'
Tasks: TOP => about => environment
(See full trace by running task with --trace)
- If I ran a rake task with
asdf exec bundle exec rake
:
$ asdf exec bundle exec rake about
About your application's environment
Rails version 6.1.4.4
Ruby version ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-darwin21]
RubyGems version 3.3.4
Rack version 2.2.3
JavaScript Runtime Node.js (V8)
Middleware Raven::Rack, ActionDispatch::RequestId, Labkit::Middleware::Rack, Gitlab::Metrics::RequestsRackMiddleware, ActionDispatch::HostAuthorization, Gitlab::Middleware::SidekiqWebStatic, Rack::Sendfile, Gitlab::Middleware::RackMultipartTempfileFactory, Gitlab::Webpack::DevServerMiddleware, Gitlab::Middleware::Static, ActionDispatch::Executor, Gitlab::Middleware::CompressedJson, ActiveSupport::Cache::Strategy::LocalCache::Middleware, Rack::Runtime, Rack::MethodOverride, Rack::Timeout, RequestStore::Middleware, Gitlab::Middleware::RequestContext, Gitlab::Middleware::HandleIpSpoofAttackError, ActionDispatch::RemoteIp, Sprockets::Rails::QuietAssets, Rails::Rack::Logger, Gitlab::Middleware::BasicHealthCheck, ActionDispatch::ShowExceptions, ActionDispatch::DebugExceptions, BetterErrors::Middleware, ActionDispatch::ActionableExceptions, Gitlab::Middleware::HandleMalformedStrings, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, Gitlab::Middleware::SameSiteCookies, ActionDispatch::Cookies, ActionDispatch::Session::RedisStore, ActionDispatch::Flash, Gitlab::Middleware::ReadOnly, ActionDispatch::ContentSecurityPolicy::Middleware, ActionDispatch::PermissionsPolicy::Middleware, Rack::Head, Rack::ConditionalGet, Rack::ETag, Rack::TempfileReaper, Rack::Cors, Warden::Manager, Rack::Attack, Gitlab::Middleware::Multipart, ApolloUploadServer::Middleware, Rack::Attack, Bullet::Rack, BatchLoader::Middleware, Gitlab::Middleware::QueryAnalyzer, Gitlab::EtagCaching::Middleware, Gitlab::Middleware::Go, Gitlab::Jira::Middleware, Gitlab::Database::LoadBalancing::RackMiddleware, Gitlab::QueryLimiting::Middleware, Gitlab::RequestProfiler::Middleware, Gitlab::Middleware::Speedscope, Flipper::Middleware::Memoizer, OmniAuth::Strategies::GoogleOauth2, Gitlab::Experiment::Middleware
Application root /Users/kassioborges/src/gdk/gitlab
Environment development
As a fix I created an alias for bundle
to skip the bin/bundle
.
$ type -a bundle
bundle is an alias for asdf exec bundle
bundle is ./bin/bundle
bundle is /Users/kassioborges/.asdf/shims/bundle
bundle is /usr/bin/bundle
In fairness, I'm not sure this is a GDK specific problem.
Related to:
- https://gitlab.slack.com/archives/C2Z9A056E/p1641389407311800
- https://gitlab.slack.com/archives/C2Z9A056E/p1639012337125200
Steps to replicate (optional)
Proposal (optional)
Environment (optional)
- Operating system name:
$ uname -a
Darwin jarvis-mbp.lan 21.2.0 Darwin Kernel Version 21.2.0: Sun Nov 28 20:28:54 PST 2021; root:xnu-8019.61.5~1/RELEASE_X86_64 x86_64
- Architecture:
$ arch
i386
- The contents of your
gdk.yml
(if any)
---
gdk_root: "/Users/kassioborges/src/gdk"
hostname: gdk.test
gdk:
auto_reconfigure: true
debug: true
update_hooks:
before:
- cd gitlab && bin/spring stop || true
- cd gitlab && truncate -c -s 0 log/* 2>/dev/null || true
- Ruby version:
# from gitlab folder
$ ruby --version
ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-darwin21]
- GDK version: (I update it at least once a day)
$ git rev-parse --short HEAD
2c3bbbe6
Solution
-
The problem is related to having more than onebundle
version installed in the system, removing non usedbundler
versions (gem cleanup --no-check-development bundler
) solves the issue. For more detailed information check gitlab!78013 (comment 809868423)- GDK itself requires more than one version of the bundler, which might be causing this problem. More info (gitlab!78013 (comment 811082805))
Edited by Kassio Borges