class Object
Public Instance Methods
check_version_format(version)
click to toggle source
# File lib/yeshua_crm.rb, line 55 def check_version_format(version) version =~ /^\d+.?\d*.?\d*$/m end
compare_versions(requirement, current)
click to toggle source
# File lib/yeshua_crm.rb, line 49 def compare_versions(requirement, current) raise ArgumentError.new('wrong version format') unless check_version_format(requirement) requirement = requirement.split('.').collect(&:to_i) requirement <=> current.slice(0, requirement.size) end
requires_yeshua_crm(arg)
click to toggle source
# File lib/yeshua_crm.rb, line 48 def requires_yeshua_crm(arg) def compare_versions(requirement, current) raise ArgumentError.new('wrong version format') unless check_version_format(requirement) requirement = requirement.split('.').collect(&:to_i) requirement <=> current.slice(0, requirement.size) end def check_version_format(version) version =~ /^\d+.?\d*.?\d*$/m end arg = {:version_or_higher => arg} unless arg.is_a?(Hash) arg.assert_valid_keys(:version, :version_or_higher) current = YeshuaCrm::VERSION.split('.').map { |x| x.to_i } arg.each do |k, req| case k when :version_or_higher raise ArgumentError.new(':version_or_higher accepts a version string only') unless req.is_a?(String) unless compare_versions(req, current) <= 0 Rails.logger.error "\033[31m[ERROR]\033[0m Yeshua requires yeshua_crm gem version #{req} or higher (you're using #{YeshuaCrm::VERSION}).\n\033[31m[ERROR]\033[0m Please update with 'bundle update yeshua_crm'." if Rails.logger abort "\033[31mYeshua requires yeshua_crm gem version #{req} or higher (you're using #{YeshuaCrm::VERSION}).\nPlease update with 'bundle update yeshua_crm'.\033[0m" end when :version req = [req] if req.is_a?(String) if req.is_a?(Array) unless req.detect { |ver| compare_versions(ver, current) == 0 } abort "\033[31mYeshua requires yeshua_crm gem version #{req} (you're using #{YeshuaCrm::VERSION}).\nPlease update with 'bundle update yeshua_crm'.\033[0m" end elsif req.is_a?(Range) unless compare_versions(req.first, current) <= 0 && compare_versions(req.last, current) >= 0 abort "\033[31mYeshua requires yeshua_crm gem version between #{req.first} and #{req.last} (you're using #{YeshuaCrm::VERSION}).\nPlease update with 'bundle update yeshua_crm'.\033[0m" end else raise ArgumentError.new(':version option accepts a version string, an array or a range of versions') end end end true end