diff options
author | tiagonbotelho <tiagonbotelho@hotmail.com> | 2016-03-01 01:55:36 +0000 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2016-03-07 21:59:39 +0100 |
commit | a14b98f858cadf60c67db4cbd23aa10ae0d5213b (patch) | |
tree | d49c658b5babf33ef08eeedd96bb053688996910 | |
parent | d9e646a796795de43b23a27b74289f44255810e3 (diff) | |
download | gitlab-ce-a14b98f858cadf60c67db4cbd23aa10ae0d5213b.tar.gz |
implements project languages saving them onto the database
-rw-r--r-- | app/models/.project.rb.swo | bin | 0 -> 49152 bytes | |||
-rw-r--r-- | app/models/project.rb | 12 | ||||
-rw-r--r-- | db/migrate/20160229193553_add_main_language_to_repository.rb | 21 |
3 files changed, 33 insertions, 0 deletions
diff --git a/app/models/.project.rb.swo b/app/models/.project.rb.swo Binary files differnew file mode 100644 index 00000000000..5d264ccfaaa --- /dev/null +++ b/app/models/.project.rb.swo diff --git a/app/models/project.rb b/app/models/project.rb index 3b565ef809a..4d2ff11cc11 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -86,6 +86,18 @@ class Project < ActiveRecord::Base end end + # checks if the language main language of the project changed + before_save :check_main_language + def check_main_language + if !repository.empty? && self.changed? + language = Linguist::Repository.new( + repository.rugged, + repository.rugged.head.target_id).language + + self.main_language = language + end + end + ActsAsTaggableOn.strict_case_match = true acts_as_taggable_on :tags diff --git a/db/migrate/20160229193553_add_main_language_to_repository.rb b/db/migrate/20160229193553_add_main_language_to_repository.rb new file mode 100644 index 00000000000..da24abd2f04 --- /dev/null +++ b/db/migrate/20160229193553_add_main_language_to_repository.rb @@ -0,0 +1,21 @@ +class AddMainLanguageToRepository < ActiveRecord::Migration + require 'rugged' + require 'linguist' + + def up + add_column :projects, :main_language, :string, default: nil + + Project.all.each do |project| + unless project.repository.empty? + language = Linguist::Repository.new( + project.repository.rugged, + project.repository.rugged.head.target_id).language + project.update_attributes(main_language: language) + end + end + end + + def down + remove_column :projects, :main_language + end +end |