diff --git a/app/models/site.rb b/app/models/site.rb index 377c6b35..28f0d739 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -577,20 +577,37 @@ class Site < ApplicationRecord def install_gems return unless persisted? - Site.one_at_a_time.synchronize do - deploy_local = deploys.find_by_type('DeployLocal') - deploy_local.git_lfs - end + deploy_local = deploys.find_by_type('DeployLocal') + deploy_local.git_lfs - return unless !gems_installed? || gemfile_updated? || gemfile_lock_updated? + return unless (!gems_installed? || theme_path.blank?) || gemfile_updated? || gemfile_lock_updated? - Site.one_at_a_time.synchronize do - deploy_local.bundle - touch - FileUtils.touch(gemfile_path) - end + deploy_local.bundle + touch + FileUtils.touch(gemfile_path) end + # El sitio tiene una plantilla + # + # @return [Bool] + def theme? + config.key?('theme') + end + + # El directorio donde se encuentran los archivos de la plantilla. Si + # es nil es que las dependencias todavĂ­a no se instalaron. + # + # @return [String,nil] + def theme_path + @theme_path ||= + if theme? + Dir[gem_path.join('gems', "#{config['theme']}-*").to_s].first + else + path + end + end + + # @return [Pathname] def gem_path @gem_path ||= begin