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.
- checksums.yaml +4 -4
- data/.rubocop.yml +41 -0
- data/.rubocop_todo.yml +180 -0
- data/.ruby-version +1 -1
- data/CODESHIP.md +3 -1
- data/Gemfile +16 -10
- data/Rakefile +12 -12
- data/VERSION +1 -1
- data/app/controllers/maestrano/account/group_users_controller.rb +5 -7
- data/app/controllers/maestrano/account/groups_controller.rb +5 -7
- data/app/controllers/maestrano/application_controller.rb +1 -1
- data/app/controllers/maestrano/auth/saml_controller.rb +5 -10
- data/app/controllers/maestrano/connec_controller.rb +12 -11
- data/app/controllers/maestrano/sessions_controller.rb +1 -1
- data/app/controllers/maestrano/synchronizations_controller.rb +7 -9
- data/app/controllers/version_controller.rb +9 -0
- data/app/helpers/maestrano/connector/rails/session_helper.rb +0 -2
- data/app/jobs/maestrano/connector/rails/all_synchronizations_job.rb +2 -2
- data/app/jobs/maestrano/connector/rails/push_to_connec_job.rb +8 -7
- data/app/jobs/maestrano/connector/rails/push_to_connec_worker.rb +6 -4
- data/app/jobs/maestrano/connector/rails/synchronization_job.rb +10 -9
- data/app/models/maestrano/connector/rails/complex_entity.rb +1 -1
- data/app/models/maestrano/connector/rails/concerns/complex_entity.rb +10 -12
- data/app/models/maestrano/connector/rails/concerns/connec_helper.rb +20 -25
- data/app/models/maestrano/connector/rails/concerns/connector_logger.rb +1 -1
- data/app/models/maestrano/connector/rails/concerns/entity.rb +63 -69
- data/app/models/maestrano/connector/rails/concerns/entity_base.rb +3 -3
- data/app/models/maestrano/connector/rails/concerns/external.rb +2 -2
- data/app/models/maestrano/connector/rails/concerns/sub_entity_base.rb +13 -15
- data/app/models/maestrano/connector/rails/connector_logger.rb +1 -1
- data/app/models/maestrano/connector/rails/entity.rb +1 -1
- data/app/models/maestrano/connector/rails/external.rb +1 -1
- data/app/models/maestrano/connector/rails/id_map.rb +1 -2
- data/app/models/maestrano/connector/rails/organization.rb +12 -14
- data/app/models/maestrano/connector/rails/sub_entity_base.rb +1 -1
- data/app/models/maestrano/connector/rails/synchronization.rb +17 -15
- data/app/models/maestrano/connector/rails/user.rb +1 -2
- data/app/models/maestrano/connector/rails/user_organization_rel.rb +1 -2
- data/config/routes.rb +4 -2
- data/lib/maestrano/connector/rails.rb +17 -2
- data/lib/maestrano_connector_rails.rb +1 -0
- data/maestrano-connector-rails.gemspec +32 -13
- data/release_notes.md +5 -0
- data/spec/controllers/version_controller_spec.rb +17 -0
- data/spec/dummy/config/application.rb +1 -1
- data/spec/jobs/push_to_connec_worker_spec.rb +16 -5
- data/spec/models/synchronization_spec.rb +9 -9
- data/spec/models/user_organization_rel_spec.rb +1 -1
- data/template/maestrano-connector-template.rb +2 -17
- metadata +90 -16
- 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
|
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
|
6
|
+
raise 'Not implemented'
|
7
7
|
end
|
8
8
|
|
9
9
|
def entity_name
|
10
|
-
raise
|
10
|
+
raise 'Not implemented'
|
11
11
|
end
|
12
12
|
|
13
13
|
def external_entity_name
|
14
|
-
if external?
|
15
|
-
|
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
|
-
|
23
|
-
|
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
|
-
|
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,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? ?
|
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
|
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
|
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
|
-
|
52
|
+
user_organization_rels.where(user_id: user.id).count > 0
|
55
53
|
end
|
56
54
|
|
57
55
|
def remove_member(user)
|
58
|
-
|
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
|
-
|
65
|
+
save!
|
68
66
|
end
|
69
67
|
|
70
68
|
def last_three_synchronizations_failed?
|
71
|
-
arr =
|
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
|
-
|
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
|
@@ -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
|
14
|
-
|
17
|
+
def running?
|
18
|
+
status == RUNNING_STATUS
|
15
19
|
end
|
16
20
|
|
17
|
-
def
|
18
|
-
|
21
|
+
def error?
|
22
|
+
status == ERROR_STATUS
|
19
23
|
end
|
20
24
|
|
21
|
-
def
|
22
|
-
|
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:
|
30
|
+
Synchronization.create(organization_id: organization.id, status: RUNNING_STATUS)
|
27
31
|
end
|
28
32
|
|
29
33
|
def set_success
|
30
|
-
|
34
|
+
update_attributes(status: SUCCESS_STATUS)
|
31
35
|
end
|
32
36
|
|
33
37
|
def set_error(msg)
|
34
|
-
|
38
|
+
update_attributes(status: ERROR_STATUS, message: msg)
|
35
39
|
end
|
36
40
|
|
37
41
|
def set_partial
|
38
|
-
|
42
|
+
update_attributes(partial: true)
|
39
43
|
end
|
40
44
|
|
41
45
|
def clean_synchronizations
|
42
|
-
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
|
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
|
-
|
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.
|
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.
|
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-
|
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.
|
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.
|
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.
|
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
|