Sha256: 42a1728f3d7f92104a122c00a3ea1e2c120b0070ee3960755f214c22539d35ef
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
class Ginst::Project attr_reader :errors def errors @errors ||= {} end def valid? @errors = {} validate_name validate_dir validate_uniqueness @errors.empty? end def validate_dir self.dir = File.expand_path(self.dir) @repo = ::Grit::Repo.new(self.dir) true rescue ::Grit::NoSuchPathError @errors['dir'] = "#{self.dir} not found in #{`hostname`}." false rescue ::Grit::InvalidGitRepositoryError @errors['dir'] = "#{self.dir} is not a valid repo." false end def validate_name @errors["name"] = "Is needed" and return if self.name.nil? @errors["name"] = "Can't be blank" if self.name.empty? end def validate_uniqueness if self.name.kind_of? String projects = self.class.projects.dup projects.delete(self) unless projects.select{|p| p.name.slug == self.name.slug }.first.nil? @errors["name"] = "Name already taken" end end if self.dir.kind_of? String projects = self.class.projects.dup projects.delete(self) unless projects.select{|p| p.dir == self.dir }.first.nil? @errors["dir"] = "There is already one project with the same directory" end end end alias :save_without_validations :save def save if valid? save_without_validations else false end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ginst-0.2.2 | lib/ginst/project/validations.rb |