diff --git a/Gemfile b/Gemfile
index a05ca23f5eb7749b294c0ced392c4300e3b0177c..08f16e11724a8c3f75cbaf5a78d06d7694e6b3a1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -415,7 +415,7 @@ gem 'gitaly-proto', '~> 0.84.0', require: 'gitaly'
 # Locked until https://github.com/google/protobuf/issues/4210 is closed
 gem 'google-protobuf', '= 3.5.1'
 
-gem 'toml-rb', '~> 0.3.15', require: false
+gem 'toml-rb', '~> 1.0.0', require: false
 
 # Feature toggles
 gem 'flipper', '~> 0.11.0'
diff --git a/Gemfile.lock b/Gemfile.lock
index 8de6c8d80a84fc4766d7e03a97fb4569d932f513..2e0bf594f01e3d0de2244c34f08a6f0f3b26fe47 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -924,7 +924,7 @@ GEM
     timfel-krb5-auth (0.8.3)
     toml (0.1.2)
       parslet (~> 1.5.0)
-    toml-rb (0.3.15)
+    toml-rb (1.0.0)
       citrus (~> 3.0, > 3.0)
     truncato (0.7.10)
       htmlentities (~> 4.3.1)
@@ -1201,7 +1201,7 @@ DEPENDENCIES
   test_after_commit (~> 1.1)
   thin (~> 1.7.0)
   timecop (~> 0.8.0)
-  toml-rb (~> 0.3.15)
+  toml-rb (~> 1.0.0)
   truncato (~> 0.7.9)
   u2f (~> 0.2.1)
   uglifier (~> 2.7.2)
diff --git a/changelogs/unreleased/36847-update-update-toml-rb-to-1-0-0.yml b/changelogs/unreleased/36847-update-update-toml-rb-to-1-0-0.yml
new file mode 100644
index 0000000000000000000000000000000000000000..74eaf57c056fb18f7c28f90a41e41143e0593423
--- /dev/null
+++ b/changelogs/unreleased/36847-update-update-toml-rb-to-1-0-0.yml
@@ -0,0 +1,5 @@
+---
+title: update toml-rb to 1.0.0
+merge_request: 17259
+author: Ken Ding
+type: other
diff --git a/lib/gitlab/setup_helper.rb b/lib/gitlab/setup_helper.rb
index e90a90508a2ff75657aa49ad407fb61ae1d99345..07d7c91cb5d80246045cc4749e6420da220a1298 100644
--- a/lib/gitlab/setup_helper.rb
+++ b/lib/gitlab/setup_helper.rb
@@ -37,7 +37,7 @@ def gitaly_configuration_toml(gitaly_dir, gitaly_ruby: true)
         config[:'gitlab-shell'] = { dir: Gitlab.config.gitlab_shell.path }
         config[:bin_dir] = Gitlab.config.gitaly.client_path
 
-        TOML.dump(config)
+        TomlRB.dump(config)
       end
 
       # rubocop:disable Rails/Output
diff --git a/lib/tasks/gitlab/gitaly.rake b/lib/tasks/gitlab/gitaly.rake
index 107ff1d8aebf611ed3e2dceb71256ae50ee805b0..e9ca6404fe8f203006ddde6500d41bb98b27a576 100644
--- a/lib/tasks/gitlab/gitaly.rake
+++ b/lib/tasks/gitlab/gitaly.rake
@@ -2,7 +2,7 @@ namespace :gitlab do
   namespace :gitaly do
     desc "GitLab | Install or upgrade gitaly"
     task :install, [:dir, :repo] => :gitlab_environment do |t, args|
-      require 'toml'
+      require 'toml-rb'
 
       warn_user_is_not_gitlab
 
@@ -38,7 +38,7 @@ namespace :gitlab do
 
     desc "GitLab | Print storage configuration in TOML format"
     task storage_config: :environment do
-      require 'toml'
+      require 'toml-rb'
 
       puts "# Gitaly storage configuration generated from #{Gitlab.config.source} on #{Time.current.to_s(:long)}"
       puts "# This is in TOML format suitable for use in Gitaly's config.toml file."
diff --git a/spec/support/test_env.rb b/spec/support/test_env.rb
index c275522159c70db8f71254dc9e7a03f329cf36dc..01321989f015f636d1d2f89b5abb30b61a055a89 100644
--- a/spec/support/test_env.rb
+++ b/spec/support/test_env.rb
@@ -1,5 +1,5 @@
 require 'rspec/mocks'
-require 'toml'
+require 'toml-rb'
 
 module TestEnv
   extend self
diff --git a/spec/tasks/gitlab/gitaly_rake_spec.rb b/spec/tasks/gitlab/gitaly_rake_spec.rb
index b37d6ac831f5b2911ec5fbd3db2dd15a40a00e1b..1f4053ff9ad9b8bb38fb90643033d1742e7423d2 100644
--- a/spec/tasks/gitlab/gitaly_rake_spec.rb
+++ b/spec/tasks/gitlab/gitaly_rake_spec.rb
@@ -132,7 +132,7 @@
       expect { run_rake_task('gitlab:gitaly:storage_config')}
         .to output(expected_output).to_stdout
 
-      parsed_output = TOML.parse(expected_output)
+      parsed_output = TomlRB.parse(expected_output)
       config.each do |name, params|
         expect(parsed_output['storage']).to include({ 'name' => name, 'path' => params['path'] })
       end