mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Remove use of cd in the app (#8337)
`FileUtils.cd` and `Dir.chdir` cause the working directory to change for the entire process. We run sidekiq jobs, hijacked requests and deferred jobs in threads, which can make working directory changes have unintended side-effects. - Add a rubocop rule to warn about usage of Dir.chdir and FileUtils.cd - Added rubocop:disable for scripts used outside the app - Refactored code using cd to use alternative methods - Temporarily skipped the rubocop check for lib/backup_restore. This will require more complex refactoring, so I will create a separate PR for review
This commit is contained in:
@@ -17,12 +17,10 @@ class ThemeStore::ZipImporter
|
||||
def import!
|
||||
FileUtils.mkdir(@temp_folder)
|
||||
|
||||
Dir.chdir(@temp_folder) do
|
||||
available_size = SiteSetting.decompressed_theme_max_file_size_mb
|
||||
Compression::Engine.engine_for(@original_filename).tap do |engine|
|
||||
engine.decompress(@temp_folder, @filename, available_size)
|
||||
engine.strip_directory(@temp_folder, @temp_folder, relative: true)
|
||||
end
|
||||
available_size = SiteSetting.decompressed_theme_max_file_size_mb
|
||||
Compression::Engine.engine_for(@original_filename).tap do |engine|
|
||||
engine.decompress(@temp_folder, @filename, available_size)
|
||||
engine.strip_directory(@temp_folder, @temp_folder, relative: true)
|
||||
end
|
||||
rescue RuntimeError
|
||||
raise RemoteTheme::ImportError, I18n.t("themes.import_error.unpack_failed")
|
||||
@@ -53,9 +51,7 @@ class ThemeStore::ZipImporter
|
||||
end
|
||||
|
||||
def all_files
|
||||
Dir.chdir(@temp_folder) do
|
||||
Dir.glob("**/**").reject { |f| File.directory?(f) }
|
||||
end
|
||||
Dir.glob("**/**", base: @temp_folder).reject { |f| File.directory?(f) }
|
||||
end
|
||||
|
||||
def [](value)
|
||||
|
||||
Reference in New Issue
Block a user