Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-02-12 18:05:17 +0300
committerJames Edwards-Jones <jedwardsjones@gitlab.com>2017-02-01 01:53:57 +0300
commitd3b828487647f106a8947864e18ac1ad7bd9d6f4 (patch)
treea70cf6d14fbe4a111e657a4fe3335381ef73d234 /app/services/projects
parent0552c0b6f185433ad0a7caac321f0a6d445a0b63 (diff)
Pages domain model specs
Diffstat (limited to 'app/services/projects')
-rw-r--r--app/services/projects/update_pages_configuration_service.rb22
-rw-r--r--app/services/projects/update_pages_service.rb3
2 files changed, 18 insertions, 7 deletions
diff --git a/app/services/projects/update_pages_configuration_service.rb b/app/services/projects/update_pages_configuration_service.rb
index 53e9d9e2757..b5324587d0e 100644
--- a/app/services/projects/update_pages_configuration_service.rb
+++ b/app/services/projects/update_pages_configuration_service.rb
@@ -35,7 +35,7 @@ module Projects
def reload_daemon
# GitLab Pages daemon constantly watches for modification time of `pages.path`
# It reloads configuration when `pages.path` is modified
- File.touch(Settings.pages.path)
+ update_file(pages_update_file, SecureRandom.hex(64))
end
def pages_path
@@ -46,14 +46,24 @@ module Projects
File.join(pages_path, 'config.json')
end
+ def pages_update_file
+ File.join(Settings.pages.path, '.update')
+ end
+
def update_file(file, data)
- if data
- File.open(file, 'w') do |file|
- file.write(data)
- end
- else
+ unless data
File.rm(file, force: true)
+ return
+ end
+
+ temp_file = "#{file}.#{SecureRandom.hex(16)}"
+ File.open(temp_file, 'w') do |file|
+ file.write(data)
end
+ File.mv(temp_file, file, force: true)
+ ensure
+ # In case if the updating fails
+ File.rm(temp_file, force: true)
end
end
end
diff --git a/app/services/projects/update_pages_service.rb b/app/services/projects/update_pages_service.rb
index ceabd29fd52..a9979bf1e96 100644
--- a/app/services/projects/update_pages_service.rb
+++ b/app/services/projects/update_pages_service.rb
@@ -1,5 +1,6 @@
module Projects
- class UpdatePagesService < BaseService
+ class
+ UpdatePagesService < BaseService
BLOCK_SIZE = 32.kilobytes
MAX_SIZE = 1.terabyte
SITE_PATH = 'public/'