summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortiagonbotelho <tiagonbotelho@hotmail.com>2016-03-01 01:55:36 +0000
committerYorick Peterse <yorickpeterse@gmail.com>2016-03-07 21:59:39 +0100
commita14b98f858cadf60c67db4cbd23aa10ae0d5213b (patch)
treed49c658b5babf33ef08eeedd96bb053688996910
parentd9e646a796795de43b23a27b74289f44255810e3 (diff)
downloadgitlab-ce-a14b98f858cadf60c67db4cbd23aa10ae0d5213b.tar.gz
implements project languages saving them onto the database
-rw-r--r--app/models/.project.rb.swobin0 -> 49152 bytes
-rw-r--r--app/models/project.rb12
-rw-r--r--db/migrate/20160229193553_add_main_language_to_repository.rb21
3 files changed, 33 insertions, 0 deletions
diff --git a/app/models/.project.rb.swo b/app/models/.project.rb.swo
new file mode 100644
index 00000000000..5d264ccfaaa
--- /dev/null
+++ b/app/models/.project.rb.swo
Binary files differ
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