sequencescape-client-api 0.3.10 → 0.4.0.pre.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +44 -0
  3. data/.rubocop_todo.yml +338 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +1 -1
  6. data/README.markdown +13 -0
  7. data/lib/sequencescape-api.rb +1 -1
  8. data/lib/sequencescape-api/actions.rb +9 -8
  9. data/lib/sequencescape-api/associations.rb +8 -6
  10. data/lib/sequencescape-api/associations/base.rb +1 -1
  11. data/lib/sequencescape-api/associations/base/instance_methods.rb +10 -8
  12. data/lib/sequencescape-api/associations/belongs_to.rb +4 -4
  13. data/lib/sequencescape-api/associations/has_many.rb +14 -13
  14. data/lib/sequencescape-api/associations/has_many/json.rb +1 -1
  15. data/lib/sequencescape-api/associations/has_many/validation.rb +1 -1
  16. data/lib/sequencescape-api/composition.rb +11 -7
  17. data/lib/sequencescape-api/connection_factory.rb +6 -5
  18. data/lib/sequencescape-api/connection_factory/actions.rb +17 -12
  19. data/lib/sequencescape-api/core.rb +12 -7
  20. data/lib/sequencescape-api/core_ext/array.rb +1 -1
  21. data/lib/sequencescape-api/core_ext/hash.rb +3 -3
  22. data/lib/sequencescape-api/errors.rb +2 -2
  23. data/lib/sequencescape-api/finder_methods.rb +16 -11
  24. data/lib/sequencescape-api/rails.rb +8 -7
  25. data/lib/sequencescape-api/resource/active_model.rb +1 -1
  26. data/lib/sequencescape-api/resource/attribute_groups.rb +11 -7
  27. data/lib/sequencescape-api/resource/attributes.rb +8 -8
  28. data/lib/sequencescape-api/resource/instance_methods.rb +17 -9
  29. data/lib/sequencescape-api/resource/json.rb +18 -15
  30. data/lib/sequencescape-api/resource/modifications.rb +20 -11
  31. data/lib/sequencescape-api/resource_model_proxy.rb +7 -5
  32. data/lib/sequencescape-api/version.rb +1 -1
  33. data/lib/sequencescape.rb +1 -2
  34. data/lib/sequencescape/bait_library.rb +1 -1
  35. data/lib/sequencescape/bait_library_layout.rb +2 -2
  36. data/lib/sequencescape/barcoded_asset.rb +1 -1
  37. data/lib/sequencescape/batch.rb +6 -6
  38. data/lib/sequencescape/behaviour/qced.rb +3 -4
  39. data/lib/sequencescape/behaviour/receptacle.rb +3 -3
  40. data/lib/sequencescape/behaviour/state_driven.rb +4 -4
  41. data/lib/sequencescape/bulk_transfer.rb +1 -1
  42. data/lib/sequencescape/comment.rb +0 -2
  43. data/lib/sequencescape/extraction_attribute.rb +1 -1
  44. data/lib/sequencescape/library_event.rb +1 -1
  45. data/lib/sequencescape/library_tube.rb +1 -1
  46. data/lib/sequencescape/lot.rb +0 -1
  47. data/lib/sequencescape/lot_type.rb +1 -2
  48. data/lib/sequencescape/order_template.rb +1 -2
  49. data/lib/sequencescape/pipeline.rb +1 -1
  50. data/lib/sequencescape/plate.rb +19 -15
  51. data/lib/sequencescape/plate/pooling.rb +9 -3
  52. data/lib/sequencescape/plate/well_structure.rb +6 -6
  53. data/lib/sequencescape/plate_conversion.rb +3 -3
  54. data/lib/sequencescape/plate_creation.rb +3 -3
  55. data/lib/sequencescape/plate_purpose.rb +3 -3
  56. data/lib/sequencescape/plate_template.rb +0 -2
  57. data/lib/sequencescape/pooled_plate_creation.rb +3 -3
  58. data/lib/sequencescape/project.rb +2 -1
  59. data/lib/sequencescape/qc_decision.rb +0 -1
  60. data/lib/sequencescape/qc_file.rb +0 -3
  61. data/lib/sequencescape/qcable.rb +0 -3
  62. data/lib/sequencescape/qcable_creator.rb +0 -3
  63. data/lib/sequencescape/request.rb +3 -3
  64. data/lib/sequencescape/search.rb +10 -8
  65. data/lib/sequencescape/specific_tube_creation.rb +2 -2
  66. data/lib/sequencescape/stamp.rb +0 -1
  67. data/lib/sequencescape/state_change.rb +2 -2
  68. data/lib/sequencescape/study.rb +1 -1
  69. data/lib/sequencescape/submission.rb +1 -2
  70. data/lib/sequencescape/tag2_layout.rb +3 -3
  71. data/lib/sequencescape/tag2_layout_template.rb +2 -2
  72. data/lib/sequencescape/tag_group.rb +0 -1
  73. data/lib/sequencescape/tag_layout.rb +3 -3
  74. data/lib/sequencescape/tag_layout_template.rb +4 -4
  75. data/lib/sequencescape/transfer.rb +2 -2
  76. data/lib/sequencescape/transfer_request.rb +4 -5
  77. data/lib/sequencescape/transfer_template.rb +2 -2
  78. data/lib/sequencescape/tube.rb +3 -3
  79. data/lib/sequencescape/tube_creation.rb +3 -3
  80. data/lib/sequencescape/tube_from_tube_creation.rb +3 -3
  81. data/lib/sequencescape/tube_purpose.rb +3 -3
  82. data/lib/sequencescape/user.rb +2 -2
  83. data/lib/sequencescape/volume_update.rb +1 -1
  84. data/lib/sequencescape/well.rb +0 -2
  85. data/lib/sequencescape/work_completion.rb +1 -1
  86. data/sequencescape-api.gemspec +18 -17
  87. data/spec/sequencescape-api/associations_spec.rb +4 -2
  88. data/spec/sequencescape-api/finding_methods_spec.rb +3 -1
  89. data/spec/sequencescape-api/modifications_spec.rb +17 -16
  90. data/spec/sequencescape-api/root_spec.rb +11 -6
  91. data/spec/spec_helper.rb +3 -1
  92. data/spec/support/contract_helper.rb +18 -10
  93. data/spec/support/namespaces.rb +9 -9
  94. data/spec/support/shared_examples.rb +2 -0
  95. metadata +53 -35
  96. data/.rvmrc +0 -52
@@ -1,7 +1,6 @@
1
1
  require 'sequencescape/asset'
2
2
 
3
3
  class Sequencescape::PlateTemplate < ::Sequencescape::Asset
4
-
5
4
  require 'sequencescape/plate/well_structure'
6
5
 
7
6
  include Sequencescape::Plate::WellStructure
@@ -9,5 +8,4 @@ class Sequencescape::PlateTemplate < ::Sequencescape::Asset
9
8
  has_many :wells
10
9
 
11
10
  attribute_accessor :size, :name
12
-
13
11
  end
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::PooledPlateCreation < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- has_many :parents, :class_name => 'Plate', :disposition => :inline
6
- belongs_to :child_purpose, :class_name => 'PlatePurpose'
7
- belongs_to :child, :class_name => 'Plate'
5
+ has_many :parents, class_name: 'Plate', disposition: :inline
6
+ belongs_to :child_purpose, class_name: 'PlatePurpose'
7
+ belongs_to :child, class_name: 'Plate'
8
8
  end
@@ -5,7 +5,8 @@ class Sequencescape::Project < ::Sequencescape::Api::Resource
5
5
 
6
6
  attribute_accessor :name
7
7
  attribute_accessor :approved, :state
8
- attribute_accessor :project_manager, :cost_code, :funding_comments, :external_funding_source, :budget_division, :budget_cost_centre, :funding_model
8
+ attribute_accessor :project_manager, :cost_code, :funding_comments, :external_funding_source, :budget_division
9
+ attribute_accessor :budget_cost_centre, :funding_model
9
10
  attribute_accessor :collaborators
10
11
  attribute_accessor :roles
11
12
  end
@@ -1,7 +1,6 @@
1
1
  require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::QcDecision < ::Sequencescape::Api::Resource
4
-
5
4
  belongs_to :user
6
5
  belongs_to :lot
7
6
 
@@ -1,8 +1,6 @@
1
-
2
1
  require 'sequencescape-api/resource'
3
2
 
4
3
  class Sequencescape::QcFile < ::Sequencescape::Api::Resource
5
-
6
4
  belongs_to :asset
7
5
 
8
6
  attribute_accessor :filename, :size
@@ -10,5 +8,4 @@ class Sequencescape::QcFile < ::Sequencescape::Api::Resource
10
8
  def retrieve
11
9
  api.retrieve(actions.read, Sequencescape::Api::ModifyingHandler.new(self), 'sequencescape/qc_file')
12
10
  end
13
-
14
11
  end
@@ -1,8 +1,6 @@
1
-
2
1
  require 'sequencescape-api/resource'
3
2
 
4
3
  class Sequencescape::Qcable < ::Sequencescape::Api::Resource
5
-
6
4
  belongs_to :lot
7
5
  belongs_to :qcable_creator
8
6
  belongs_to :asset
@@ -14,5 +12,4 @@ class Sequencescape::Qcable < ::Sequencescape::Api::Resource
14
12
  attribute_accessor :ean13 # The EAN13 barcode number
15
13
  attribute_accessor :machine # The barcode printed on the label
16
14
  end
17
-
18
15
  end
@@ -1,13 +1,10 @@
1
-
2
1
  require 'sequencescape-api/resource'
3
2
 
4
3
  class Sequencescape::QcableCreator < ::Sequencescape::Api::Resource
5
-
6
4
  belongs_to :user
7
5
  belongs_to :lot
8
6
 
9
7
  has_many :qcables
10
8
 
11
9
  attribute_accessor :count, :barcodes
12
-
13
10
  end
@@ -6,11 +6,11 @@ class Sequencescape::Request < ::Sequencescape::Api::Resource
6
6
  belongs_to :sample
7
7
  belongs_to :submission
8
8
 
9
- belongs_to :source_asset, :class_name => 'Asset'
10
- belongs_to :target_asset, :class_name => 'Asset'
9
+ belongs_to :source_asset, class_name: 'Asset'
10
+ belongs_to :target_asset, class_name: 'Asset'
11
11
 
12
12
  attribute_accessor :type, :state
13
- validates_inclusion_of :state, :in => %w{pending started failed passed cancelled blocked hold}
13
+ validates_inclusion_of :state, in: %w[pending started failed passed cancelled blocked hold]
14
14
 
15
15
  attribute_accessor :read_length, :library_type, :fragment_size
16
16
  end
@@ -4,7 +4,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
4
4
  class BaseHandler
5
5
  include Sequencescape::Api::BasicErrorHandling
6
6
 
7
- def success(attributes)
7
+ def success(_attributes)
8
8
  raise Sequencescape::Api::Error, 'A success response from a search is unexpected'
9
9
  end
10
10
  end
@@ -17,7 +17,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
17
17
  @api = api
18
18
  end
19
19
 
20
- def redirection(json, &block)
20
+ def redirection(json)
21
21
  json.delete('uuids_to_ids')
22
22
  Sequencescape::Api::FinderMethods::FindByUuidHandler.new(@api.send(json.keys.first)).success(json)
23
23
  end
@@ -28,6 +28,7 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
28
28
  class MultipleResultPaged
29
29
  include Enumerable
30
30
  attr_reader :objects, :size
31
+
31
32
  def initialize(objects, size)
32
33
  @objects = objects
33
34
  @size = size
@@ -39,18 +40,19 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
39
40
  # The response from the server contains the JSON for each of the resources found. We simply
40
41
  # need to be able to create the resources from each of these.
41
42
  class MultipleResultHandler
42
- def initialize(api,model)
43
- @api, @model = api, model
43
+ def initialize(api, model)
44
+ @api = api
45
+ @model = model
44
46
  end
45
47
 
46
- def redirection(json, &block)
48
+ def redirection(json)
47
49
  items = json['searches'].map(&method(:new))
48
50
  size = json['size']
49
51
  MultipleResultPaged.new(items, size)
50
52
  end
51
53
 
52
54
  def new(json)
53
- args = [ json, false ]
55
+ args = [json, false]
54
56
  args.unshift(@api) unless @model.is_a_proxied_model?
55
57
  @model.new(*args)
56
58
  end
@@ -59,11 +61,11 @@ class Sequencescape::Search < ::Sequencescape::Api::Resource
59
61
 
60
62
  def self.search_action(name)
61
63
  line = __LINE__ + 1
62
- class_eval(%Q{
64
+ class_eval("
63
65
  def #{name}(criteria = {})
64
66
  api.create(actions.#{name}, { 'search' => criteria }, SingleResultHandler.new(api))
65
67
  end
66
- }, __FILE__, line)
68
+ ", __FILE__, line)
67
69
  end
68
70
 
69
71
  attribute_reader :name
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::SpecificTubeCreation < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :parent, :class_name => 'Plate'
5
+ belongs_to :parent, class_name: 'Plate'
6
6
  attribute_writer :child_purposes, :tube_attributes
7
- has_many :children, :class_name => 'Tube'
7
+ has_many :children, class_name: 'Tube'
8
8
  end
@@ -1,7 +1,6 @@
1
1
  require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::Stamp < ::Sequencescape::Api::Resource
4
-
5
4
  belongs_to :user
6
5
  belongs_to :lot
7
6
  belongs_to :robot
@@ -2,8 +2,8 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::StateChange < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :target, :class_name => 'Asset', :disposition => :inline
6
- attribute_accessor :contents # Array of "contents" to fail, deciphered by the target, can be nil
5
+ belongs_to :target, class_name: 'Asset', disposition: :inline
6
+ attribute_accessor :contents # Array of "contents" to fail, deciphered by the target, can be nil
7
7
  attribute_accessor :target_state
8
8
  attribute_accessor :previous_state
9
9
  attribute_accessor :reason
@@ -10,5 +10,5 @@ class Sequencescape::Study < ::Sequencescape::Api::Resource
10
10
  attribute_accessor :contaminated_human_dna, :contains_human_dna
11
11
  attribute_accessor :data_release_sort_of_study, :data_release_strategy
12
12
 
13
- validates :name, :presence => true
13
+ validates :name, presence: true
14
14
  end
@@ -8,9 +8,8 @@ class Sequencescape::Submission < ::Sequencescape::Api::Resource
8
8
  # TODO: use a has many, but ensure it works
9
9
  attribute_accessor :orders
10
10
 
11
- has_update_action :submit!, :action => 'submit', :verb => :create, :skip_json => true
11
+ has_update_action :submit!, action: 'submit', verb: :create, skip_json: true
12
12
 
13
13
  attribute_reader :state
14
14
  attribute_reader :asset_group_name
15
-
16
15
  end
@@ -3,8 +3,8 @@ require 'sequencescape/tag'
3
3
 
4
4
  class Sequencescape::Tag2Layout < ::Sequencescape::Api::Resource
5
5
  belongs_to :user
6
- belongs_to :plate, :class_name => 'Plate'
7
- belongs_to :source, :class_name => 'Asset'
8
- composed_of :tag, :class_name => 'Tag'
6
+ belongs_to :plate, class_name: 'Plate'
7
+ belongs_to :source, class_name: 'Asset'
8
+ composed_of :tag, class_name: 'Tag'
9
9
  attribute_reader :target_well_locations
10
10
  end
@@ -3,7 +3,7 @@ require 'sequencescape/tag'
3
3
 
4
4
  class Sequencescape::Tag2LayoutTemplate < ::Sequencescape::Api::Resource
5
5
  attribute_reader :name
6
- composed_of :tag, :class_name => 'Tag'
6
+ composed_of :tag, class_name: 'Tag'
7
7
 
8
- has_create_action :resource => 'tag2_layout'
8
+ has_create_action resource: 'tag2_layout'
9
9
  end
@@ -1,4 +1,3 @@
1
1
  class Sequencescape::TagGroup < ::Sequencescape::Api::Resource
2
-
3
2
  attribute_accessor :name, :tags, :created_at, :updated_at
4
3
  end
@@ -3,9 +3,9 @@ require 'sequencescape/tag'
3
3
 
4
4
  class Sequencescape::TagLayout < ::Sequencescape::Api::Resource
5
5
  belongs_to :user
6
- belongs_to :plate, :class_name => 'Plate'
7
- composed_of :tag_group, :class_name => 'Tag::Group'
8
- composed_of :tag2_group, :class_name => 'Tag::Group'
6
+ belongs_to :plate, class_name: 'Plate'
7
+ composed_of :tag_group, class_name: 'Tag::Group'
8
+ composed_of :tag2_group, class_name: 'Tag::Group'
9
9
 
10
10
  attribute_accessor :substitutions, :direction, :walking_by, :initial_tag, :tags_per_well
11
11
  end
@@ -3,11 +3,11 @@ require 'sequencescape/tag'
3
3
 
4
4
  class Sequencescape::TagLayoutTemplate < ::Sequencescape::Api::Resource
5
5
  attribute_reader :name, :direction, :walking_by
6
- belongs_to :plate, :class_name => 'Plate'
7
- composed_of :tag_group, :class_name => 'Tag::Group'
8
- composed_of :tag2_group, :class_name => 'Tag::Group'
6
+ belongs_to :plate, class_name: 'Plate'
7
+ composed_of :tag_group, class_name: 'Tag::Group'
8
+ composed_of :tag2_group, class_name: 'Tag::Group'
9
9
 
10
- has_create_action :resource => 'tag_layout'
10
+ has_create_action resource: 'tag_layout'
11
11
 
12
12
  def dual_index?
13
13
  tag2_group.present?
@@ -2,8 +2,8 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::Transfer < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :source, :class_name => 'BarcodedAsset', :disposition => :inline
6
- belongs_to :destination, :class_name => 'BarcodedAsset', :disposition => :inline
5
+ belongs_to :source, class_name: 'BarcodedAsset', disposition: :inline
6
+ belongs_to :destination, class_name: 'BarcodedAsset', disposition: :inline
7
7
  attribute_reader :transfers
8
8
  attribute_accessor :targets
9
9
  end
@@ -1,11 +1,10 @@
1
1
  require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::TransferRequest < ::Sequencescape::Api::Resource
4
-
5
- belongs_to :source_asset, :class_name => 'Asset'
6
- belongs_to :target_asset, :class_name => 'Asset'
7
- belongs_to :submission, :class_name => 'Submission'
8
- belongs_to :outer_request, :class_name => 'Request'
4
+ belongs_to :source_asset, class_name: 'Asset'
5
+ belongs_to :target_asset, class_name: 'Asset'
6
+ belongs_to :submission, class_name: 'Submission'
7
+ belongs_to :outer_request, class_name: 'Request'
9
8
 
10
9
  attribute_accessor :type, :state, :submission_id, :volume, :merge_equivalent_aliquots
11
10
  end
@@ -4,6 +4,6 @@ class Sequencescape::TransferTemplate < ::Sequencescape::Api::Resource
4
4
  attribute_reader :name
5
5
  attribute_reader :transfers
6
6
 
7
- has_create_action :resource => 'transfer'
8
- has_create_action :preview!, :action => :preview, :resource => 'transfer'
7
+ has_create_action resource: 'transfer'
8
+ has_create_action :preview!, action: :preview, resource: 'transfer'
9
9
  end
@@ -14,13 +14,13 @@ class Sequencescape::Tube < ::Sequencescape::Asset
14
14
 
15
15
  attribute_accessor :closed
16
16
  attribute_accessor :concentration, :volume
17
- attribute_accessor :scanned_in_date, :conversion => :to_time
17
+ attribute_accessor :scanned_in_date, conversion: :to_time
18
18
 
19
19
  attribute_reader :state
20
20
 
21
21
  attribute_accessor :sibling_tubes
22
22
 
23
- belongs_to :purpose, :class_name => 'TubePurpose'
24
- belongs_to :stock_plate, :class_name => 'Plate'
23
+ belongs_to :purpose, class_name: 'TubePurpose'
24
+ belongs_to :stock_plate, class_name: 'Plate'
25
25
  belongs_to :custom_metadatum_collection
26
26
  end
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::TubeCreation < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :parent, :class_name => 'Plate'
6
- belongs_to :child_purpose, :class_name => 'TubePurpose'
7
- has_many :children, :class_name => 'Tube'
5
+ belongs_to :parent, class_name: 'Plate'
6
+ belongs_to :child_purpose, class_name: 'TubePurpose'
7
+ has_many :children, class_name: 'Tube'
8
8
  end
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::TubeFromTubeCreation < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :parent, :class_name => 'Plate'
6
- belongs_to :child_purpose, :class_name => 'TubePurpose'
7
- belongs_to :child, :class_name => 'Tube'
5
+ belongs_to :parent, class_name: 'Plate'
6
+ belongs_to :child_purpose, class_name: 'TubePurpose'
7
+ belongs_to :child, class_name: 'Tube'
8
8
  end
@@ -4,7 +4,7 @@ class Sequencescape::TubePurpose < ::Sequencescape::Api::Resource
4
4
  module TubeCreation
5
5
  def create!(attributes = nil)
6
6
  attributes ||= {}
7
- attributes[:wells].delete_if { |_,v| v.blank? } if attributes.key?(:wells)
7
+ attributes[:wells].delete_if { |_, v| v.blank? } if attributes.key?(:wells)
8
8
 
9
9
  new({}, false).tap do |plate|
10
10
  api.create(actions.create, { 'plate' => attributes }, Sequencescape::Api::ModifyingHandler.new(plate))
@@ -12,8 +12,8 @@ class Sequencescape::TubePurpose < ::Sequencescape::Api::Resource
12
12
  end
13
13
  end
14
14
 
15
- has_many :children, :class_name => 'TubePurpose'
16
- has_many :parents, :class_name => 'TubePurpose'
15
+ has_many :children, class_name: 'TubePurpose'
16
+ has_many :parents, class_name: 'TubePurpose'
17
17
 
18
18
  has_many :tubes do
19
19
  include Sequencescape::TubePurpose::TubeCreation
@@ -5,8 +5,8 @@ class Sequencescape::User < ::Sequencescape::Api::Resource
5
5
  attribute_accessor :last_name
6
6
  attribute_accessor :barcode
7
7
 
8
- #TODO make swipecard_code readonly. Can't at the moment because of a bug
9
- #attribute_writer :swipecard_code
8
+ # TODO: make swipecard_code readonly. Can't at the moment because of a bug
9
+ # attribute_writer :swipecard_code
10
10
  attribute_accessor :swipecard_code
11
11
 
12
12
  attribute_reader :has_a_swipecard_code
@@ -1,6 +1,6 @@
1
1
  require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::VolumeUpdate < ::Sequencescape::Api::Resource
4
- belongs_to :target, :class_name => 'Asset', :disposition => :inline
4
+ belongs_to :target, class_name: 'Asset', disposition: :inline
5
5
  attribute_accessor :volume_change, :created_by
6
6
  end
@@ -3,7 +3,6 @@ require 'sequencescape/behaviour/receptacle'
3
3
  require 'sequencescape/behaviour/state_driven'
4
4
 
5
5
  class Sequencescape::Well < ::Sequencescape::Asset
6
-
7
6
  include Sequencescape::Behaviour::Receptacle
8
7
  include Sequencescape::Behaviour::StateDriven
9
8
 
@@ -15,5 +14,4 @@ class Sequencescape::Well < ::Sequencescape::Asset
15
14
  def pool_id
16
15
  pool.nil? ? nil : pool['id']
17
16
  end
18
-
19
17
  end
@@ -2,7 +2,7 @@ require 'sequencescape-api/resource'
2
2
 
3
3
  class Sequencescape::WorkCompletion < ::Sequencescape::Api::Resource
4
4
  belongs_to :user
5
- belongs_to :target, :class_name => 'Asset'
5
+ belongs_to :target, class_name: 'Asset'
6
6
 
7
7
  # This should really be a has_many, but we'll need
8
8
  # to get assignment from arrays of strings working first.
@@ -1,32 +1,33 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "sequencescape-api/version"
1
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
2
+ require 'sequencescape-api/version'
4
3
 
5
4
  Gem::Specification.new do |s|
6
- s.name = "sequencescape-client-api"
5
+ s.name = 'sequencescape-client-api'
7
6
  s.version = Sequencescape::Api::VERSION
8
7
  s.platform = Gem::Platform::RUBY
9
- s.authors = ["Matthew Denner","James Glover","Eduardo Martin Rojo"]
10
- s.email = ["md12@sanger.ac.uk","james.glover@sanger.ac.uk","emr@sanger.ac.uk"]
11
- s.homepage = ""
12
- s.summary = %q{Gem for the client side of the Sequencescape API}
13
- s.description = %q{Provides all of the necessary code for interacting with the Sequencescape API}
8
+ s.authors = ['Matthew Denner', 'James Glover', 'Eduardo Martin Rojo']
9
+ s.email = ['md12@sanger.ac.uk', 'james.glover@sanger.ac.uk', 'emr@sanger.ac.uk']
10
+ s.homepage = ''
11
+ s.summary = 'Gem for the client side of the Sequencescape API'
12
+ s.description = 'Provides all of the necessary code for interacting with the Sequencescape API'
14
13
 
15
- s.rubyforge_project = "sequencescape-client-api"
14
+ s.rubyforge_project = 'sequencescape-client-api'
16
15
 
17
16
  s.files = `git ls-files`.split("\n")
18
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
- s.require_paths = ["lib"]
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
19
+ s.require_paths = ['lib']
21
20
 
22
- s.add_dependency('activesupport', '>= 4.0.0', '< 5.2')
23
- s.add_dependency('activemodel', '>= 4.0.0', '< 5.2')
21
+ s.add_dependency('activemodel', '>= 5.0.0')
22
+ s.add_dependency('activesupport', '>= 5.0.0')
24
23
  s.add_dependency('i18n')
25
- s.add_dependency('yajl-ruby', '>= 1.3.1')
24
+ s.add_dependency('yajl-ruby', '>= 1.4.1')
26
25
 
27
- s.add_development_dependency('rspec', '~> 2.11.0')
28
26
  s.add_development_dependency('pry')
27
+ s.add_development_dependency('rake')
28
+ s.add_development_dependency('redcarpet')
29
+ s.add_development_dependency('rspec', '~> 2.11.0')
30
+ s.add_development_dependency('rubocop', '~> 0.84.0')
29
31
  s.add_development_dependency('webmock')
30
32
  s.add_development_dependency('yard')
31
- s.add_development_dependency('redcarpet')
32
33
  end