maestrano-connector-rails 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +41 -0
  3. data/.rubocop_todo.yml +180 -0
  4. data/.ruby-version +1 -1
  5. data/CODESHIP.md +3 -1
  6. data/Gemfile +16 -10
  7. data/Rakefile +12 -12
  8. data/VERSION +1 -1
  9. data/app/controllers/maestrano/account/group_users_controller.rb +5 -7
  10. data/app/controllers/maestrano/account/groups_controller.rb +5 -7
  11. data/app/controllers/maestrano/application_controller.rb +1 -1
  12. data/app/controllers/maestrano/auth/saml_controller.rb +5 -10
  13. data/app/controllers/maestrano/connec_controller.rb +12 -11
  14. data/app/controllers/maestrano/sessions_controller.rb +1 -1
  15. data/app/controllers/maestrano/synchronizations_controller.rb +7 -9
  16. data/app/controllers/version_controller.rb +9 -0
  17. data/app/helpers/maestrano/connector/rails/session_helper.rb +0 -2
  18. data/app/jobs/maestrano/connector/rails/all_synchronizations_job.rb +2 -2
  19. data/app/jobs/maestrano/connector/rails/push_to_connec_job.rb +8 -7
  20. data/app/jobs/maestrano/connector/rails/push_to_connec_worker.rb +6 -4
  21. data/app/jobs/maestrano/connector/rails/synchronization_job.rb +10 -9
  22. data/app/models/maestrano/connector/rails/complex_entity.rb +1 -1
  23. data/app/models/maestrano/connector/rails/concerns/complex_entity.rb +10 -12
  24. data/app/models/maestrano/connector/rails/concerns/connec_helper.rb +20 -25
  25. data/app/models/maestrano/connector/rails/concerns/connector_logger.rb +1 -1
  26. data/app/models/maestrano/connector/rails/concerns/entity.rb +63 -69
  27. data/app/models/maestrano/connector/rails/concerns/entity_base.rb +3 -3
  28. data/app/models/maestrano/connector/rails/concerns/external.rb +2 -2
  29. data/app/models/maestrano/connector/rails/concerns/sub_entity_base.rb +13 -15
  30. data/app/models/maestrano/connector/rails/connector_logger.rb +1 -1
  31. data/app/models/maestrano/connector/rails/entity.rb +1 -1
  32. data/app/models/maestrano/connector/rails/external.rb +1 -1
  33. data/app/models/maestrano/connector/rails/id_map.rb +1 -2
  34. data/app/models/maestrano/connector/rails/organization.rb +12 -14
  35. data/app/models/maestrano/connector/rails/sub_entity_base.rb +1 -1
  36. data/app/models/maestrano/connector/rails/synchronization.rb +17 -15
  37. data/app/models/maestrano/connector/rails/user.rb +1 -2
  38. data/app/models/maestrano/connector/rails/user_organization_rel.rb +1 -2
  39. data/config/routes.rb +4 -2
  40. data/lib/maestrano/connector/rails.rb +17 -2
  41. data/lib/maestrano_connector_rails.rb +1 -0
  42. data/maestrano-connector-rails.gemspec +32 -13
  43. data/release_notes.md +5 -0
  44. data/spec/controllers/version_controller_spec.rb +17 -0
  45. data/spec/dummy/config/application.rb +1 -1
  46. data/spec/jobs/push_to_connec_worker_spec.rb +16 -5
  47. data/spec/models/synchronization_spec.rb +9 -9
  48. data/spec/models/user_organization_rel_spec.rb +1 -1
  49. data/template/maestrano-connector-template.rb +2 -17
  50. metadata +90 -16
  51. data/lib/maestrano-connector-rails.rb +0 -1
@@ -1,7 +1,7 @@
1
1
  module Maestrano::Connector::Rails::Concerns::EntityBase
2
2
  extend ActiveSupport::Concern
3
3
 
4
- def initialize(organization, connec_client, external_client, opts={})
4
+ def initialize(organization, connec_client, external_client, opts = {})
5
5
  @organization = organization
6
6
  @connec_client = connec_client
7
7
  @external_client = external_client
@@ -22,7 +22,7 @@ module Maestrano::Connector::Rails::Concerns::EntityBase
22
22
 
23
23
  # This method is called during the webhook workflow only. It should return the hash of arrays of filtered entities
24
24
  # The aim is to have the same filtering as with the Connec! filters on API calls in the webhooks
25
- # input :
25
+ # input :
26
26
  # For non complex entities [unmapped_external_entity1, unmapped_external_entity2]
27
27
  # For complex entities {
28
28
  # external_entities_names[0]: [unmapped_external_entity1, unmapped_external_entity2],
@@ -31,4 +31,4 @@ module Maestrano::Connector::Rails::Concerns::EntityBase
31
31
  def filter_connec_entities(entities)
32
32
  entities
33
33
  end
34
- end
34
+ end
@@ -14,7 +14,7 @@ module Maestrano::Connector::Rails::Concerns::External
14
14
  # If you add new entities, you need to generate
15
15
  # a migration to add them to existing organizations
16
16
  def entities_list
17
- raise "Not implemented"
17
+ raise 'Not implemented'
18
18
  end
19
19
  end
20
- end
20
+ end
@@ -3,27 +3,21 @@ module Maestrano::Connector::Rails::Concerns::SubEntityBase
3
3
 
4
4
  module ClassMethods
5
5
  def external?
6
- raise "Not implemented"
6
+ raise 'Not implemented'
7
7
  end
8
8
 
9
9
  def entity_name
10
- raise "Not implemented"
10
+ raise 'Not implemented'
11
11
  end
12
12
 
13
13
  def external_entity_name
14
- if external?
15
- entity_name
16
- else
17
- raise "Forbidden call: cannot call external_entity_name for a connec entity"
18
- end
14
+ return entity_name if external?
15
+ raise 'Forbidden call: cannot call external_entity_name for a connec entity'
19
16
  end
20
17
 
21
18
  def connec_entity_name
22
- if external?
23
- raise "Forbidden call: cannot call connec_entity_name for an external entity"
24
- else
25
- entity_name
26
- end
19
+ return entity_name unless external?
20
+ raise 'Forbidden call: cannot call connec_entity_name for an external entity'
27
21
  end
28
22
 
29
23
  def names_hash
@@ -49,7 +43,6 @@ module Maestrano::Connector::Rails::Concerns::SubEntityBase
49
43
  end
50
44
  end
51
45
 
52
-
53
46
  def map_to(name, entity)
54
47
  mapper = self.class.mapper_classes[name]
55
48
  raise "Impossible mapping from #{self.class.entity_name} to #{name}" unless mapper
@@ -57,7 +50,12 @@ module Maestrano::Connector::Rails::Concerns::SubEntityBase
57
50
  if self.class.external?
58
51
  mapped_entity = mapper.denormalize(entity).merge(id: self.class.id_from_external_entity_hash(entity))
59
52
  folded_entity = Maestrano::Connector::Rails::ConnecHelper.fold_references(mapped_entity, self.class.references[name] || [], @organization)
60
- folded_entity.merge!(opts: (folded_entity[:opts] || {}).merge(matching_fields: self.class.connec_matching_fields)) if self.class.connec_matching_fields
53
+
54
+ if self.class.connec_matching_fields
55
+ folded_entity[:opts] ||= {}
56
+ folded_entity[:opts][:matching_fields] = self.class.connec_matching_fields
57
+ end
58
+
61
59
  folded_entity
62
60
  else
63
61
  connec_id = entity[:__connec_id]
@@ -73,4 +71,4 @@ module Maestrano::Connector::Rails::Concerns::SubEntityBase
73
71
  def map_external_entity_with_idmap(external_entity, connec_entity_name, idmap)
74
72
  {entity: map_to(connec_entity_name, external_entity), idmap: idmap}
75
73
  end
76
- end
74
+ end
@@ -2,4 +2,4 @@ module Maestrano::Connector::Rails
2
2
  class ConnectorLogger
3
3
  include Maestrano::Connector::Rails::Concerns::ConnectorLogger
4
4
  end
5
- end
5
+ end
@@ -2,4 +2,4 @@ module Maestrano::Connector::Rails
2
2
  class Entity < EntityBase
3
3
  include Maestrano::Connector::Rails::Concerns::Entity
4
4
  end
5
- end
5
+ end
@@ -2,4 +2,4 @@ module Maestrano::Connector::Rails
2
2
  class External
3
3
  include Maestrano::Connector::Rails::Concerns::External
4
4
  end
5
- end
5
+ end
@@ -1,6 +1,5 @@
1
1
  module Maestrano::Connector::Rails
2
2
  class IdMap < ActiveRecord::Base
3
-
4
3
  belongs_to :organization
5
4
  end
6
- end
5
+ end
@@ -2,11 +2,11 @@ module Maestrano::Connector::Rails
2
2
  class Organization < ActiveRecord::Base
3
3
  # Enable Maestrano for this group
4
4
  maestrano_group_via :provider, :uid, :tenant do |group, maestrano|
5
- group.name = (maestrano.name.blank? ? "Default Group name" : maestrano.name)
5
+ group.name = (maestrano.name.blank? ? 'Default Group name' : maestrano.name)
6
6
  group.tenant = 'default' # To be set from SSO parameter
7
- #group.country_alpha2 = maestrano.country
8
- #group.free_trial_end_at = maestrano.free_trial_end_at
9
- #group.some_required_field = 'some-appropriate-default-value'
7
+ # group.country_alpha2 = maestrano.country
8
+ # group.free_trial_end_at = maestrano.free_trial_end_at
9
+ # group.some_required_field = 'some-appropriate-default-value'
10
10
  end
11
11
 
12
12
  def initialize
@@ -20,7 +20,7 @@ module Maestrano::Connector::Rails
20
20
  #===================================
21
21
  # Encryptions
22
22
  #===================================
23
- attr_encrypted_options.merge!(:mode => :per_attribute_iv_and_salt)
23
+ attr_encrypted_options[:mode] = :per_attribute_iv_and_salt
24
24
  attr_encrypted :oauth_token, key: ::Settings.encryption_key1
25
25
  attr_encrypted :refresh_token, key: ::Settings.encryption_key2
26
26
 
@@ -45,17 +45,15 @@ module Maestrano::Connector::Rails
45
45
  serialize :synchronized_entities
46
46
 
47
47
  def add_member(user)
48
- if self.tenant == user.tenant && !self.member?(user)
49
- self.user_organization_rels.create(user:user)
50
- end
48
+ user_organization_rels.create(user: user) if tenant == user.tenant && !member?(user)
51
49
  end
52
50
 
53
51
  def member?(user)
54
- self.user_organization_rels.where(user_id:user.id).count > 0
52
+ user_organization_rels.where(user_id: user.id).count > 0
55
53
  end
56
54
 
57
55
  def remove_member(user)
58
- self.user_organization_rels.where(user_id:user.id).delete_all
56
+ user_organization_rels.where(user_id: user.id).delete_all
59
57
  end
60
58
 
61
59
  def from_omniauth(auth)
@@ -64,20 +62,20 @@ module Maestrano::Connector::Rails
64
62
  self.oauth_token = auth.credentials.token
65
63
  self.refresh_token = auth.credentials.refresh_token
66
64
  self.instance_url = auth.credentials.instance_url
67
- self.save!
65
+ save!
68
66
  end
69
67
 
70
68
  def last_three_synchronizations_failed?
71
- arr = self.synchronizations.last(3).map(&:is_error?)
69
+ arr = synchronizations.last(3).map(&:error?)
72
70
  arr.count == 3 && arr.uniq == [true]
73
71
  end
74
72
 
75
73
  def last_successful_synchronization
76
- self.synchronizations.where(status: 'SUCCESS', partial: false).order(updated_at: :desc).first
74
+ synchronizations.where(status: 'SUCCESS', partial: false).order(updated_at: :desc).first
77
75
  end
78
76
 
79
77
  def last_synchronization_date
80
78
  (last_successful_synchronization && last_successful_synchronization.updated_at) || date_filtering_limit
81
79
  end
82
80
  end
83
- end
81
+ end
@@ -2,4 +2,4 @@ module Maestrano::Connector::Rails
2
2
  class SubEntityBase < Entity
3
3
  include Maestrano::Connector::Rails::Concerns::SubEntityBase
4
4
  end
5
- end
5
+ end
@@ -3,6 +3,10 @@ module Maestrano::Connector::Rails
3
3
  # Keeping only 100 synchronizations per organization
4
4
  after_create :clean_synchronizations
5
5
 
6
+ RUNNING_STATUS = 'RUNNING'.freeze
7
+ ERROR_STATUS = 'ERROR'.freeze
8
+ SUCCESS_STATUS = 'SUCCESS'.freeze
9
+
6
10
  #===================================
7
11
  # Associations
8
12
  #===================================
@@ -10,39 +14,37 @@ module Maestrano::Connector::Rails
10
14
 
11
15
  validates :status, presence: true
12
16
 
13
- def is_running?
14
- self.status == 'RUNNING'
17
+ def running?
18
+ status == RUNNING_STATUS
15
19
  end
16
20
 
17
- def is_error?
18
- self.status == 'ERROR'
21
+ def error?
22
+ status == ERROR_STATUS
19
23
  end
20
24
 
21
- def is_success?
22
- self.status == 'SUCCESS'
25
+ def success?
26
+ status == SUCCESS_STATUS
23
27
  end
24
28
 
25
29
  def self.create_running(organization)
26
- Synchronization.create(organization_id: organization.id, status: 'RUNNING')
30
+ Synchronization.create(organization_id: organization.id, status: RUNNING_STATUS)
27
31
  end
28
32
 
29
33
  def set_success
30
- self.update_attributes(status: 'SUCCESS')
34
+ update_attributes(status: SUCCESS_STATUS)
31
35
  end
32
36
 
33
37
  def set_error(msg)
34
- self.update_attributes(status: 'ERROR', message: msg)
38
+ update_attributes(status: ERROR_STATUS, message: msg)
35
39
  end
36
40
 
37
41
  def set_partial
38
- self.update_attributes(partial: true)
42
+ update_attributes(partial: true)
39
43
  end
40
44
 
41
45
  def clean_synchronizations
42
- count = self.organization.synchronizations.count
43
- if count > 100
44
- self.organization.synchronizations.order('id ASC').limit(count - 100).destroy_all
45
- end
46
+ count = organization.synchronizations.count
47
+ organization.synchronizations.order('id ASC').limit(count - 100).destroy_all if count > 100
46
48
  end
47
49
  end
48
- end
50
+ end
@@ -1,6 +1,5 @@
1
1
  module Maestrano::Connector::Rails
2
2
  class User < ActiveRecord::Base
3
-
4
3
  # Enable Maestrano for this user
5
4
  maestrano_user_via :provider, :uid, :tenant do |user, maestrano|
6
5
  user.uid = maestrano.uid
@@ -23,4 +22,4 @@ module Maestrano::Connector::Rails
23
22
  validates :email, presence: true
24
23
  validates :tenant, presence: true
25
24
  end
26
- end
25
+ end
@@ -1,10 +1,9 @@
1
1
  module Maestrano::Connector::Rails
2
2
  class UserOrganizationRel < ActiveRecord::Base
3
-
4
3
  #===================================
5
4
  # Associations
6
5
  #===================================
7
6
  belongs_to :user
8
7
  belongs_to :organization
9
8
  end
10
- end
9
+ end
data/config/routes.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  Maestrano::Connector::Rails::Engine.routes.draw do
2
2
  maestrano_routes
3
3
 
4
+ get 'version', to: 'version#index'
5
+
4
6
  namespace :maestrano do
5
- match 'signout', to: 'sessions#destroy', as: 'signout', via: [:get, :post]
7
+ match 'signout', to: 'sessions#destroy', as: 'signout', via: [:get, :post]
6
8
  post 'connec/notifications/:tenant' => 'connec#notifications'
7
9
 
8
10
  resources :synchronizations, only: [:show, :create] do
@@ -12,4 +14,4 @@ Maestrano::Connector::Rails::Engine.routes.draw do
12
14
  end
13
15
  resources :dependancies, only: [:index]
14
16
  end
15
- end
17
+ end
@@ -1,7 +1,22 @@
1
- require 'maestrano'
2
1
  require 'maestrano-rails'
2
+
3
+ require 'haml-rails'
4
+ require 'bootstrap-sass'
5
+ require 'autoprefixer-rails'
6
+
3
7
  require 'hash_mapper'
4
8
 
9
+ require 'config'
10
+ require 'figaro'
11
+
12
+ require 'attr_encrypted'
13
+
14
+ require 'sidekiq'
15
+ require 'sidekiq-cron'
16
+ require 'sidekiq-unique-jobs'
17
+ require 'sinatra'
18
+ require 'slim'
19
+
5
20
  module Maestrano
6
21
  module Connector
7
22
  module Rails
@@ -10,4 +25,4 @@ module Maestrano
10
25
  end
11
26
  end
12
27
  end
13
- end
28
+ end
@@ -0,0 +1 @@
1
+ require 'maestrano/connector/rails'
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: maestrano-connector-rails 1.2.1 ruby lib
5
+ # stub: maestrano-connector-rails 1.2.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "maestrano-connector-rails"
9
- s.version = "1.2.1"
9
+ s.version = "1.2.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Pierre Berard"]
14
- s.date = "2016-07-04"
14
+ s.date = "2016-07-05"
15
15
  s.description = "Maestrano is the next generation marketplace for SME applications. See https://maestrano.com for details."
16
16
  s.email = "pierre.berard@maestrano.com"
17
17
  s.executables = ["rails"]
@@ -21,6 +21,8 @@ Gem::Specification.new do |s|
21
21
  ]
22
22
  s.files = [
23
23
  ".rspec",
24
+ ".rubocop.yml",
25
+ ".rubocop_todo.yml",
24
26
  ".ruby-version",
25
27
  "CODESHIP.md",
26
28
  "DEVELOPER.md",
@@ -37,6 +39,7 @@ Gem::Specification.new do |s|
37
39
  "app/controllers/maestrano/dependancies_controller.rb",
38
40
  "app/controllers/maestrano/sessions_controller.rb",
39
41
  "app/controllers/maestrano/synchronizations_controller.rb",
42
+ "app/controllers/version_controller.rb",
40
43
  "app/helpers/maestrano/connector/rails/session_helper.rb",
41
44
  "app/jobs/maestrano/connector/rails/all_synchronizations_job.rb",
42
45
  "app/jobs/maestrano/connector/rails/push_to_connec_job.rb",
@@ -103,8 +106,8 @@ Gem::Specification.new do |s|
103
106
  "lib/generators/connector/templates/synchronizations_controller.rb",
104
107
  "lib/generators/connector/templates/synchronizations_controller_spec.rb",
105
108
  "lib/generators/connector/templates/synchronizations_index.haml",
106
- "lib/maestrano-connector-rails.rb",
107
109
  "lib/maestrano/connector/rails.rb",
110
+ "lib/maestrano_connector_rails.rb",
108
111
  "maestrano-connector-rails.gemspec",
109
112
  "maestrano.png",
110
113
  "release_notes.md",
@@ -113,6 +116,7 @@ Gem::Specification.new do |s|
113
116
  "spec/controllers/group_users_controller_spec.rb",
114
117
  "spec/controllers/groups_controller_spec.rb",
115
118
  "spec/controllers/synchronizations_controller_spec.rb",
119
+ "spec/controllers/version_controller_spec.rb",
116
120
  "spec/dummy/README.md",
117
121
  "spec/dummy/Rakefile",
118
122
  "spec/dummy/app/assets/images/.keep",
@@ -215,16 +219,20 @@ Gem::Specification.new do |s|
215
219
  s.specification_version = 4
216
220
 
217
221
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
218
- s.add_runtime_dependency(%q<rails>, ["~> 4.0"])
222
+ s.add_runtime_dependency(%q<rails>, ["~> 4.2"])
219
223
  s.add_runtime_dependency(%q<maestrano-rails>, [">= 0"])
220
224
  s.add_runtime_dependency(%q<hash_mapper>, [">= 0"])
221
- s.add_runtime_dependency(%q<sidekiq>, [">= 0"])
222
- s.add_runtime_dependency(%q<sidekiq-unique-jobs>, [">= 0"])
223
225
  s.add_runtime_dependency(%q<haml-rails>, [">= 0"])
224
226
  s.add_runtime_dependency(%q<bootstrap-sass>, [">= 0"])
225
227
  s.add_runtime_dependency(%q<autoprefixer-rails>, [">= 0"])
226
228
  s.add_runtime_dependency(%q<attr_encrypted>, ["~> 1.4.0"])
227
229
  s.add_runtime_dependency(%q<config>, [">= 0"])
230
+ s.add_runtime_dependency(%q<figaro>, [">= 0"])
231
+ s.add_runtime_dependency(%q<sidekiq>, [">= 0"])
232
+ s.add_runtime_dependency(%q<sidekiq-unique-jobs>, [">= 0"])
233
+ s.add_runtime_dependency(%q<sinatra>, [">= 0"])
234
+ s.add_runtime_dependency(%q<sidekiq-cron>, [">= 0"])
235
+ s.add_runtime_dependency(%q<slim>, [">= 0"])
228
236
  s.add_development_dependency(%q<shoulda>, [">= 0"])
229
237
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
230
238
  s.add_development_dependency(%q<bundler>, ["~> 1.0"])
@@ -234,18 +242,23 @@ Gem::Specification.new do |s|
234
242
  s.add_development_dependency(%q<factory_girl_rails>, [">= 0"])
235
243
  s.add_development_dependency(%q<sqlite3>, [">= 0"])
236
244
  s.add_development_dependency(%q<shoulda-matchers>, [">= 0"])
245
+ s.add_development_dependency(%q<rubocop>, [">= 0"])
237
246
  s.add_development_dependency(%q<timecop>, [">= 0"])
238
247
  else
239
- s.add_dependency(%q<rails>, ["~> 4.0"])
248
+ s.add_dependency(%q<rails>, ["~> 4.2"])
240
249
  s.add_dependency(%q<maestrano-rails>, [">= 0"])
241
250
  s.add_dependency(%q<hash_mapper>, [">= 0"])
242
- s.add_dependency(%q<sidekiq>, [">= 0"])
243
- s.add_dependency(%q<sidekiq-unique-jobs>, [">= 0"])
244
251
  s.add_dependency(%q<haml-rails>, [">= 0"])
245
252
  s.add_dependency(%q<bootstrap-sass>, [">= 0"])
246
253
  s.add_dependency(%q<autoprefixer-rails>, [">= 0"])
247
254
  s.add_dependency(%q<attr_encrypted>, ["~> 1.4.0"])
248
255
  s.add_dependency(%q<config>, [">= 0"])
256
+ s.add_dependency(%q<figaro>, [">= 0"])
257
+ s.add_dependency(%q<sidekiq>, [">= 0"])
258
+ s.add_dependency(%q<sidekiq-unique-jobs>, [">= 0"])
259
+ s.add_dependency(%q<sinatra>, [">= 0"])
260
+ s.add_dependency(%q<sidekiq-cron>, [">= 0"])
261
+ s.add_dependency(%q<slim>, [">= 0"])
249
262
  s.add_dependency(%q<shoulda>, [">= 0"])
250
263
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
251
264
  s.add_dependency(%q<bundler>, ["~> 1.0"])
@@ -255,19 +268,24 @@ Gem::Specification.new do |s|
255
268
  s.add_dependency(%q<factory_girl_rails>, [">= 0"])
256
269
  s.add_dependency(%q<sqlite3>, [">= 0"])
257
270
  s.add_dependency(%q<shoulda-matchers>, [">= 0"])
271
+ s.add_dependency(%q<rubocop>, [">= 0"])
258
272
  s.add_dependency(%q<timecop>, [">= 0"])
259
273
  end
260
274
  else
261
- s.add_dependency(%q<rails>, ["~> 4.0"])
275
+ s.add_dependency(%q<rails>, ["~> 4.2"])
262
276
  s.add_dependency(%q<maestrano-rails>, [">= 0"])
263
277
  s.add_dependency(%q<hash_mapper>, [">= 0"])
264
- s.add_dependency(%q<sidekiq>, [">= 0"])
265
- s.add_dependency(%q<sidekiq-unique-jobs>, [">= 0"])
266
278
  s.add_dependency(%q<haml-rails>, [">= 0"])
267
279
  s.add_dependency(%q<bootstrap-sass>, [">= 0"])
268
280
  s.add_dependency(%q<autoprefixer-rails>, [">= 0"])
269
281
  s.add_dependency(%q<attr_encrypted>, ["~> 1.4.0"])
270
282
  s.add_dependency(%q<config>, [">= 0"])
283
+ s.add_dependency(%q<figaro>, [">= 0"])
284
+ s.add_dependency(%q<sidekiq>, [">= 0"])
285
+ s.add_dependency(%q<sidekiq-unique-jobs>, [">= 0"])
286
+ s.add_dependency(%q<sinatra>, [">= 0"])
287
+ s.add_dependency(%q<sidekiq-cron>, [">= 0"])
288
+ s.add_dependency(%q<slim>, [">= 0"])
271
289
  s.add_dependency(%q<shoulda>, [">= 0"])
272
290
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
273
291
  s.add_dependency(%q<bundler>, ["~> 1.0"])
@@ -277,6 +295,7 @@ Gem::Specification.new do |s|
277
295
  s.add_dependency(%q<factory_girl_rails>, [">= 0"])
278
296
  s.add_dependency(%q<sqlite3>, [">= 0"])
279
297
  s.add_dependency(%q<shoulda-matchers>, [">= 0"])
298
+ s.add_dependency(%q<rubocop>, [">= 0"])
280
299
  s.add_dependency(%q<timecop>, [">= 0"])
281
300
  end
282
301
  end