devise-ios-rails 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +114 -0
  3. data/Rakefile +3 -0
  4. data/app/controllers/devise_ios_rails/passwords_controller.rb +29 -0
  5. data/app/controllers/devise_ios_rails/registrations_controller.rb +19 -0
  6. data/app/serializers/errors_serializer.rb +16 -0
  7. data/app/services/devise_ios_rails/change_password_service.rb +26 -0
  8. data/lib/devise-ios-rails.rb +54 -0
  9. data/lib/devise-ios-rails/engine.rb +5 -0
  10. data/lib/devise-ios-rails/rails/routes.rb +19 -0
  11. data/lib/devise-ios-rails/version.rb +3 -0
  12. data/lib/tasks/devise-ios-rails_tasks.rake +4 -0
  13. data/spec/devise-ios-rails_test.rb +7 -0
  14. data/spec/dummy/Gemfile +75 -0
  15. data/spec/dummy/Gemfile.lock +537 -0
  16. data/spec/dummy/README.md +225 -0
  17. data/spec/dummy/Rakefile +6 -0
  18. data/spec/dummy/app/assets/javascripts/active_admin.js.coffee +1 -0
  19. data/spec/dummy/app/assets/javascripts/application.js.coffee +0 -0
  20. data/spec/dummy/app/assets/javascripts/secret_spaces.coffee +3 -0
  21. data/spec/dummy/app/assets/stylesheets/active_admin.css.scss +17 -0
  22. data/spec/dummy/app/assets/stylesheets/application.css.scss +0 -0
  23. data/spec/dummy/app/assets/stylesheets/scaffolds.css.scss +69 -0
  24. data/spec/dummy/app/assets/stylesheets/secret_spaces.css.scss +3 -0
  25. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  26. data/spec/dummy/app/controllers/secret_spaces_controller.rb +49 -0
  27. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  28. data/spec/dummy/app/helpers/secret_spaces_helper.rb +2 -0
  29. data/spec/dummy/app/models/secret_space.rb +3 -0
  30. data/spec/dummy/app/models/user.rb +5 -0
  31. data/spec/dummy/app/serializers/secret_space_serializer.rb +3 -0
  32. data/spec/dummy/app/serializers/user_serializer.rb +8 -0
  33. data/spec/dummy/app/serializers/v1/base_serializer.rb +5 -0
  34. data/spec/dummy/app/serializers/v1/user_serializer.rb +4 -0
  35. data/spec/dummy/app/views/secret_spaces/_form.html.haml +13 -0
  36. data/spec/dummy/app/views/secret_spaces/edit.html.haml +7 -0
  37. data/spec/dummy/app/views/secret_spaces/index.html.haml +19 -0
  38. data/spec/dummy/app/views/secret_spaces/new.html.haml +5 -0
  39. data/spec/dummy/app/views/secret_spaces/show.html.haml +9 -0
  40. data/spec/dummy/bin/bundle +3 -0
  41. data/spec/dummy/bin/bundler +16 -0
  42. data/spec/dummy/bin/rails +8 -0
  43. data/spec/dummy/bin/rake +8 -0
  44. data/spec/dummy/bin/rspec +20 -0
  45. data/spec/dummy/bin/spring +18 -0
  46. data/spec/dummy/config.ru +12 -0
  47. data/spec/dummy/config/application.rb +23 -0
  48. data/spec/dummy/config/boot.rb +8 -0
  49. data/spec/dummy/config/database.yml +20 -0
  50. data/spec/dummy/config/deploy.rb +48 -0
  51. data/spec/dummy/config/deploy/production.rb +5 -0
  52. data/spec/dummy/config/deploy/staging.rb +4 -0
  53. data/spec/dummy/config/environment.rb +5 -0
  54. data/spec/dummy/config/environments/development.rb +19 -0
  55. data/spec/dummy/config/environments/heroku.rb +26 -0
  56. data/spec/dummy/config/environments/production.rb +26 -0
  57. data/spec/dummy/config/environments/staging.rb +27 -0
  58. data/spec/dummy/config/environments/test.rb +14 -0
  59. data/spec/dummy/config/initializers/active_model_serializer.rb +5 -0
  60. data/spec/dummy/config/initializers/assets.rb +8 -0
  61. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  62. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  63. data/spec/dummy/config/initializers/devise.rb +47 -0
  64. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  65. data/spec/dummy/config/initializers/inflections.rb +16 -0
  66. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  67. data/spec/dummy/config/initializers/session_store.rb +3 -0
  68. data/spec/dummy/config/initializers/simple_token_authentication.rb +25 -0
  69. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  70. data/spec/dummy/config/locales/devise.en.yml +60 -0
  71. data/spec/dummy/config/locales/en.yml +23 -0
  72. data/spec/dummy/config/routes.rb +10 -0
  73. data/spec/dummy/config/secrets.yml +17 -0
  74. data/spec/dummy/db/migrate/20141127081722_devise_create_users.rb +19 -0
  75. data/spec/dummy/db/migrate/20141127114158_add_authentication_token_to_users.rb +6 -0
  76. data/spec/dummy/db/migrate/20141201085308_add_unique_index_to_authentication_token_in_users.rb +6 -0
  77. data/spec/dummy/db/migrate/20141201111915_remove_username_from_users.rb +5 -0
  78. data/spec/dummy/db/migrate/20141208080520_create_secret_spaces.rb +9 -0
  79. data/spec/dummy/db/migrate/20141215153026_create_active_admin_comments.rb +19 -0
  80. data/spec/dummy/db/saaskit_development.sqlite3 +0 -0
  81. data/spec/dummy/db/saaskit_test.sqlite3 +0 -0
  82. data/spec/dummy/db/schema.rb +51 -0
  83. data/spec/dummy/db/seeds.rb +1 -0
  84. data/spec/dummy/log/development.log +610 -0
  85. data/spec/dummy/log/test.log +10113 -0
  86. data/spec/dummy/spec/api/v1/authorized_users_spec.rb +141 -0
  87. data/spec/dummy/spec/api/v1/login_spec.rb +82 -0
  88. data/spec/dummy/spec/api/v1/request_password_reset_spec.rb +39 -0
  89. data/spec/dummy/spec/api/v1/unauthorized_users_spec.rb +69 -0
  90. data/spec/dummy/spec/factories/authentications.rb +48 -0
  91. data/spec/dummy/spec/factories/secret_spaces.rb +6 -0
  92. data/spec/dummy/spec/factories/users.rb +13 -0
  93. data/spec/dummy/spec/factories_spec.rb +21 -0
  94. data/spec/dummy/spec/rails_helper.rb +16 -0
  95. data/spec/dummy/spec/serializers/v1/user_serializer_spec.rb +12 -0
  96. data/spec/dummy/spec/services/devise_ios_rails/change_password_service_spec.rb +47 -0
  97. data/spec/dummy/spec/spec_helper.rb +24 -0
  98. data/spec/dummy/spec/support/devise.rb +3 -0
  99. data/spec/dummy/spec/support/factory_girl.rb +7 -0
  100. data/spec/dummy/spec/support/helpers/json.rb +3 -0
  101. data/spec/dummy/spec/support/shared_contexts/authenticated.rb +3 -0
  102. data/spec/dummy/spec/support/shared_contexts/json_format.rb +5 -0
  103. data/spec/dummy/spec/support/shared_examples/authorized.rb +18 -0
  104. data/spec/dummy/spec/support/shared_examples/requests.rb +65 -0
  105. data/spec/rails_helper.rb +52 -0
  106. data/spec/serializers/errors_serializer_spec.rb +11 -0
  107. data/spec/spec_helper.rb +85 -0
  108. metadata +336 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c17fcadc9c5349f11163cfe2c09ef3f4e0fd99ce
4
+ data.tar.gz: 54ce73d1bdc8a314d958420534c5f14b93b2f543
5
+ SHA512:
6
+ metadata.gz: 9a0c35fcdd0b2a90d976c9773a2ef669c34bc2e5664899d4a8be824c760c23b208177a04589589d05ff085793d487cbc2daba4263c79acdbf1e79ec7dea4d0aa
7
+ data.tar.gz: 15bb9ced435abf852b3c350b747df43ba05dd054e95df57cfc9568a358944d9c4d4b1dfb60981fa60c3137e9187c5b40e37cac0cec75734223866853696feec7
@@ -0,0 +1,114 @@
1
+ Devise iOS Rails Backend
2
+ ====================================
3
+
4
+ Gem that updates devise to work with external clients. Specially created to work with [devise for iOS][ios_devise].
5
+
6
+ It currently implements authentication only with a "simple token authentication".
7
+
8
+ Requirements
9
+ ============
10
+
11
+ | Name | Version |
12
+ | :--: | :---: |
13
+ | [Ruby][ruby] | 2.1.5 |
14
+ | [Rails][rails] | 4.1.8 |
15
+ | [Devise][devise] | |
16
+ | [Simple Token Authentication][simple_token_authentication] | |
17
+ | [Active Model Serializers][active_model_serializers] | |
18
+
19
+ Setup
20
+ =====
21
+
22
+ With a working devise environment, the only thing you need to do is:
23
+
24
+ - add gem to the Gemfile `gem 'devise-ios-rails'`
25
+ - run bundler to install the gem `bundle install`
26
+ - setup devise like you would normally do ([check the installation guide][devise])
27
+ - in your routes change `devise_for ModelName` with `devise_ios_rails_for ModelName` (ModelName is usually User)
28
+ - authentication is handled by user token which is generated for each user during the registration process.
29
+
30
+ To make it work you need to run migration that adds `authentication_token` column to your Devise model.
31
+ If your ModelName is `User` then the migration should look like this:
32
+ ```ruby
33
+ class AddUniqueTokenToUser < ActiveRecord::Migration
34
+ def change
35
+ add_column :users, :authentication_token, :string
36
+ add_index :users, :authentication_token, unique: true
37
+ end
38
+ end
39
+ ```
40
+ Don't forget about `rake db:migrate`.
41
+
42
+ -To protect actions to only registered users, add `acts_as_token_authentication_handler_for User` in your controller:
43
+
44
+ ```ruby
45
+ class SecretSpacesController < ApplicationController
46
+ acts_as_token_authentication_handler_for User
47
+ end
48
+ ```
49
+
50
+ - If you want to skip authentication for some actions add `skip_before_filter :authenticate_user_from_token!, only: [:action]` in your controller
51
+
52
+ ```ruby
53
+ class SecretSpacesController < ApplicationController
54
+ acts_as_token_authentication_handler_for User
55
+ skip_before_filter :authenticate_user_from_token!, only: [:new]
56
+ end
57
+ ```
58
+
59
+ Example app
60
+ ===========
61
+
62
+ - [Rails with devise and Simple Authentication Token authentication][rails_example_app]
63
+
64
+ Testing
65
+ =======
66
+
67
+ In order to run tests, first you need setup the gem locally.
68
+
69
+ * clone the repo to your machine `git clone https://github.com/netguru/devise-ios-rails.git`
70
+ * go inside gems directory `cd devise-ios-rails` and run bundle command `bundle install`
71
+ * now you need to setup your environment variables. You can simply just copy over `.env.sample` to `.env`. It should look more or less like this:
72
+
73
+ ```
74
+ DOMAIN_NAME='localhost:3000'
75
+ DOMAIN_URL='http://localhost:3000'
76
+ SECRET_KEY_BASE='a_very_long_string'
77
+ DEFAULT_SENDER='no-reply@no-reply.com'
78
+ ```
79
+
80
+ then you can run your tests by typing `rspec`.
81
+
82
+
83
+ Contribution
84
+ ============
85
+
86
+ First, thank you for contributing!
87
+
88
+ Here's a few guidelines to follow:
89
+
90
+ - we follow [Ruby Style Guide][ruby_style_guides].
91
+ - you can use [rubocop][rubocop] which can be easily integrated with popular editors. ([our rubocop config][rubocop_config])
92
+ - write tests
93
+ - make sure the entire test suite passes
94
+ - make sure rubocop passes our config
95
+ - open a pull request on GitHub
96
+ - [squash your commits][squash_commits] after receiving feedback
97
+
98
+ You can also read our blog post [announcing devise-iOS for simplified auth](https://netguru.co/blog/open-source-announcing-devise-ios).
99
+
100
+ Copyright 2014-2015 © [Netguru][netguru_url], released under the New BSD License
101
+
102
+ [ios_devise]: https://github.com/netguru/devise-ios
103
+
104
+ [ruby]: https://www.ruby-lang.org
105
+ [rails]: http://www.rubyonrails.org
106
+ [devise]: https://github.com/plataformatec/devise
107
+ [simple_token_authentication]: https://github.com/gonzalo-bulnes/simple_token_authentication
108
+ [active_model_serializers]: https://github.com/rails-api/active_model_serializers
109
+ [ruby_style_guides]: https://github.com/bbatsov/ruby-style-guide
110
+ [rubocop]: https://github.com/bbatsov/rubocop
111
+ [rubocop_config]: https://github.com/netguru/hound/blob/master/config/rubocop.yml
112
+ [squash_commits]: http://blog.steveklabnik.com/posts/2012-11-08-how-to-squash-commits-in-a-github-pull-request
113
+ [netguru_url]: https://netguru.co
114
+ [rails_example_app]: https://github.com/netguru/devise-ios-rails-example
@@ -0,0 +1,3 @@
1
+ require File.expand_path('../spec/dummy/config/application', __FILE__)
2
+
3
+ Rails.application.load_tasks
@@ -0,0 +1,29 @@
1
+ require 'simple_token_authentication/entity'
2
+
3
+ module DeviseIosRails
4
+ class PasswordsController < Devise::PasswordsController
5
+ include SimpleTokenAuthentication::TokenAuthenticationHandler
6
+
7
+ def update
8
+ respond_to do |format|
9
+ format.html { super }
10
+ format.json do
11
+ super and return if authenticate_entity_from_token!(entity).nil?
12
+
13
+ user = DeviseIosRails::ChangePasswordService.new(
14
+ send("current_#{resource_name}"),
15
+ params[:user]
16
+ ).call!
17
+
18
+ respond_with user
19
+ end
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def entity
26
+ SimpleTokenAuthentication::Entity.new(resource_class)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,19 @@
1
+ module DeviseIosRails
2
+ class RegistrationsController < Devise::RegistrationsController
3
+ acts_as_token_authentication_handler_for User
4
+ skip_before_filter :authenticate_user_from_token!, only: %i(new create cancel)
5
+ def authenticate_scope!
6
+ send(:"authenticate_#{resource_name}_from_token!")
7
+ self.resource = send(:"current_#{resource_name}")
8
+ end
9
+
10
+ def after_update_path_for(resource)
11
+ edit_user_registration_url
12
+ end
13
+
14
+ def update_resource(resource, params)
15
+ resource.attributes = params
16
+ resource.save
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,16 @@
1
+ class ErrorsSerializer < ActiveModel::Serializer
2
+ root 'error'
3
+ attributes :message, :code, :status
4
+
5
+ def message
6
+ "Validation failed: #{object.full_messages.join(', ')}"
7
+ end
8
+
9
+ def code
10
+ 0
11
+ end
12
+
13
+ def status
14
+ 422
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ module DeviseIosRails
2
+ class ChangePasswordService
3
+ attr_reader :params, :current_user
4
+ def initialize(current_user, params)
5
+ @params = Hash(params)
6
+ @current_user = current_user
7
+ end
8
+
9
+ def call!
10
+ return if current_user.nil?
11
+ current_user.password = snake_case_params[:password]
12
+ current_user.password_confirmation = snake_case_params[:password_confirmation]
13
+ current_user.save
14
+ current_user
15
+ end
16
+
17
+ private
18
+
19
+ def snake_case_params
20
+ params.deep_transform_keys do |key|
21
+ underscore = key.to_s.underscore
22
+ underscore.to_sym
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,54 @@
1
+ require 'rails'
2
+ require 'devise-ios-rails/engine'
3
+ require 'devise-ios-rails/rails/routes'
4
+ require 'simple_token_authentication'
5
+
6
+ module DeviseIosRails
7
+ module Rails
8
+ class Railtie < ::Rails::Railtie
9
+ config.after_initialize do
10
+ DeviseController.class_eval do
11
+ unacceptable_forgery_methods = [
12
+ ActionController::RequestForgeryProtection::ProtectionMethods::Exception,
13
+ ]
14
+
15
+ if unacceptable_forgery_methods.include?(forgery_protection_strategy)
16
+ protect_from_forgery with: :reset_session
17
+ end
18
+
19
+ unless mimes_for_respond_to.include?(:json)
20
+ new = mimes_for_respond_to.dup
21
+ new[:json] = {}
22
+ self.mimes_for_respond_to = new.freeze
23
+ end
24
+ end
25
+
26
+ ActionController::Responder.class_eval do
27
+ protected
28
+
29
+ def json_resource_errors
30
+ resource.errors
31
+ end
32
+
33
+ # simply render the resource even on POST instead of redirecting for ajax
34
+ def api_behavior(*args)
35
+ if post?
36
+ display resource, :status => :created
37
+ # render resource instead of 204 no content
38
+ elsif put? || delete?
39
+ display resource, :status => :ok
40
+ else
41
+ head :no_content
42
+ end
43
+ end
44
+ end
45
+
46
+ SimpleTokenAuthentication::FallbackAuthenticationHandler.class_eval do
47
+ def authenticate_entity!(controller, entity)
48
+ controller.send("authenticate_#{entity.name_underscore}!".to_sym, force: true)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,5 @@
1
+ module DeviseIosRails
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace DeviseIosRails
4
+ end
5
+ end
@@ -0,0 +1,19 @@
1
+ module ActionDispatch::Routing
2
+ class Mapper
3
+ def devise_ios_rails_for(*resources)
4
+ options = resources.extract_options!
5
+ options[:controllers] ||= {}
6
+ options[:controllers] = default_controllers.merge(options[:controllers])
7
+ devise_for(*[resources, options].flatten)
8
+ end
9
+
10
+ private
11
+
12
+ def default_controllers
13
+ {
14
+ registrations: 'devise_ios_rails/registrations',
15
+ passwords: 'devise_ios_rails/passwords',
16
+ }
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ module DeviseIosRails
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :devise_ios_rails do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ class DeviseIosRailsTest < ActiveSupport::TestCase
4
+ test "truth" do
5
+ assert_kind_of Module, DeviseIosRails
6
+ end
7
+ end
@@ -0,0 +1,75 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '4.1.8'
4
+
5
+ gem 'devise', github: 'plataformatec/devise'
6
+ gem 'simple_token_authentication'
7
+ gem 'dotenv-deployment'
8
+ gem 'dotenv-rails'
9
+ gem 'grape'
10
+ gem 'grape-swagger'
11
+ gem 'grape-swagger-rails', github: 'pjurczynski/grape-swagger-rails'
12
+ gem 'grape-active_model_serializers'
13
+ gem 'active_model_serializers', '0.9.0' # because of grape swagger
14
+ gem 'netguru', github: 'netguru/netguru', require: false
15
+ gem 'rollbar'
16
+ gem 'rack-cors'
17
+ gem 'nokogiri'
18
+ gem 'omniauth'
19
+ gem 'omniauth-google-oauth2'
20
+ gem 'haml-rails'
21
+ gem 'sass-rails', '>= 5.0.0.beta1' # because of rails 4.2.0.betaX
22
+ gem 'coffee-rails'
23
+ gem 'devise-ios-rails', github: 'netguru/devise-ios-rails'
24
+ gem 'activeadmin', github: 'activeadmin'
25
+ gem 'swagger-docs'
26
+
27
+ group :development do
28
+ gem 'better_errors'
29
+ gem 'binding_of_caller', platforms: [:mri_21]
30
+ gem 'capistrano', '3.2.1'
31
+ gem 'capistrano-bundler'
32
+ gem 'capistrano-rails'
33
+ gem 'capistrano-rails-console'
34
+ gem 'capistrano-rvm'
35
+ gem 'guard-bundler'
36
+ gem 'guard-rails'
37
+ gem 'guard-rspec'
38
+ gem 'quiet_assets'
39
+ gem 'gemsurance'
40
+ gem 'letter_opener'
41
+ end
42
+
43
+ group :development, :test do
44
+ gem 'sqlite3'
45
+ gem 'pry'
46
+ gem 'pry-doc'
47
+ gem 'pry-rescue'
48
+ gem 'pry-remote'
49
+ gem 'pry-nav'
50
+ gem 'pry-stack_explorer'
51
+ gem 'pry-rails'
52
+ gem 'factory_girl_rails'
53
+ gem 'rspec-rails'
54
+ gem 'spring-commands-rspec'
55
+ gem 'thin'
56
+ end
57
+
58
+ group :heroku do
59
+ gem 'letter_opener_web', '~> 1.2.0'
60
+ gem 'rails_12factor'
61
+ end
62
+
63
+ group :production, :heroku do
64
+ gem 'uglifier'
65
+ end
66
+
67
+ group :test do
68
+ gem 'capybara'
69
+ gem 'capybara-webkit'
70
+ gem 'database_cleaner'
71
+ gem 'fuubar'
72
+ gem 'launchy'
73
+ gem 'codeclimate-test-reporter', require: nil
74
+ gem 'shoulda-matchers'
75
+ end
@@ -0,0 +1,537 @@
1
+ GIT
2
+ remote: git://github.com/activeadmin/activeadmin.git
3
+ revision: 85c26616468266fda0c3762a507a7ea68b9b2fec
4
+ specs:
5
+ activeadmin (1.0.0.pre)
6
+ arbre (~> 1.0, >= 1.0.2)
7
+ bourbon
8
+ coffee-rails
9
+ formtastic (~> 3.1)
10
+ formtastic_i18n
11
+ inherited_resources (~> 1.4, != 1.5.0)
12
+ jquery-rails
13
+ jquery-ui-rails (~> 5.0)
14
+ kaminari (~> 0.15)
15
+ rails (>= 3.2, < 4.2)
16
+ ransack (~> 1.3)
17
+ sass-rails
18
+
19
+ GIT
20
+ remote: git://github.com/netguru/devise-ios-rails.git
21
+ revision: a0f72d5496855e431b9c947e2db6733f5c4f7995
22
+ specs:
23
+ devise-ios-rails (0.0.12)
24
+ active_model_serializers
25
+ devise
26
+ rails (~> 4.1.8)
27
+ simple_token_authentication
28
+
29
+ GIT
30
+ remote: git://github.com/netguru/netguru.git
31
+ revision: 0f5dae40514dbff148bafe690fb12e9074c2a76c
32
+ specs:
33
+ netguru (0.0.11)
34
+ bullet
35
+ capistrano
36
+ checker
37
+ hipchat
38
+ konf
39
+ pry
40
+ rvm-capistrano
41
+ whenever
42
+
43
+ GIT
44
+ remote: git://github.com/pjurczynski/grape-swagger-rails.git
45
+ revision: a490ae68d11c20bcfb2856c54a8f3ac1d2c089f8
46
+ specs:
47
+ grape-swagger-rails (0.0.10)
48
+ grape-swagger (>= 0.7.4)
49
+ railties (>= 3.2.12)
50
+
51
+ GIT
52
+ remote: git://github.com/plataformatec/devise.git
53
+ revision: 2c8e242000921910077951ecce538a21e802c59d
54
+ specs:
55
+ devise (3.4.1)
56
+ bcrypt (~> 3.0)
57
+ orm_adapter (~> 0.1)
58
+ railties (>= 3.2.6, < 5)
59
+ responders
60
+ thread_safe (~> 0.1)
61
+ warden (~> 1.2.3)
62
+
63
+ GEM
64
+ remote: https://rubygems.org/
65
+ specs:
66
+ actionmailer (4.1.8)
67
+ actionpack (= 4.1.8)
68
+ actionview (= 4.1.8)
69
+ mail (~> 2.5, >= 2.5.4)
70
+ actionpack (4.1.8)
71
+ actionview (= 4.1.8)
72
+ activesupport (= 4.1.8)
73
+ rack (~> 1.5.2)
74
+ rack-test (~> 0.6.2)
75
+ actionview (4.1.8)
76
+ activesupport (= 4.1.8)
77
+ builder (~> 3.1)
78
+ erubis (~> 2.7.0)
79
+ active_model_serializers (0.9.0)
80
+ activemodel (>= 3.2)
81
+ activemodel (4.1.8)
82
+ activesupport (= 4.1.8)
83
+ builder (~> 3.1)
84
+ activerecord (4.1.8)
85
+ activemodel (= 4.1.8)
86
+ activesupport (= 4.1.8)
87
+ arel (~> 5.0.0)
88
+ activesupport (4.1.8)
89
+ i18n (~> 0.6, >= 0.6.9)
90
+ json (~> 1.7, >= 1.7.7)
91
+ minitest (~> 5.1)
92
+ thread_safe (~> 0.1)
93
+ tzinfo (~> 1.1)
94
+ addressable (2.3.6)
95
+ arbre (1.0.2)
96
+ activesupport (>= 3.0.0)
97
+ arel (5.0.1.20140414130214)
98
+ axiom-types (0.1.1)
99
+ descendants_tracker (~> 0.0.4)
100
+ ice_nine (~> 0.11.0)
101
+ thread_safe (~> 0.3, >= 0.3.1)
102
+ bcrypt (3.1.9)
103
+ better_errors (2.0.0)
104
+ coderay (>= 1.0.0)
105
+ erubis (>= 2.6.6)
106
+ rack (>= 0.9.0)
107
+ binding_of_caller (0.7.2)
108
+ debug_inspector (>= 0.0.1)
109
+ bourbon (4.0.2)
110
+ sass (~> 3.3)
111
+ thor
112
+ builder (3.2.2)
113
+ bullet (4.14.0)
114
+ activesupport (>= 3.0.0)
115
+ uniform_notifier (>= 1.6.0)
116
+ capistrano (3.2.1)
117
+ i18n
118
+ rake (>= 10.0.0)
119
+ sshkit (~> 1.3)
120
+ capistrano-bundler (1.1.3)
121
+ capistrano (~> 3.1)
122
+ sshkit (~> 1.2)
123
+ capistrano-rails (1.1.2)
124
+ capistrano (~> 3.1)
125
+ capistrano-bundler (~> 1.1)
126
+ capistrano-rails-console (0.2.0)
127
+ capistrano (>= 3.0.0)
128
+ capistrano-rvm (0.1.2)
129
+ capistrano (~> 3.0)
130
+ sshkit (~> 1.2)
131
+ capybara (2.4.4)
132
+ mime-types (>= 1.16)
133
+ nokogiri (>= 1.3.3)
134
+ rack (>= 1.0.0)
135
+ rack-test (>= 0.5.4)
136
+ xpath (~> 2.0)
137
+ capybara-webkit (1.3.1)
138
+ capybara (>= 2.0.2, < 2.5.0)
139
+ json
140
+ celluloid (0.16.0)
141
+ timers (~> 4.0.0)
142
+ checker (0.0.3)
143
+ chronic (0.10.2)
144
+ codeclimate-test-reporter (0.4.3)
145
+ simplecov (>= 0.7.1, < 1.0.0)
146
+ coderay (1.1.0)
147
+ coercible (1.0.0)
148
+ descendants_tracker (~> 0.0.1)
149
+ coffee-rails (4.1.0)
150
+ coffee-script (>= 2.2.0)
151
+ railties (>= 4.0.0, < 5.0)
152
+ coffee-script (2.3.0)
153
+ coffee-script-source
154
+ execjs
155
+ coffee-script-source (1.8.0)
156
+ colorize (0.7.4)
157
+ daemons (1.1.9)
158
+ database_cleaner (1.3.0)
159
+ debug_inspector (0.0.2)
160
+ descendants_tracker (0.0.4)
161
+ thread_safe (~> 0.3, >= 0.3.1)
162
+ diff-lcs (1.2.5)
163
+ docile (1.1.5)
164
+ dotenv (1.0.2)
165
+ dotenv-deployment (0.2.0)
166
+ dotenv (~> 1.0)
167
+ dotenv-rails (1.0.2)
168
+ dotenv (= 1.0.2)
169
+ equalizer (0.0.9)
170
+ erubis (2.7.0)
171
+ eventmachine (1.0.3)
172
+ execjs (2.2.2)
173
+ factory_girl (4.5.0)
174
+ activesupport (>= 3.0.0)
175
+ factory_girl_rails (4.5.0)
176
+ factory_girl (~> 4.5.0)
177
+ railties (>= 3.0.0)
178
+ faraday (0.9.0)
179
+ multipart-post (>= 1.2, < 3)
180
+ ffi (1.9.6)
181
+ formatador (0.2.5)
182
+ formtastic (3.1.2)
183
+ actionpack (>= 3.2.13)
184
+ formtastic_i18n (0.1.1)
185
+ fuubar (2.0.0)
186
+ rspec (~> 3.0)
187
+ ruby-progressbar (~> 1.4)
188
+ gems (0.8.3)
189
+ gemsurance (0.3.0)
190
+ bundler (~> 1.2)
191
+ gems (~> 0.8)
192
+ git (~> 1.2)
193
+ git (1.2.8)
194
+ grape (0.9.0)
195
+ activesupport
196
+ builder
197
+ hashie (>= 2.1.0)
198
+ multi_json (>= 1.3.2)
199
+ multi_xml (>= 0.5.2)
200
+ rack (>= 1.3.0)
201
+ rack-accept
202
+ rack-mount
203
+ virtus (>= 1.0.0)
204
+ grape-active_model_serializers (1.3.1)
205
+ active_model_serializers (>= 0.9.0)
206
+ grape (~> 0.3)
207
+ grape-entity (0.4.4)
208
+ activesupport
209
+ multi_json (>= 1.3.2)
210
+ grape-swagger (0.8.0)
211
+ grape
212
+ grape-entity
213
+ guard (2.10.2)
214
+ formatador (>= 0.2.4)
215
+ listen (~> 2.7)
216
+ lumberjack (~> 1.0)
217
+ pry (>= 0.9.12)
218
+ thor (>= 0.18.1)
219
+ guard-bundler (2.1.0)
220
+ bundler (~> 1.0)
221
+ guard (~> 2.2)
222
+ guard-compat (~> 1.1)
223
+ guard-compat (1.1.0)
224
+ guard-rails (0.7.0)
225
+ guard (~> 2.0)
226
+ guard-rspec (4.5.0)
227
+ guard (~> 2.1)
228
+ guard-compat (~> 1.1)
229
+ rspec (>= 2.99.0, < 4.0)
230
+ haml (4.1.0.beta.1)
231
+ tilt
232
+ haml-rails (0.6.0)
233
+ actionpack (>= 4.0.1)
234
+ activesupport (>= 4.0.1)
235
+ haml (>= 3.1, < 5.0)
236
+ html2haml (>= 1.0.1)
237
+ railties (>= 4.0.1)
238
+ has_scope (0.6.0.rc)
239
+ actionpack (>= 3.2, < 5)
240
+ activesupport (>= 3.2, < 5)
241
+ hashie (3.3.2)
242
+ hike (1.2.3)
243
+ hipchat (1.4.0)
244
+ httparty
245
+ hitimes (1.2.2)
246
+ hpricot (0.8.6)
247
+ html2haml (1.0.1)
248
+ erubis (~> 2.7.0)
249
+ haml (>= 4.0.0.rc.1)
250
+ hpricot (~> 0.8.6)
251
+ ruby_parser (~> 3.1.1)
252
+ httparty (0.13.3)
253
+ json (~> 1.8)
254
+ multi_xml (>= 0.5.2)
255
+ i18n (0.6.11)
256
+ ice_nine (0.11.1)
257
+ inherited_resources (1.5.1)
258
+ actionpack (>= 3.2, < 4.2)
259
+ has_scope (~> 0.6.0.rc)
260
+ railties (>= 3.2, < 4.2)
261
+ responders (~> 1.0)
262
+ interception (0.5)
263
+ jquery-rails (3.1.2)
264
+ railties (>= 3.0, < 5.0)
265
+ thor (>= 0.14, < 2.0)
266
+ jquery-ui-rails (5.0.3)
267
+ railties (>= 3.2.16)
268
+ json (1.8.1)
269
+ jwt (1.2.0)
270
+ kaminari (0.16.1)
271
+ actionpack (>= 3.0.0)
272
+ activesupport (>= 3.0.0)
273
+ konf (0.0.2)
274
+ launchy (2.4.3)
275
+ addressable (~> 2.3)
276
+ letter_opener (1.3.0)
277
+ launchy (~> 2.2)
278
+ letter_opener_web (1.2.3)
279
+ letter_opener (~> 1.0)
280
+ rails (>= 3.2)
281
+ listen (2.8.3)
282
+ celluloid (>= 0.15.2)
283
+ rb-fsevent (>= 0.9.3)
284
+ rb-inotify (>= 0.9)
285
+ lumberjack (1.0.9)
286
+ mail (2.6.3)
287
+ mime-types (>= 1.16, < 3)
288
+ method_source (0.8.2)
289
+ mime-types (2.4.3)
290
+ mini_portile (0.6.1)
291
+ minitest (5.5.0)
292
+ multi_json (1.10.1)
293
+ multi_xml (0.5.5)
294
+ multipart-post (2.0.0)
295
+ net-scp (1.2.1)
296
+ net-ssh (>= 2.6.5)
297
+ net-ssh (2.9.1)
298
+ nokogiri (1.6.5)
299
+ mini_portile (~> 0.6.0)
300
+ oauth2 (1.0.0)
301
+ faraday (>= 0.8, < 0.10)
302
+ jwt (~> 1.0)
303
+ multi_json (~> 1.3)
304
+ multi_xml (~> 0.5)
305
+ rack (~> 1.2)
306
+ omniauth (1.2.2)
307
+ hashie (>= 1.2, < 4)
308
+ rack (~> 1.0)
309
+ omniauth-google-oauth2 (0.2.6)
310
+ omniauth (> 1.0)
311
+ omniauth-oauth2 (~> 1.1)
312
+ omniauth-oauth2 (1.2.0)
313
+ faraday (>= 0.8, < 0.10)
314
+ multi_json (~> 1.3)
315
+ oauth2 (~> 1.0)
316
+ omniauth (~> 1.2)
317
+ orm_adapter (0.5.0)
318
+ polyamorous (1.1.0)
319
+ activerecord (>= 3.0)
320
+ pry (0.10.1)
321
+ coderay (~> 1.1.0)
322
+ method_source (~> 0.8.1)
323
+ slop (~> 3.4)
324
+ pry-doc (0.6.0)
325
+ pry (~> 0.9)
326
+ yard (~> 0.8)
327
+ pry-nav (0.2.4)
328
+ pry (>= 0.9.10, < 0.11.0)
329
+ pry-rails (0.3.2)
330
+ pry (>= 0.9.10)
331
+ pry-remote (0.1.8)
332
+ pry (~> 0.9)
333
+ slop (~> 3.0)
334
+ pry-rescue (1.4.1)
335
+ interception (>= 0.5)
336
+ pry
337
+ pry-stack_explorer (0.4.9.1)
338
+ binding_of_caller (>= 0.7)
339
+ pry (>= 0.9.11)
340
+ quiet_assets (1.0.3)
341
+ railties (>= 3.1, < 5.0)
342
+ rack (1.5.2)
343
+ rack-accept (0.4.5)
344
+ rack (>= 0.4)
345
+ rack-cors (0.2.9)
346
+ rack-mount (0.8.3)
347
+ rack (>= 1.0.0)
348
+ rack-test (0.6.2)
349
+ rack (>= 1.0)
350
+ rails (4.1.8)
351
+ actionmailer (= 4.1.8)
352
+ actionpack (= 4.1.8)
353
+ actionview (= 4.1.8)
354
+ activemodel (= 4.1.8)
355
+ activerecord (= 4.1.8)
356
+ activesupport (= 4.1.8)
357
+ bundler (>= 1.3.0, < 2.0)
358
+ railties (= 4.1.8)
359
+ sprockets-rails (~> 2.0)
360
+ rails_12factor (0.0.3)
361
+ rails_serve_static_assets
362
+ rails_stdout_logging
363
+ rails_serve_static_assets (0.0.2)
364
+ rails_stdout_logging (0.0.3)
365
+ railties (4.1.8)
366
+ actionpack (= 4.1.8)
367
+ activesupport (= 4.1.8)
368
+ rake (>= 0.8.7)
369
+ thor (>= 0.18.1, < 2.0)
370
+ rake (10.4.2)
371
+ ransack (1.5.1)
372
+ actionpack (>= 3.0)
373
+ activerecord (>= 3.0)
374
+ activesupport (>= 3.0)
375
+ i18n
376
+ polyamorous (~> 1.1)
377
+ rb-fsevent (0.9.4)
378
+ rb-inotify (0.9.5)
379
+ ffi (>= 0.5.0)
380
+ responders (1.1.2)
381
+ railties (>= 3.2, < 4.2)
382
+ rollbar (1.3.0)
383
+ multi_json (~> 1.3)
384
+ rspec (3.1.0)
385
+ rspec-core (~> 3.1.0)
386
+ rspec-expectations (~> 3.1.0)
387
+ rspec-mocks (~> 3.1.0)
388
+ rspec-core (3.1.7)
389
+ rspec-support (~> 3.1.0)
390
+ rspec-expectations (3.1.2)
391
+ diff-lcs (>= 1.2.0, < 2.0)
392
+ rspec-support (~> 3.1.0)
393
+ rspec-mocks (3.1.3)
394
+ rspec-support (~> 3.1.0)
395
+ rspec-rails (3.1.0)
396
+ actionpack (>= 3.0)
397
+ activesupport (>= 3.0)
398
+ railties (>= 3.0)
399
+ rspec-core (~> 3.1.0)
400
+ rspec-expectations (~> 3.1.0)
401
+ rspec-mocks (~> 3.1.0)
402
+ rspec-support (~> 3.1.0)
403
+ rspec-support (3.1.2)
404
+ ruby-progressbar (1.7.0)
405
+ ruby_parser (3.1.3)
406
+ sexp_processor (~> 4.1)
407
+ rvm-capistrano (1.5.0)
408
+ capistrano (>= 2.15.4)
409
+ sass (3.4.9)
410
+ sass-rails (5.0.0)
411
+ railties (>= 4.0.0, < 5.0)
412
+ sass (~> 3.1)
413
+ sprockets (>= 2.8, < 4.0)
414
+ sprockets-rails (>= 2.0, < 4.0)
415
+ tilt (~> 1.1)
416
+ sexp_processor (4.4.4)
417
+ shoulda-matchers (2.7.0)
418
+ activesupport (>= 3.0.0)
419
+ simple_token_authentication (1.7.0)
420
+ actionmailer (>= 3.2.6, < 5)
421
+ actionpack (>= 3.2.6, < 5)
422
+ devise (~> 3.2)
423
+ simplecov (0.9.1)
424
+ docile (~> 1.1.0)
425
+ multi_json (~> 1.0)
426
+ simplecov-html (~> 0.8.0)
427
+ simplecov-html (0.8.0)
428
+ slop (3.6.0)
429
+ spring (1.2.0)
430
+ spring-commands-rspec (1.0.4)
431
+ spring (>= 0.9.1)
432
+ sprockets (2.12.3)
433
+ hike (~> 1.2)
434
+ multi_json (~> 1.0)
435
+ rack (~> 1.0)
436
+ tilt (~> 1.1, != 1.3.0)
437
+ sprockets-rails (2.2.2)
438
+ actionpack (>= 3.0)
439
+ activesupport (>= 3.0)
440
+ sprockets (>= 2.8, < 4.0)
441
+ sqlite3 (1.3.10)
442
+ sshkit (1.5.1)
443
+ colorize
444
+ net-scp (>= 1.1.2)
445
+ net-ssh (>= 2.8.0)
446
+ swagger-docs (0.1.9)
447
+ activesupport (>= 3, < 5)
448
+ rails (>= 3, < 5)
449
+ thin (1.6.3)
450
+ daemons (~> 1.0, >= 1.0.9)
451
+ eventmachine (~> 1.0)
452
+ rack (~> 1.0)
453
+ thor (0.19.1)
454
+ thread_safe (0.3.4)
455
+ tilt (1.4.1)
456
+ timers (4.0.1)
457
+ hitimes
458
+ tzinfo (1.2.2)
459
+ thread_safe (~> 0.1)
460
+ uglifier (2.6.0)
461
+ execjs (>= 0.3.0)
462
+ json (>= 1.8.0)
463
+ uniform_notifier (1.6.2)
464
+ virtus (1.0.3)
465
+ axiom-types (~> 0.1)
466
+ coercible (~> 1.0)
467
+ descendants_tracker (~> 0.0, >= 0.0.3)
468
+ equalizer (~> 0.0, >= 0.0.9)
469
+ warden (1.2.3)
470
+ rack (>= 1.0)
471
+ whenever (0.9.4)
472
+ chronic (>= 0.6.3)
473
+ xpath (2.0.0)
474
+ nokogiri (~> 1.3)
475
+ yard (0.8.7.6)
476
+
477
+ PLATFORMS
478
+ ruby
479
+
480
+ DEPENDENCIES
481
+ active_model_serializers (= 0.9.0)
482
+ activeadmin!
483
+ better_errors
484
+ binding_of_caller
485
+ capistrano (= 3.2.1)
486
+ capistrano-bundler
487
+ capistrano-rails
488
+ capistrano-rails-console
489
+ capistrano-rvm
490
+ capybara
491
+ capybara-webkit
492
+ codeclimate-test-reporter
493
+ coffee-rails
494
+ database_cleaner
495
+ devise!
496
+ devise-ios-rails!
497
+ dotenv-deployment
498
+ dotenv-rails
499
+ factory_girl_rails
500
+ fuubar
501
+ gemsurance
502
+ grape
503
+ grape-active_model_serializers
504
+ grape-swagger
505
+ grape-swagger-rails!
506
+ guard-bundler
507
+ guard-rails
508
+ guard-rspec
509
+ haml-rails
510
+ launchy
511
+ letter_opener
512
+ letter_opener_web (~> 1.2.0)
513
+ netguru!
514
+ nokogiri
515
+ omniauth
516
+ omniauth-google-oauth2
517
+ pry
518
+ pry-doc
519
+ pry-nav
520
+ pry-rails
521
+ pry-remote
522
+ pry-rescue
523
+ pry-stack_explorer
524
+ quiet_assets
525
+ rack-cors
526
+ rails (= 4.1.8)
527
+ rails_12factor
528
+ rollbar
529
+ rspec-rails
530
+ sass-rails (>= 5.0.0.beta1)
531
+ shoulda-matchers
532
+ simple_token_authentication
533
+ spring-commands-rspec
534
+ sqlite3
535
+ swagger-docs
536
+ thin
537
+ uglifier