Born in Glasgow, Ruddy was on the books of hometown team Rangers from the age of seven to twelve, being coached by Andy Goram, before emigrating to Murcia in Spain in 2010. At the age of fifteen, after impressing for Torre Pacheco, he signed a contract for Real Murcia. Ruddy went on trial with Villarreal, but he was unable to sign a professional contract with any Spanish club due to a regulation requiring young players to have resided in Spain for at least five years.
On 30 July 2014, Ruddy returned to the United Kingdom, signing for Bury. He was first featured in a matchday squad on 8 November, remaining an unused substitute for their 3–1 win over Hemel Hempstead Town at Gigg Lane in the first round of the FA Cup. Ruddy was first included in a league game on 28 December, again remaining on the bench in a 2–0 League Two triumph of the same score against Mansfield Town, repeating the feat four times as the team earned promotion to League One. Ruddy made his professional debut on 14 November 2015, playing the full 90 minutes of a 3–1 League One loss at Gillingham in what turned out to be his only first team appearance for Bury.
On 29 August 2016 Ruddy signed for Championship club Wolverhampton Wanderers on a two-year deal, with the option of a further year, for an undisclosed fee. He was named on the bench once over the season, for a 3–1 loss at Derby County on 29 April 2017. In December 2017, he extended his contract until the end of the 2019–20 campaign. On 31 August 2017, Ruddy was sent on loan to League One side Oldham Athletic until 1 January. He was then loaned to Scottish League One club Ayr United. Ruddy was one of nine Wolves youngsters loaned to Spanish Segunda División B team FC Jumilla in August 2018. He made four appearances and was sent off at the end of his last game, a 2–2 draw at CD El Ejido, for insulting the referee. On 1 February 2019, he joined S.S. Reyes of the same league until the end of the season. Ruddy was released by Wolves during the 2019 close season.
Ruddy signed a six-month contract with Ross County in July 2019. Unused, he was released in January 2020, and returned to Spain to sign for CD Leganés B.