versioning - checking version numbers in rails -


i've got mobile app makes api call. in api call, i'm sending version number of app because returned json bit different depending on api version.

so when have app version 2.4.1 , need check against current api version 2.4.4, fine because i'm using

 if user_version.gsub('.','').to_i < server_version.gsub('.','').to_i  //the user version not current, ask them update end 

the problem comes in down line when releases version 2.5. above code, user have 2.4.4 gets translated 244 larger server side 2.5 or 25.

how check cover these instances?

you can parse version numbers using regex, detailed here: a regex version number parsing

this 1 do: ^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$

so:

version_regex = /^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/ user_version_array = user_version.match(version_regex)[1..3].compact.map(&:to_i) server_version_array = server_version.match(version_regex)[1..3].compact.map(&:to_i) 

for sake of dryness, might want break out helper method:

def parse_version(str)   version_regex = /^(?:(\d+)\.)?(?:(\d+)\.)?(\*|\d+)$/   str.match(version_regex)[1..3].compact.map(&:to_i) end 

for example of user_version = '2.4.4' , server_version = '2.5', gives arrays:

user_version_array = [2,4,2] server_version_array = [2,5] 

you can iterate on these compare:

compliant_version = true (0..2).each |i|   if (user_version_array[i] || 0) < (server_version_array[i] || 0)     compliant_version = false   end end 

Comments