devise-ios-rails 1.0.0

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 (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