Ruby: ArgumentError: wrong number of arguments (given 1, expected 2..3)
A method was called with more or fewer arguments than it accepts.
ArgumentError: wrong number of arguments (given 1, expected 2)wrong number of arguments (given 2, expected 1)ArgumentError (wrong number of arguments (given 1, expected 0))wrong number of arguments (given 1, expected 2..3)wrong number of arguments (given 0, expected 1+) Meaning
Compare the call with the method signature. Ruby 3 separates positional and keyword arguments: passing a hash where keywords are expected (or the reverse) raises this. Check initialize signatures, blocks vs lambdas (lambdas are strict) and super calls (super vs super()).
Common causes
- Wrong number of positional args
- Ruby 3 keyword vs hash separation (
foo(opts)vsfoo(**opts)) - Lambda/proc strictness
superpassing implicit arguments- Method signature changed after a gem upgrade
⚡ Quick fix
- Fix the call to match
def m(a, b = 1, *rest, key:) - Use
**optswhen passing a hash as keywords - Use
super()to pass none
Detailed fix by platform
Ruby
method(:foo).arity/method(:foo).parameters
How to diagnose
- Given — How many?
- Expected — Signature?
- Ruby 3 — Keyword hash?
🔧 Still not fixed?
Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:
Similar errors
- ArgumentError: missing keyword / unknown keyword Ruby: ArgumentError: missing keyword: :name / unknown keyword: :nmae
- Bundler could not find compatible versions for gem Bundler: Bundler could not find compatible versions for gem "activesupport": In Gemfile: rails (= 7.1.0) depends on activesupport (= 7.1.0)
- Bundler: Could not find gem in locally installed gems Bundler: Could not find gem 'rails (~> 7.1)' in locally installed gems / Could not find rails-7.1.0 in any of the gem sources listed in your Gemfile
Most viewed in Ruby / Rails
- ActiveRecord::PendingMigrationError Rails: ActiveRecord::PendingMigrationError — Migrations are pending. To resolve this issue, run: bin/rails db:migrate
- ActionController::InvalidAuthenticityToken Rails: ActionController::InvalidAuthenticityToken (Can't verify CSRF token authenticity)
- CORS blocked in Rails API (rack-cors) Browser: Access to fetch at 'http://localhost:3000/api/items' from origin 'http://localhost:5173' has been blocked by CORS policy — Rails
Other ways to find it
Where this error sits
Origin: Application & API. Errors that are often confused with or caused by this one (click to open):
🧠 Still stuck? Analyze your error
Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.
💬 What worked for others
No tips yet — did something else fix this for you?
Share what worked for you
Tips are checked by an editor before they appear. Links are removed.
Report a correction or suggest an improvement
Last updated 5 Nov 2026