From b80bec2fd974e4731ed4917003cbc28f180015e2 Mon Sep 17 00:00:00 2001 From: Anurag Priyam Date: Thu, 2 Aug 2018 16:55:09 +0100 Subject: [PATCH] Code style improvements [ci skip] Signed-off-by: Anurag Priyam --- lib/sequenceserver/blast/job.rb | 4 ++-- lib/sequenceserver/database.rb | 2 +- lib/sequenceserver/doctor.rb | 4 ++-- lib/sequenceserver/job.rb | 14 ++++++------- lib/sequenceserver/links.rb | 11 +++++------ lib/sequenceserver/pool.rb | 2 -- lib/sequenceserver/routes.rb | 18 ++++++++--------- lib/sequenceserver/sequence.rb | 21 ++++++++++---------- sequenceserver.gemspec | 35 +++++++++++++++++---------------- 9 files changed, 55 insertions(+), 56 deletions(-) diff --git a/lib/sequenceserver/blast/job.rb b/lib/sequenceserver/blast/job.rb index b34cc5f7a..73e6d38b0 100644 --- a/lib/sequenceserver/blast/job.rb +++ b/lib/sequenceserver/blast/job.rb @@ -33,7 +33,7 @@ def command # and using contents of stderr to provide context about the error. def raise! # Return true exit status is 0 and stdout is not empty. - return true if exitstatus == 0 && !File.zero?(stdout) + return true if exitstatus.zero? && !File.zero?(stdout) # Handle error. See [1]. case exitstatus @@ -71,7 +71,7 @@ def raise! private - def parse_advanced param_line + def parse_advanced(param_line) param_list = (param_line || '').split(' ') res = {} diff --git a/lib/sequenceserver/database.rb b/lib/sequenceserver/database.rb index 5990a12f7..1ef1aa08a 100644 --- a/lib/sequenceserver/database.rb +++ b/lib/sequenceserver/database.rb @@ -38,7 +38,7 @@ def initialize(*args) def include?(accession) cmd = "blastdbcmd -entry '#{accession}' -db #{name}" - out, _ = sys(cmd, path: config[:bin]) + out, = sys(cmd, path: config[:bin]) !out.empty? end diff --git a/lib/sequenceserver/doctor.rb b/lib/sequenceserver/doctor.rb index 668b93339..b88c46e7d 100644 --- a/lib/sequenceserver/doctor.rb +++ b/lib/sequenceserver/doctor.rb @@ -11,7 +11,7 @@ class Doctor ERROR_NUMERIC_IDS = 2 ERROR_PROBLEMATIC_IDS = 3 - AVOID_ID_REGEX = /^(?!gi|bbs)\w+\|\w*\|?/.freeze + AVOID_ID_REGEX = /^(?!gi|bbs)\w+\|\w*\|?/ class << self extend Forwardable @@ -92,7 +92,7 @@ def show_message(error, values) MSG end end - # rubocop:disable Metrics/MethodLength + # rubocop:enable Metrics/MethodLength end def initialize diff --git a/lib/sequenceserver/job.rb b/lib/sequenceserver/job.rb index 02f9635ee..d29469228 100644 --- a/lib/sequenceserver/job.rb +++ b/lib/sequenceserver/job.rb @@ -24,7 +24,7 @@ class Job class << self # Creates and queues a job. Returns created job object. def create(params) - job = BLAST::Job.new(params)# TODO: Dynamic dispatch. + job = BLAST::Job.new(params) # TODO: Dynamic dispatch. SequenceServer.pool.queue { job.run } job end @@ -43,8 +43,8 @@ def delete(id) # Returns an Array of all jobs. def all - Dir["#{DOTDIR}/**/job.yaml"]. - map { |f| fetch File.basename File.dirname f } + Dir["#{DOTDIR}/**/job.yaml"] + .map { |f| fetch File.basename File.dirname f } end end @@ -58,14 +58,14 @@ def all # of job data will be held, yields (if block given) and saves the job. # # Subclasses should extend `initialize` as per requirement. - def initialize(*args) + def initialize(*) @id = SecureRandom.uuid @submitted_at = Time.now mkdir_p dir yield if block_given? save rescue Errno::ENOSPC - raise SystemError, "Not enough disk space to start a new job" + raise SystemError, 'Not enough disk space to start a new job' rescue Errno::EACCES raise SystemError, "Permission denied to write to #{DOTDIR}" rescue => e @@ -78,7 +78,7 @@ def initialize(*args) # Returns shell command that will be executed. Subclass needs to provide a # concrete implementation. def command - raise 'Not implemented.' + fail 'Not implemented.' end # Shell out and execute the job. @@ -145,7 +145,7 @@ def store(key, value) # NOTE: Not used. def fetch(key) filename = File.join(dir, key) - raise if !File.exist? filename + fail unless File.exist? filename filename end diff --git a/lib/sequenceserver/links.rb b/lib/sequenceserver/links.rb index 5dea27c55..317caf9d8 100644 --- a/lib/sequenceserver/links.rb +++ b/lib/sequenceserver/links.rb @@ -1,15 +1,14 @@ +require 'erb' + module SequenceServer # Module to contain methods for generating sequence retrieval links. module Links - require 'erb' - # Provide a method to URL encode _query parameters_. See [1]. include ERB::Util - # - alias_method :encode, :url_encode + alias encode url_encode - NCBI_ID_PATTERN = /gi\|(\d+)\|/.freeze - UNIPROT_ID_PATTERN = /sp\|(\w+)\|/.freeze + NCBI_ID_PATTERN = /gi\|(\d+)\|/ + UNIPROT_ID_PATTERN = /sp\|(\w+)\|/ # Link generators return a Hash like below. # diff --git a/lib/sequenceserver/pool.rb b/lib/sequenceserver/pool.rb index c4ff7cc53..35bd692e9 100644 --- a/lib/sequenceserver/pool.rb +++ b/lib/sequenceserver/pool.rb @@ -18,8 +18,6 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require 'thread' - # Simple thread pool [1]. class Pool def initialize(size) diff --git a/lib/sequenceserver/routes.rb b/lib/sequenceserver/routes.rb index 965f3957f..8edd874ca 100644 --- a/lib/sequenceserver/routes.rb +++ b/lib/sequenceserver/routes.rb @@ -42,7 +42,7 @@ class Routes < Sinatra::Base # 'ALLOW-FROM uri'. set :protection, lambda { frame_options = SequenceServer.config[:frame_options] - frame_options && { :frame_options => frame_options } + frame_options && { frame_options: frame_options } } # Serve compressed responses. @@ -89,7 +89,7 @@ class Routes < Sinatra::Base # Returns base HTML. Rest happens client-side: polling for and rendering # the results. - get '/:jid' do |jid| + get '/:jid' do erb :report, layout: true end @@ -155,13 +155,13 @@ class Routes < Sinatra::Base # All errors will have a message. error_data = { message: error.message } - # If error object has a title method, use that, or use error class for - # title. - if error.respond_to? :title - error_data[:title] = error.title - else - error_data[:title] = error.class.to_s - end + # If error object has a title method, use that, or use name of the + # error class as title. + error_data[:title] = if error.respond_to? :title + error.title + else + error.class.name + end # If error object has a more_info method, use that. If the error does # not have more_info and the error is not APIError, use backtrace as diff --git a/lib/sequenceserver/sequence.rb b/lib/sequenceserver/sequence.rb index 13e8df4ff..fe51b9419 100644 --- a/lib/sequenceserver/sequence.rb +++ b/lib/sequenceserver/sequence.rb @@ -67,7 +67,7 @@ def to_s end def info - { :value => value, :id => id, :title => title } + { value: value, id: id, title: title } end # Returns FASTA formatted sequence. @@ -97,7 +97,7 @@ def guess_type(sequence) na_count = 0 composition = composition(cleaned_sequence) composition.each do |character, count| - na_count += count if character.match(/[ACGTU]/i) + na_count += count if character =~ /[ACGTU]/i end na_count > (0.9 * cleaned_sequence.length) ? :nucleotide : :protein @@ -200,7 +200,7 @@ def run " -db '#{database_names.join(' ')}'" \ " -entry '#{sequence_ids.join(',')}'" - out, _ = sys(command, path: config[:bin]) + out, = sys(command, path: config[:bin]) @sequences = out.each_line.map do |line| # Stop codons in amino acid sequence databases show up as invalid @@ -234,20 +234,21 @@ def error_msgs [ ['ERROR: incorrect number of sequences found.', <<~MSG - You requested #{sequence_ids.length} sequence(s) with the following identifiers: - #{sequence_ids.join(', ')} + You requested #{sequence_ids.length} sequence(s) with the following + identifiers: + #{sequence_ids.join(', ')} from the following databases: #{database_titles.join(', ')} but we found #{sequences.length} sequence(s). This is likley due to a problem with how databases are formatted. - Please share this text with the person managing this website. - - If you are the admin and are confident that your databases are - correctly formatted, you have likely encountered a weird bug. + Please share this text with the person managing this website. + + If you are the admin and are confident that your databases are + correctly formatted, you have likely encountered a weird bug. In this case, please raise an issue at: https://github.com/wurmlab/sequenceserver/issues - + If any sequences were retrieved, you can find them below (but some may be incorrect, so be careful!) MSG diff --git a/sequenceserver.gemspec b/sequenceserver.gemspec index d70483dd8..119adb7c9 100644 --- a/sequenceserver.gemspec +++ b/sequenceserver.gemspec @@ -11,26 +11,27 @@ Gem::Specification.new do |s| s.license = 'AGPL-3.0' s.summary = 'BLAST search made easy!' - s.description = < 2.0', '>= 2.0.0') s.add_dependency('json_pure', '~> 1.8', '>= 1.8.2') s.add_dependency('ox', '~> 2.1', '>= 2.1.1') + s.add_dependency('sinatra', '~> 2.0', '>= 2.0.0') s.add_dependency('slop', '~> 3.6', '>= 3.6.0') + s.add_development_dependency('capybara', '~> 2.18', '>= 2.18.0') + s.add_development_dependency('codeclimate-test-reporter', + '~> 1.0', '>= 1.0.8') + s.add_development_dependency('rack-test', '~> 1.0', '>= 1.0.0') s.add_development_dependency('rake', '~> 10.3', '>= 10.3.2') - s.add_development_dependency('rspec', '~> 3.7', '>= 3.7.0') - s.add_development_dependency('capybara', '~> 2.18', '>= 2.18.0') - s.add_development_dependency('rack-test', '~> 1.0', '>= 1.0.0') + s.add_development_dependency('rspec', '~> 3.7', '>= 3.7.0') s.add_development_dependency('sauce_whisk', '~> 0.0', '>= 0.0.19') s.add_development_dependency('selenium-webdriver', '~> 3.11', '>= 3.11.0') - s.add_development_dependency('codeclimate-test-reporter', '~> 1.0', '>= 1.0.8') # gem s.files = `git ls-files`.split("\n") - ['Gemfile', 'Gemfile.lock'] @@ -38,18 +39,18 @@ DESC s.require_paths = ['lib'] # post install information - s.post_install_message = <