lib/cloud_crowd/action.rb in documentcloud-cloud-crowd-0.0.3 vs lib/cloud_crowd/action.rb in documentcloud-cloud-crowd-0.0.4
- old
+ new
@@ -16,18 +16,18 @@
attr_reader :input, :input_path, :file_name, :options, :work_directory
# Configuring a new Action sets up all of the read-only variables that
# form the bulk of the API for action subclasses. (Paths to read from and
- # write to).
+ # write to). It creates the work_directory and moves into it.
def configure(status, input, options, store)
@input, @options, @store = input, options, store
@job_id, @work_unit_id = options['job_id'], options['work_unit_id']
@work_directory = File.expand_path(File.join(@store.temp_storage_path, storage_prefix))
FileUtils.mkdir_p(@work_directory) unless File.exists?(@work_directory)
Dir.chdir @work_directory
- unless status == CloudCrowd::MERGING
+ unless status == MERGING
@input_path = File.join(@work_directory, File.basename(@input))
@file_name = File.basename(@input_path, File.extname(@input_path))
download(@input, @input_path)
end
end
@@ -41,19 +41,20 @@
def download(url, path)
`curl -s "#{url}" > #{path}`
path
end
- # Takes a local filesystem path, and returns the public url on S3 where the
- # file was saved.
+ # Takes a local filesystem path, and returns the public (or authenticated)
+ # url on S3 where the file was saved.
def save(file_path)
save_path = File.join(s3_storage_path, File.basename(file_path))
@store.save(file_path, save_path)
return @store.url(save_path)
end
- # After the Action has finished, we remove the work directory.
+ # After the Action has finished, we remove the work directory and return
+ # to the root directory (where daemons run by default).
def cleanup_work_directory
Dir.chdir '/'
FileUtils.rm_r(@work_directory)
end
@@ -62,26 +63,17 @@
# The directory prefix to use for both local and S3 storage.
# [action_name]/job_[job_id]/unit_[work_unit_it]
def storage_prefix
path_parts = []
- path_parts << underscore(self.class.to_s)
+ path_parts << Inflector.underscore(self.class)
path_parts << "job_#{@job_id}"
path_parts << "unit_#{@work_unit_id}" if @work_unit_id
@storage_prefix ||= File.join(path_parts)
end
def s3_storage_path
@s3_storage_path ||= storage_prefix
- end
-
- # Pilfered from the ActiveSupport::Inflector.
- def underscore(word)
- word.to_s.gsub(/::/, '/').
- gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
- gsub(/([a-z\d])([A-Z])/,'\1_\2').
- tr("-", "_").
- downcase
end
end
end
\ No newline at end of file