diff --git a/app/models/.project.rb.swo b/app/models/.project.rb.swo deleted file mode 100644 index 5d264ccfaaa42e0a6f93323aa8baf0a4e1fa7cf3..0000000000000000000000000000000000000000 Binary files a/app/models/.project.rb.swo and /dev/null differ diff --git a/app/models/project.rb b/app/models/project.rb index 3d3fd6f76a2d4a454df8da2278a8c2355397f7a8..9400d8a17af44d94ef48c35424437c0c04585fa8 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -89,12 +89,8 @@ class Project < ActiveRecord::Base # 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 + if commit_count.changed? + self.main_language = repository.main_language end end @@ -957,4 +953,14 @@ class Project < ActiveRecord::Base def wiki @wiki ||= ProjectWiki.new(self, self.owner) end + + def main_language + language = read_attributes(:main_language) + + return language if language + + update_attributes(main_language: repository.main_language) + + read_attributes(:main_language) + end end diff --git a/app/models/repository.rb b/app/models/repository.rb index c135ab61f6a00f66b106d580cbacfd02ca3851d4..ff48f993d422ea463445a7247353708b8849a6ae 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -812,6 +812,12 @@ class Repository raw_repository.ls_files(actual_ref) end + def main_language + unless empty? + Linguist::Repository.new(rugged, rugged.head.target_id).language + end + end + private def cache diff --git a/db/migrate/20160229193553_add_main_language_to_repository.rb b/db/migrate/20160229193553_add_main_language_to_repository.rb index da24abd2f04310bb1c675c392ebd825e2533ec0c..b5446c6a4472c43f5eaf69a83487cc0a95d9edec 100644 --- a/db/migrate/20160229193553_add_main_language_to_repository.rb +++ b/db/migrate/20160229193553_add_main_language_to_repository.rb @@ -1,21 +1,5 @@ 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 + def change + add_column :projects, :main_language, :string end end