meroku 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +2 -0
  3. data/Guardfile +7 -18
  4. data/README.md +78 -4
  5. data/bin/meroku +1 -1
  6. data/frontend/.gitignore +23 -0
  7. data/frontend/.ruby-version +2 -0
  8. data/frontend/Gemfile +58 -0
  9. data/frontend/Gemfile.lock +233 -0
  10. data/frontend/README.md +24 -0
  11. data/frontend/Rakefile +6 -0
  12. data/frontend/app/assets/config/manifest.js +3 -0
  13. data/frontend/app/assets/images/.keep +0 -0
  14. data/frontend/app/assets/javascripts/application.js +15 -0
  15. data/frontend/app/assets/javascripts/apps.coffee +3 -0
  16. data/frontend/app/assets/javascripts/cable.js +13 -0
  17. data/frontend/app/assets/javascripts/channels/.keep +0 -0
  18. data/frontend/app/assets/javascripts/pages.coffee +3 -0
  19. data/frontend/app/assets/javascripts/publickeys.coffee +3 -0
  20. data/frontend/app/assets/stylesheets/application.css +15 -0
  21. data/frontend/app/assets/stylesheets/apps.scss +3 -0
  22. data/frontend/app/assets/stylesheets/pages.scss +3 -0
  23. data/frontend/app/assets/stylesheets/publickeys.scss +3 -0
  24. data/frontend/app/assets/stylesheets/scaffolds.scss +84 -0
  25. data/frontend/app/channels/application_cable/channel.rb +4 -0
  26. data/frontend/app/channels/application_cable/connection.rb +4 -0
  27. data/frontend/app/controllers/application_controller.rb +3 -0
  28. data/frontend/app/controllers/apps_controller.rb +85 -0
  29. data/frontend/app/controllers/concerns/.keep +0 -0
  30. data/frontend/app/controllers/pages_controller.rb +4 -0
  31. data/frontend/app/controllers/publickeys_controller.rb +76 -0
  32. data/frontend/app/controllers/users/confirmations_controller.rb +28 -0
  33. data/frontend/app/controllers/users/omniauth_callbacks_controller.rb +28 -0
  34. data/frontend/app/controllers/users/passwords_controller.rb +32 -0
  35. data/frontend/app/controllers/users/registrations_controller.rb +89 -0
  36. data/frontend/app/controllers/users/sessions_controller.rb +25 -0
  37. data/frontend/app/controllers/users/unlocks_controller.rb +28 -0
  38. data/frontend/app/helpers/application_helper.rb +2 -0
  39. data/frontend/app/helpers/apps_helper.rb +2 -0
  40. data/frontend/app/helpers/pages_helper.rb +2 -0
  41. data/frontend/app/helpers/publickeys_helper.rb +2 -0
  42. data/frontend/app/jobs/application_job.rb +2 -0
  43. data/frontend/app/mailers/application_mailer.rb +4 -0
  44. data/frontend/app/models/app.rb +3 -0
  45. data/frontend/app/models/application_record.rb +3 -0
  46. data/frontend/app/models/concerns/.keep +0 -0
  47. data/frontend/app/models/publickey.rb +3 -0
  48. data/frontend/app/models/user.rb +12 -0
  49. data/frontend/app/serializable/serializable_app.rb +6 -0
  50. data/frontend/app/serializable/serializable_publickey.rb +7 -0
  51. data/frontend/app/serializable/serializable_user.rb +7 -0
  52. data/frontend/app/serializers/app_serializer.rb +3 -0
  53. data/frontend/app/serializers/publickey_serializer.rb +4 -0
  54. data/frontend/app/views/apps/_app.json.jbuilder +2 -0
  55. data/frontend/app/views/apps/_form.html.erb +22 -0
  56. data/frontend/app/views/apps/edit.html.erb +6 -0
  57. data/frontend/app/views/apps/index.html.erb +27 -0
  58. data/frontend/app/views/apps/index.json.jbuilder +1 -0
  59. data/frontend/app/views/apps/new.html.erb +5 -0
  60. data/frontend/app/views/apps/show.html.erb +9 -0
  61. data/frontend/app/views/apps/show.json.jbuilder +1 -0
  62. data/frontend/app/views/devise/confirmations/new.html.erb +16 -0
  63. data/frontend/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  64. data/frontend/app/views/devise/mailer/email_changed.html.erb +7 -0
  65. data/frontend/app/views/devise/mailer/password_change.html.erb +3 -0
  66. data/frontend/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  67. data/frontend/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  68. data/frontend/app/views/devise/passwords/edit.html.erb +25 -0
  69. data/frontend/app/views/devise/passwords/new.html.erb +16 -0
  70. data/frontend/app/views/devise/registrations/edit.html.erb +43 -0
  71. data/frontend/app/views/devise/registrations/new.html.erb +29 -0
  72. data/frontend/app/views/devise/sessions/new.html.erb +26 -0
  73. data/frontend/app/views/devise/shared/_links.html.erb +25 -0
  74. data/frontend/app/views/devise/unlocks/new.html.erb +16 -0
  75. data/frontend/app/views/layouts/application.html.erb +16 -0
  76. data/frontend/app/views/layouts/mailer.html.erb +13 -0
  77. data/frontend/app/views/layouts/mailer.text.erb +1 -0
  78. data/frontend/app/views/pages/landing.html.erb +2 -0
  79. data/frontend/app/views/publickeys/_form.html.erb +32 -0
  80. data/frontend/app/views/publickeys/_publickey.json.jbuilder +2 -0
  81. data/frontend/app/views/publickeys/edit.html.erb +6 -0
  82. data/frontend/app/views/publickeys/index.html.erb +31 -0
  83. data/frontend/app/views/publickeys/index.json.jbuilder +1 -0
  84. data/frontend/app/views/publickeys/new.html.erb +5 -0
  85. data/frontend/app/views/publickeys/show.html.erb +19 -0
  86. data/frontend/app/views/publickeys/show.json.jbuilder +1 -0
  87. data/frontend/bin/bundle +3 -0
  88. data/frontend/bin/rails +9 -0
  89. data/frontend/bin/rake +9 -0
  90. data/frontend/bin/setup +38 -0
  91. data/frontend/bin/spring +17 -0
  92. data/frontend/bin/update +29 -0
  93. data/frontend/bin/yarn +11 -0
  94. data/frontend/config.ru +5 -0
  95. data/frontend/config/application.rb +18 -0
  96. data/frontend/config/boot.rb +3 -0
  97. data/frontend/config/cable.yml +10 -0
  98. data/frontend/config/database.yml +25 -0
  99. data/frontend/config/environment.rb +5 -0
  100. data/frontend/config/environments/development.rb +56 -0
  101. data/frontend/config/environments/production.rb +97 -0
  102. data/frontend/config/environments/test.rb +42 -0
  103. data/frontend/config/initializers/ams.rb +3 -0
  104. data/frontend/config/initializers/application_controller_renderer.rb +8 -0
  105. data/frontend/config/initializers/assets.rb +14 -0
  106. data/frontend/config/initializers/backtrace_silencers.rb +7 -0
  107. data/frontend/config/initializers/cookies_serializer.rb +5 -0
  108. data/frontend/config/initializers/devise.rb +277 -0
  109. data/frontend/config/initializers/filter_parameter_logging.rb +4 -0
  110. data/frontend/config/initializers/inflections.rb +16 -0
  111. data/frontend/config/initializers/mime_types.rb +4 -0
  112. data/frontend/config/initializers/wrap_parameters.rb +14 -0
  113. data/frontend/config/locales/devise.en.yml +64 -0
  114. data/frontend/config/locales/en.yml +33 -0
  115. data/frontend/config/puma.rb +66 -0
  116. data/frontend/config/routes.rb +19 -0
  117. data/frontend/config/secrets.yml +32 -0
  118. data/frontend/config/spring.rb +6 -0
  119. data/frontend/db/migrate/20171023223732_devise_create_users.rb +42 -0
  120. data/frontend/db/migrate/20171025193627_add_token_to_users.rb +5 -0
  121. data/frontend/db/migrate/20171025203706_create_apps.rb +9 -0
  122. data/frontend/db/migrate/20171025223804_add_user_to_apps.rb +5 -0
  123. data/frontend/db/migrate/20171026071440_create_publickeys.rb +11 -0
  124. data/frontend/db/schema.rb +32 -0
  125. data/frontend/db/seeds.rb +7 -0
  126. data/frontend/etc_nginx_sites-available_default +29 -0
  127. data/frontend/lib/assets/.keep +0 -0
  128. data/frontend/lib/tasks/.keep +0 -0
  129. data/frontend/log/.keep +0 -0
  130. data/frontend/package.json +5 -0
  131. data/frontend/public/404.html +67 -0
  132. data/frontend/public/422.html +67 -0
  133. data/frontend/public/500.html +66 -0
  134. data/frontend/public/apple-touch-icon-precomposed.png +0 -0
  135. data/frontend/public/apple-touch-icon.png +0 -0
  136. data/frontend/public/favicon.ico +0 -0
  137. data/frontend/public/robots.txt +1 -0
  138. data/frontend/test/application_system_test_case.rb +5 -0
  139. data/frontend/test/controllers/.keep +0 -0
  140. data/frontend/test/controllers/apps_controller_test.rb +48 -0
  141. data/frontend/test/controllers/pages_controller_test.rb +9 -0
  142. data/frontend/test/controllers/publickeys_controller_test.rb +48 -0
  143. data/frontend/test/fixtures/.keep +0 -0
  144. data/frontend/test/fixtures/apps.yml +7 -0
  145. data/frontend/test/fixtures/files/.keep +0 -0
  146. data/frontend/test/fixtures/publickeys.yml +11 -0
  147. data/frontend/test/fixtures/users.yml +11 -0
  148. data/frontend/test/helpers/.keep +0 -0
  149. data/frontend/test/integration/.keep +0 -0
  150. data/frontend/test/mailers/.keep +0 -0
  151. data/frontend/test/models/.keep +0 -0
  152. data/frontend/test/models/app_test.rb +7 -0
  153. data/frontend/test/models/publickey_test.rb +7 -0
  154. data/frontend/test/models/user_test.rb +7 -0
  155. data/frontend/test/system/.keep +0 -0
  156. data/frontend/test/system/apps_test.rb +9 -0
  157. data/frontend/test/system/publickeys_test.rb +9 -0
  158. data/frontend/test/test_helper.rb +9 -0
  159. data/frontend/tmp/.keep +0 -0
  160. data/frontend/vendor/.keep +0 -0
  161. data/lib/meroku.rb +11 -24
  162. data/lib/meroku/aws.rb +32 -0
  163. data/lib/meroku/cli.rb +131 -0
  164. data/lib/meroku/infrastructure.rb +10 -17
  165. data/lib/meroku/infrastructure/node.rb +68 -0
  166. data/lib/meroku/tunnel.rb +50 -0
  167. data/lib/meroku/version.rb +1 -1
  168. data/meroku.gemspec +7 -3
  169. data/modified-cedar-14.sh +175 -0
  170. metadata +222 -19
@@ -0,0 +1,24 @@
1
+ # README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
data/frontend/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative 'config/application'
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,3 @@
1
+ //= link_tree ../images
2
+ //= link_directory ../javascripts .js
3
+ //= link_directory ../stylesheets .css
File without changes
@@ -0,0 +1,15 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
5
+ // vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require rails-ujs
14
+ //= require turbolinks
15
+ //= require_tree .
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,13 @@
1
+ // Action Cable provides the framework to deal with WebSockets in Rails.
2
+ // You can generate new channels where WebSocket features live using the `rails generate channel` command.
3
+ //
4
+ //= require action_cable
5
+ //= require_self
6
+ //= require_tree ./channels
7
+
8
+ (function() {
9
+ this.App || (this.App = {});
10
+
11
+ App.cable = ActionCable.createConsumer();
12
+
13
+ }).call(this);
File without changes
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
6
+ * vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the apps controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the Pages controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the publickeys controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: http://sass-lang.com/
@@ -0,0 +1,84 @@
1
+ body {
2
+ background-color: #fff;
3
+ color: #333;
4
+ margin: 33px;
5
+ font-family: verdana, arial, helvetica, sans-serif;
6
+ font-size: 13px;
7
+ line-height: 18px;
8
+ }
9
+
10
+ p, ol, ul, td {
11
+ font-family: verdana, arial, helvetica, sans-serif;
12
+ font-size: 13px;
13
+ line-height: 18px;
14
+ }
15
+
16
+ pre {
17
+ background-color: #eee;
18
+ padding: 10px;
19
+ font-size: 11px;
20
+ }
21
+
22
+ a {
23
+ color: #000;
24
+
25
+ &:visited {
26
+ color: #666;
27
+ }
28
+
29
+ &:hover {
30
+ color: #fff;
31
+ background-color: #000;
32
+ }
33
+ }
34
+
35
+ th {
36
+ padding-bottom: 5px;
37
+ }
38
+
39
+ td {
40
+ padding: 0 5px 7px;
41
+ }
42
+
43
+ div {
44
+ &.field, &.actions {
45
+ margin-bottom: 10px;
46
+ }
47
+ }
48
+
49
+ #notice {
50
+ color: green;
51
+ }
52
+
53
+ .field_with_errors {
54
+ padding: 2px;
55
+ background-color: red;
56
+ display: table;
57
+ }
58
+
59
+ #error_explanation {
60
+ width: 450px;
61
+ border: 2px solid red;
62
+ padding: 7px 7px 0;
63
+ margin-bottom: 20px;
64
+ background-color: #f0f0f0;
65
+
66
+ h2 {
67
+ text-align: left;
68
+ font-weight: bold;
69
+ padding: 5px 5px 5px 15px;
70
+ font-size: 12px;
71
+ margin: -7px -7px 0;
72
+ background-color: #c00;
73
+ color: #fff;
74
+ }
75
+
76
+ ul li {
77
+ font-size: 12px;
78
+ list-style: square;
79
+ }
80
+ }
81
+
82
+ label {
83
+ display: block;
84
+ }
@@ -0,0 +1,4 @@
1
+ module ApplicationCable
2
+ class Channel < ActionCable::Channel::Base
3
+ end
4
+ end
@@ -0,0 +1,4 @@
1
+ module ApplicationCable
2
+ class Connection < ActionCable::Connection::Base
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery with: :exception
3
+ end
@@ -0,0 +1,85 @@
1
+ class AppsController < ApplicationController
2
+ before_action :set_app, only: [:show, :edit, :update, :destroy]
3
+ skip_before_action :verify_authenticity_token, only: [:create]
4
+
5
+ # GET /apps
6
+ # GET /apps.json
7
+ def index
8
+ @apps = App.all
9
+ end
10
+
11
+ # GET /apps/1
12
+ # GET /apps/1.json
13
+ def show
14
+ end
15
+
16
+ # GET /apps/new
17
+ def new
18
+ @app = App.new
19
+ end
20
+
21
+ # GET /apps/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /apps
26
+ # POST /apps.json
27
+ def create
28
+ @app = App.new(app_params)
29
+ @app.name = SecureRandom.hex
30
+ @app.user = User.find_by_token(params[:token])
31
+ if !@app.user
32
+ (render :jsonapi_errors => [{
33
+ title: 'Invalid Authorization Token',
34
+ detail: 'Invalid token. Try logging in again.'
35
+ }]) and return
36
+
37
+ end
38
+
39
+ respond_to do |format|
40
+ if @app.save
41
+ format.html { redirect_to @app, notice: 'App was successfully created.' }
42
+ #format.json { render :show, status: :created, location: @app }
43
+ format.json { render jsonapi: @app }
44
+ else
45
+ format.html { render :new }
46
+ format.json { render jsonapi_errors: @app.errors }
47
+ end
48
+ end
49
+ end
50
+
51
+ # PATCH/PUT /apps/1
52
+ # PATCH/PUT /apps/1.json
53
+ def update
54
+ respond_to do |format|
55
+ if @app.update(app_params)
56
+ format.html { redirect_to @app, notice: 'App was successfully updated.' }
57
+ format.json { render :show, status: :ok, location: @app }
58
+ else
59
+ format.html { render :edit }
60
+ format.json { render json: @app.errors, status: :unprocessable_entity }
61
+ end
62
+ end
63
+ end
64
+
65
+ # DELETE /apps/1
66
+ # DELETE /apps/1.json
67
+ def destroy
68
+ @app.destroy
69
+ respond_to do |format|
70
+ format.html { redirect_to apps_url, notice: 'App was successfully destroyed.' }
71
+ format.json { head :no_content }
72
+ end
73
+ end
74
+
75
+ private
76
+ # Use callbacks to share common setup or constraints between actions.
77
+ def set_app
78
+ @app = App.find(params[:id])
79
+ end
80
+
81
+ # Never trust parameters from the scary internet, only allow the white list through.
82
+ def app_params
83
+ params.require(:app).permit(:name)
84
+ end
85
+ end
File without changes
@@ -0,0 +1,4 @@
1
+ class PagesController < ApplicationController
2
+ def landing
3
+ end
4
+ end
@@ -0,0 +1,76 @@
1
+ class PublickeysController < ApplicationController
2
+ before_action :set_publickey, only: [:show, :edit, :update, :destroy]
3
+ skip_before_action :verify_authenticity_token, only: [:create]
4
+
5
+ # GET /publickeys
6
+ # GET /publickeys.json
7
+ def index
8
+ @publickeys = Publickey.all
9
+ end
10
+
11
+ # GET /publickeys/1
12
+ # GET /publickeys/1.json
13
+ def show
14
+ end
15
+
16
+ # GET /publickeys/new
17
+ def new
18
+ @publickey = Publickey.new
19
+ end
20
+
21
+ # GET /publickeys/1/edit
22
+ def edit
23
+ end
24
+
25
+ # POST /publickeys
26
+ # POST /publickeys.json
27
+ def create
28
+ @publickey = Publickey.new(publickey_params)
29
+ @publickey.user = User.find_by_token(params[:token])
30
+
31
+ respond_to do |format|
32
+ if @publickey.save
33
+ format.html { redirect_to @publickey, notice: 'Publickey was successfully created.' }
34
+ format.json { render :show, status: :created, location: @publickey }
35
+ else
36
+ format.html { render :new }
37
+ format.json { render json: @publickey.errors, status: :unprocessable_entity }
38
+ end
39
+ end
40
+ end
41
+
42
+ # PATCH/PUT /publickeys/1
43
+ # PATCH/PUT /publickeys/1.json
44
+ def update
45
+ respond_to do |format|
46
+ if @publickey.update(publickey_params)
47
+ format.html { redirect_to @publickey, notice: 'Publickey was successfully updated.' }
48
+ format.json { render :show, status: :ok, location: @publickey }
49
+ else
50
+ format.html { render :edit }
51
+ format.json { render json: @publickey.errors, status: :unprocessable_entity }
52
+ end
53
+ end
54
+ end
55
+
56
+ # DELETE /publickeys/1
57
+ # DELETE /publickeys/1.json
58
+ def destroy
59
+ @publickey.destroy
60
+ respond_to do |format|
61
+ format.html { redirect_to publickeys_url, notice: 'Publickey was successfully destroyed.' }
62
+ format.json { head :no_content }
63
+ end
64
+ end
65
+
66
+ private
67
+ # Use callbacks to share common setup or constraints between actions.
68
+ def set_publickey
69
+ @publickey = Publickey.find(params[:id])
70
+ end
71
+
72
+ # Never trust parameters from the scary internet, only allow the white list through.
73
+ def publickey_params
74
+ params.require(:publickey).permit(:name, :data, :user_id)
75
+ end
76
+ end
@@ -0,0 +1,28 @@
1
+ class Users::ConfirmationsController < Devise::ConfirmationsController
2
+ # GET /resource/confirmation/new
3
+ # def new
4
+ # super
5
+ # end
6
+
7
+ # POST /resource/confirmation
8
+ # def create
9
+ # super
10
+ # end
11
+
12
+ # GET /resource/confirmation?confirmation_token=abcdef
13
+ # def show
14
+ # super
15
+ # end
16
+
17
+ # protected
18
+
19
+ # The path used after resending confirmation instructions.
20
+ # def after_resending_confirmation_instructions_path_for(resource_name)
21
+ # super(resource_name)
22
+ # end
23
+
24
+ # The path used after confirmation.
25
+ # def after_confirmation_path_for(resource_name, resource)
26
+ # super(resource_name, resource)
27
+ # end
28
+ end
@@ -0,0 +1,28 @@
1
+ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
2
+ # You should configure your model like this:
3
+ # devise :omniauthable, omniauth_providers: [:twitter]
4
+
5
+ # You should also create an action method in this controller like this:
6
+ # def twitter
7
+ # end
8
+
9
+ # More info at:
10
+ # https://github.com/plataformatec/devise#omniauth
11
+
12
+ # GET|POST /resource/auth/twitter
13
+ # def passthru
14
+ # super
15
+ # end
16
+
17
+ # GET|POST /users/auth/twitter/callback
18
+ # def failure
19
+ # super
20
+ # end
21
+
22
+ # protected
23
+
24
+ # The path used when OmniAuth fails
25
+ # def after_omniauth_failure_path_for(scope)
26
+ # super(scope)
27
+ # end
28
+ end