diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-02-12 16:05:17 +0100 |
---|---|---|
committer | James Edwards-Jones <jedwardsjones@gitlab.com> | 2017-01-31 22:53:57 +0000 |
commit | d3b828487647f106a8947864e18ac1ad7bd9d6f4 (patch) | |
tree | a70cf6d14fbe4a111e657a4fe3335381ef73d234 /app/services/projects/update_pages_configuration_service.rb | |
parent | 0552c0b6f185433ad0a7caac321f0a6d445a0b63 (diff) | |
download | gitlab-ce-d3b828487647f106a8947864e18ac1ad7bd9d6f4.tar.gz |
Pages domain model specs
Diffstat (limited to 'app/services/projects/update_pages_configuration_service.rb')
-rw-r--r-- | app/services/projects/update_pages_configuration_service.rb | 22 |
1 files changed, 16 insertions, 6 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 |