diff --git a/ChangeLog b/ChangeLog
index 7d6ca6619..6f3063bf6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2022-12-31  Oliver Kiddle  <opk@zsh.org>
 
+	* Shohei YOSHIDA: 51253: Completion/Unix/Command/_ruby:
+	Update ruby completion for version 3.2.0
+
 	* Shohei YOSHIDA: 51233: Completion/Unix/Command/_gcc:
 	Update sanitizer list to GCC 12
 
diff --git a/Completion/Unix/Command/_ruby b/Completion/Unix/Command/_ruby
index 0e1f5dbc0..9b182693f 100644
--- a/Completion/Unix/Command/_ruby
+++ b/Completion/Unix/Command/_ruby
@@ -40,20 +40,27 @@ opts=(
   '(-v)--verbose[turn on verbose mode and disable script from stdin]'
   '-x-[strip off text before #!ruby line and perhaps cd to directory]:directory:_files -/'
   '(1 * -)--copyright[print the copyright]'
-  --{en,dis}'able=[enable or disable features]:feature:(gems did_you_mean rubyopt frozen_string_literal jit all)'
+  --{en,dis}'able=[enable or disable features]:feature:(gems error_highlight did_you_mean syntax_suggest rubyopt frozen_string_literal mjit yjit all)'
   \!--{en,dis}able-{gems,rubyopt,all}
-  '--dump=[dump debug information]:information:_sequence compadd - insns yydebug parsetree parsetree_with_comment'
+  '--dump=[dump debug information]:information:_sequence compadd - insns insns_without_opt yydebug parsetree parsetree_with_comment'
   --{external,internal}'-encoding=:charset:->charsets'
   '!'{-y,--yydebug}
   '!--dump=:target:(version copyright usage yydebug syntax parsetree parsetree_with_comment insns)'
-  '--jit[enable jit with default options]'
-  '--jit-warnings[enable printing JIT warnings]'
-  '--jit-debug[enable JIT debugging (very slow)]'
-  '--jit-wait[wait until JIT compilation finishes every time (for testing)]'
-  '--jit-save-temps[save JIT temporary files]'
-  '--jit-verbose=-[print JIT logs of level num or less to stderr]:maximum log level [0]'
-  '--jit-max-cache=-[specify max number of methods to be JIT-ed in a cache]:number [100]'
-  '--jit-min-calls=-[specify number of calls to trigger JIT]:calls [10000]'
+  '(--mjit --yjit)--jit[enable jit for the platform]'
+  '(--jit --yjit)--mjit[enable C compiler-based JIT compiler]'
+  '(--jit --mjit)--yjit[enable in-process JIT compiler]'
+  '--mjit-warnings[enable printing JIT warnings]'
+  '--mjit-debug[enable JIT debugging (very slow)]'
+  '--mjit-wait[wait until JIT compilation finishes every time (for testing)]'
+  '--mjit-save-temps[save JIT temporary files]'
+  '--mjit-verbose=-[print JIT logs of level num or less to stderr]:maximum log level [0]'
+  '--mjit-max-cache=-[specify max number of methods to be JIT-ed in a cache]:number [100]'
+  '--mjit-min-calls=-[specify number of calls to trigger JIT]:calls [10000]'
+  '--yjit-stat[enable collecting YJIT statistics]'
+  '--yjit-exec-mem-size=-[size of executable memory block in MiB]:mem size'
+  '--yjit-call-threshold=-[number of calls to trigger JIT]:number'
+  '--yjit-max-versions=-[maximum number of versions per basic block]:versions'
+  '--yjit-greedy-versioning[greedy versioning mode]'
 )
 
 irb=(