meroku 2.0.8 → 2.0.9

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 (81) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -5
  3. data/bin/meroku +1 -1
  4. data/circle.yml +23 -0
  5. data/frontend/Gemfile +5 -2
  6. data/frontend/Gemfile.lock +5 -2
  7. data/frontend/app/controllers/application_controller.rb +1 -0
  8. data/frontend/app/controllers/apps_controller.rb +46 -48
  9. data/frontend/app/controllers/publickeys_controller.rb +45 -46
  10. data/frontend/app/controllers/users/registrations_controller.rb +0 -15
  11. data/frontend/app/controllers/users/sessions_controller.rb +12 -3
  12. data/frontend/app/lib/cmd.rb +11 -0
  13. data/frontend/app/models/app.rb +18 -11
  14. data/frontend/app/models/publickey.rb +1 -1
  15. data/frontend/app/models/user.rb +5 -4
  16. data/frontend/app/policies/application_policy.rb +53 -0
  17. data/frontend/app/policies/publickey_policy.rb +7 -0
  18. data/frontend/app/serializable/serializable_user.rb +2 -1
  19. data/frontend/app/views/layouts/application.html.erb +1 -1
  20. data/frontend/config/database.yml +72 -10
  21. data/frontend/config/routes.rb +6 -14
  22. data/frontend/db/migrate/20171028150506_add_apisecret_to_users.rb +6 -0
  23. data/frontend/etc_nginx_sites-enabled_default +1 -1
  24. data/frontend/public/Meroku.html +140 -0
  25. data/frontend/public/Meroku/Api.html +129 -0
  26. data/frontend/public/Meroku/Api/Request.html +221 -0
  27. data/frontend/public/Meroku/Aws.html +212 -0
  28. data/frontend/public/Meroku/Aws/Ec2.html +477 -0
  29. data/frontend/public/Meroku/CLI.html +784 -0
  30. data/frontend/public/Meroku/CLI/AdminUser.html +192 -0
  31. data/frontend/public/Meroku/CLI/Help.html +224 -0
  32. data/frontend/public/Meroku/CLI/Secrets.html +191 -0
  33. data/frontend/public/Meroku/CLI/Session.html +460 -0
  34. data/frontend/public/Meroku/CLI/User.html +182 -0
  35. data/frontend/public/Meroku/Extensions.html +405 -0
  36. data/frontend/public/Meroku/Infrastructure.html +279 -0
  37. data/frontend/public/Meroku/Infrastructure/Node.html +785 -0
  38. data/frontend/public/Meroku/Infrastructure/Server.html +373 -0
  39. data/frontend/public/Meroku/Node.html +845 -0
  40. data/frontend/public/Meroku/Tunnel.html +701 -0
  41. data/frontend/public/Meroku/Tunnelable.html +243 -0
  42. data/frontend/public/_index.html +273 -0
  43. data/frontend/public/class_list.html +51 -0
  44. data/frontend/public/css/common.css +1 -0
  45. data/frontend/public/css/full_list.css +58 -0
  46. data/frontend/public/css/style.css +492 -0
  47. data/frontend/public/file.README.html +181 -0
  48. data/frontend/public/file_list.html +56 -0
  49. data/frontend/public/frames.html +17 -0
  50. data/frontend/public/index.html +181 -0
  51. data/frontend/public/js/app.js +248 -0
  52. data/frontend/public/js/full_list.js +216 -0
  53. data/frontend/public/js/jquery.js +4 -0
  54. data/frontend/public/method_list.html +395 -0
  55. data/frontend/public/robots.txt +2 -1
  56. data/frontend/public/top-level-namespace.html +110 -0
  57. data/frontend/test/policies/publickey_policy_test.rb +19 -0
  58. data/lib/meroku.rb +9 -7
  59. data/lib/meroku/api.rb +8 -0
  60. data/lib/meroku/api/request.rb +17 -0
  61. data/lib/meroku/aws.rb +14 -0
  62. data/lib/meroku/aws/ec2.rb +59 -0
  63. data/lib/meroku/cli.rb +80 -81
  64. data/lib/meroku/cli/help.rb +27 -0
  65. data/lib/meroku/cli/secrets.rb +13 -0
  66. data/lib/meroku/cli/session.rb +32 -51
  67. data/lib/meroku/extensions.rb +32 -0
  68. data/lib/meroku/infrastructure.rb +14 -17
  69. data/lib/meroku/infrastructure/server.rb +20 -0
  70. data/lib/meroku/node.rb +113 -0
  71. data/lib/meroku/tunnelable.rb +31 -0
  72. data/lib/meroku/version.rb +1 -1
  73. data/modified-cedar-14.sh +0 -4
  74. metadata +50 -9
  75. data/frontend/app/controllers/pages_controller.rb +0 -4
  76. data/frontend/app/views/pages/landing.html.erb +0 -2
  77. data/frontend/db/migrate/20171025193627_add_token_to_users.rb +0 -5
  78. data/lib/meroku/cli/admin_user.rb +0 -20
  79. data/lib/meroku/cli/user.rb +0 -14
  80. data/lib/meroku/infrastructure/node.rb +0 -102
  81. data/lib/meroku/tunnel.rb +0 -56
@@ -4,27 +4,34 @@ class App < ApplicationRecord
4
4
  after_commit :make_folder, on: [:create]
5
5
 
6
6
  def make_folder
7
- username = self.user.token
8
- Rails.logger.debug "DB8 app.rb:def self.make_folder called"
9
- system(%Q[sudo -u #{username} mkdir /home/#{username}/#{self.name}.git])
10
- system(%Q[sudo -u #{username} mkdir /home/#{username}/#{self.name}])
11
- system(%Q[sudo -u #{username} sh -c "cd /home/#{username}/#{self.name}.git; git --bare init"])
7
+ Rails.logger.debug "DB8 app.rb:make_folder() called"
8
+ username = self.user.apiusername
9
+ Cmd.run(%Q[sudo -u #{username} mkdir /home/#{username}/#{self.name}.git])
10
+ Cmd.run(%Q[sudo -u #{username} mkdir /home/#{username}/#{self.name}])
12
11
 
12
+ Cmd.run(%Q[sudo -u postgres createuser -S -D -R -e #{username}])
13
+ Cmd.run(%Q[sudo -u postgres createdb #{self.name}])
14
+ Cmd.run(%Q[sudo -u postgres psql -c "ALTER ROLE #{username} WITH PASSWORD '#{self.user.apisecret}';"])
13
15
 
14
- system(%Q[sudo -u #{username} sh -c "echo '#!/bin/bash
16
+ Cmd.run(%Q[sudo -u #{username} sh -c "cd /home/#{username}/#{self.name}.git; git --bare init"])
17
+ Cmd.run(%Q[sudo cp /sharedro/etc_nginx_sites-enabled_template /home/#{username}/#{self.name}.conf])
18
+ Cmd.run(%Q[sudo sed -i -e 's/REPLACEMEAPPNAME/#{self.name}/g' /home/#{username}/#{self.name}.conf])
19
+ Cmd.run(%Q[sudo sed -i -e 's/REPLACEMEUSERNAME/#{username}/g' /home/#{username}/#{self.name}.conf])
20
+ Cmd.run(%Q[sudo -u #{username} sh -c "echo '#!/bin/bash
15
21
  set -x
16
22
  : Git hook is executing
17
- mkdir /home/#{username}/#{self.name}
18
23
  cd /home/#{username}/#{self.name}
19
- cp /sharedro/etc_nginx_sites-enabled_template /home/#{username}/#{self.name}.conf
20
- sed -i -e 's/REPLACEMEAPPNAME/#{self.name}/g' /home/#{username}/#{self.name}.conf
21
- sed -i -e 's/REPLACEMEUSERNAME/#{username}/g' /home/#{username}/#{self.name}.conf
24
+ echo 'DATABASE_URL=postgres://#{self.user.apiusername}:#{self.user.apisecret}@localhost:5432/#{self.name}'
25
+ export DATABASE_URL="postgres://#{self.user.apiusername}:#{self.user.apisecret}@localhost:5432/#{self.name}"
22
26
  git --work-tree=/home/#{username}/#{self.name} --git-dir=/home/#{username}/#{self.name}.git checkout -f
23
27
  bundle install --path vendor/bundle
24
28
  RAILS_ENV=production bundle exec rake db:migrate
25
29
  RAILS_ENV=production bundle exec rake assets:precompile
26
30
  RAILS_ENV=production bundle exec puma -d -b unix:///home/#{username}/#{self.name}.sock
27
31
  ' > /home/#{username}/#{self.name}.git/hooks/post-receive"])
28
- system(%Q[sudo -u #{username} sh -c 'chmod u+x /home/#{username}/#{self.name}.git/hooks/post-receive'])
32
+ Cmd.run(%Q[sudo -u #{username} sh -c 'chmod u+x /home/#{username}/#{self.name}.git/hooks/post-receive'])
33
+ Cmd.run(%Q[sudo ln -s /home/#{username}/#{self.name}.conf /etc/nginx/sites-enabled/#{self.name}])
34
+ Cmd.run(%Q[sudo /usr/sbin/nginx -s reload])
29
35
  end
36
+
30
37
  end
@@ -8,7 +8,7 @@ class Publickey < ApplicationRecord
8
8
  Rails.logger.debug "DB8 publickey.rb:def self.refresh called"
9
9
  if Publickey.all.size > 0
10
10
  File.write('/tmp/authorized_keys', Publickey.pluck(:data).join("\n") )
11
- system("sudo -u #{self.user.token} cp /tmp/authorized_keys /home/#{self.user.token}/.ssh/authorized_keys")
11
+ Cmd.run(%Q[sudo -u #{self.user.apiusername} cp /tmp/authorized_keys /home/#{self.user.apiusername}/.ssh/authorized_keys])
12
12
  File.delete('/tmp/authorized_keys')
13
13
  end
14
14
  end
@@ -9,13 +9,14 @@ class User < ApplicationRecord
9
9
  after_commit :make_user, on: [:create]
10
10
 
11
11
  before_save do
12
- self.token = SecureRandom.hex if !self.token
12
+ self.apiusername = "u#{SecureRandom.hex[0..5]}" if !self.apiusername
13
+ self.apisecret = "s#{SecureRandom.hex[0..5]}" if !self.apisecret
13
14
  end
14
15
 
15
16
  def make_user
16
17
  Rails.logger.debug "DB8 user.rb:.make_user() called"
17
- system(%Q[sudo adduser --disabled-password --gecos "" #{token}])
18
- system(%Q[sudo -u #{token} mkdir /home/#{token}/.ssh/])
19
- system(%Q[sudo -u #{token} touch /home/#{token}/.ssh/authorized_keys])
18
+ Cmd.run(%Q[sudo adduser --disabled-password --gecos "" #{self.apiusername}])
19
+ Cmd.run(%Q[sudo -u #{self.apiusername} mkdir /home/#{self.apiusername}/.ssh/])
20
+ Cmd.run(%Q[sudo -u #{self.apiusername} touch /home/#{self.apiusername}/.ssh/authorized_keys])
20
21
  end
21
22
  end
@@ -0,0 +1,53 @@
1
+ class ApplicationPolicy
2
+ attr_reader :user, :record
3
+
4
+ def initialize(user, record)
5
+ @user = user
6
+ @record = record
7
+ end
8
+
9
+ def index?
10
+ false
11
+ end
12
+
13
+ def show?
14
+ scope.where(:id => record.id).exists?
15
+ end
16
+
17
+ def create?
18
+ false
19
+ end
20
+
21
+ def new?
22
+ create?
23
+ end
24
+
25
+ def update?
26
+ false
27
+ end
28
+
29
+ def edit?
30
+ update?
31
+ end
32
+
33
+ def destroy?
34
+ false
35
+ end
36
+
37
+ def scope
38
+ Pundit.policy_scope!(user, record.class)
39
+ end
40
+
41
+ class Scope
42
+ attr_reader :user, :scope
43
+
44
+ def initialize(user, scope)
45
+ @user = user
46
+ @scope = scope
47
+ end
48
+
49
+ def resolve
50
+ scope
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,7 @@
1
+ class PublickeyPolicy < ApplicationPolicy
2
+ class Scope < Scope
3
+ def resolve
4
+ scope
5
+ end
6
+ end
7
+ end
@@ -1,7 +1,8 @@
1
1
  class SerializableUser < JSONAPI::Serializable::Resource
2
2
  type 'users'
3
3
  attribute :email
4
- attribute :token
4
+ attribute :apiusername
5
+ attribute :apisecret
5
6
  attribute :created_at
6
7
  attribute :updated_at
7
8
  end
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>Frontend</title>
4
+ <title>www.meroku.com</title>
5
5
  <%= csrf_meta_tags %>
6
6
 
7
7
  <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
@@ -1,25 +1,87 @@
1
- # SQLite version 3.x
2
- # gem install sqlite3
1
+ # PostgreSQL. Versions 9.1 and up are supported.
3
2
  #
4
- # Ensure the SQLite 3 gem is defined in your Gemfile
5
- # gem 'sqlite3'
3
+ # Install the pg driver:
4
+ # gem install pg
5
+ # On OS X with Homebrew:
6
+ # gem install pg -- --with-pg-config=/usr/local/bin/pg_config
7
+ # On OS X with MacPorts:
8
+ # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
9
+ # On Windows:
10
+ # gem install pg
11
+ # Choose the win32 build.
12
+ # Install PostgreSQL and put its /bin directory on your path.
13
+ #
14
+ # Configure Using Gemfile
15
+ # gem 'pg'
6
16
  #
7
17
  default: &default
8
- adapter: sqlite3
18
+ adapter: postgresql
19
+ encoding: unicode
20
+ # For details on connection pooling, see Rails configuration guide
21
+ # http://guides.rubyonrails.org/configuring.html#database-pooling
9
22
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
10
- timeout: 5000
11
23
 
12
24
  development:
13
25
  <<: *default
14
- database: db/development.sqlite3
26
+ database: meroku_development
27
+
28
+ # The specified database role being used to connect to postgres.
29
+ # To create additional roles in postgres see `$ createuser --help`.
30
+ # When left blank, postgres will use the default role. This is
31
+ # the same name as the operating system user that initialized the database.
32
+ username: meroku
33
+
34
+ # The password associated with the postgres role (username).
35
+ password: <%= ENV['SECRET'] %>
36
+
37
+ # Connect on a TCP socket. Omitted by default since the client uses a
38
+ # domain socket that doesn't need configuration. Windows does not have
39
+ # domain sockets, so uncomment these lines.
40
+ #host: localhost
41
+
42
+ # The TCP port the server listens on. Defaults to 5432.
43
+ # If your server runs on a different port number, change accordingly.
44
+ #port: 5432
45
+
46
+ # Schema search path. The server defaults to $user,public
47
+ #schema_search_path: myapp,sharedapp,public
48
+
49
+ # Minimum log levels, in increasing order:
50
+ # debug5, debug4, debug3, debug2, debug1,
51
+ # log, notice, warning, error, fatal, and panic
52
+ # Defaults to warning.
53
+ #min_messages: notice
15
54
 
16
55
  # Warning: The database defined as "test" will be erased and
17
56
  # re-generated from your development database when you run "rake".
18
57
  # Do not set this db to the same as development or production.
19
58
  test:
20
59
  <<: *default
21
- database: db/test.sqlite3
22
-
60
+ database: meroku_test
61
+ password: <%= ENV['SECRET'] %>
62
+
63
+ # As with config/secrets.yml, you never want to store sensitive information,
64
+ # like your database password, in your source code. If your source code is
65
+ # ever seen by anyone, they now have access to your database.
66
+ #
67
+ # Instead, provide the password as a unix environment variable when you boot
68
+ # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
69
+ # for a full rundown on how to provide these environment variables in a
70
+ # production deployment.
71
+ #
72
+ # On Heroku and other platform providers, you may have a full connection URL
73
+ # available as an environment variable. For example:
74
+ #
75
+ # DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
76
+ #
77
+ # You can use this database configuration with:
78
+ #
79
+ # production:
80
+ # url: <%= ENV['DATABASE_URL'] %>
81
+ #
23
82
  production:
24
83
  <<: *default
25
- database: db/production.sqlite3
84
+ database: meroku
85
+ username: meroku
86
+ password: <%= ENV['SECRET'] %>
87
+
@@ -1,19 +1,11 @@
1
1
  Rails.application.routes.draw do
2
2
 
3
- resources :publickeys
4
- resources :apps
5
- Rails.application.routes.draw do
6
- resources :publickeys
7
- resources :apps
8
- devise_for :users, controllers: {
9
- sessions: 'users/sessions',
10
- registrations: 'users/registrations'
11
- }
12
- end
3
+ resources :publickeys, only: [:create]
4
+ resources :apps, only: [:create]
13
5
 
14
- get 'pages/landing'
6
+ devise_for :users, controllers: {
7
+ sessions: 'users/sessions',
8
+ registrations: 'users/registrations'
9
+ }
15
10
 
16
- # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
17
-
18
- root 'pages#landing'
19
11
  end
@@ -0,0 +1,6 @@
1
+ class AddApisecretToUsers < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :users, :apiusername, :string
4
+ add_column :users, :apisecret, :string
5
+ end
6
+ end
@@ -1,6 +1,6 @@
1
1
  upstream app {
2
2
  # Path to Puma SOCK file, as defined previously
3
- server unix:/tmp/meroku.sock fail_timeout=0;
3
+ server unix:/home/ubuntu/meroku.sock fail_timeout=0;
4
4
  #server 127.0.0.1:3000;
5
5
  }
6
6
 
@@ -0,0 +1,140 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: Meroku
8
+
9
+ &mdash; Documentation by YARD 0.9.9
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ pathId = "Meroku";
19
+ relpath = '';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="_index.html">Index (M)</a> &raquo;
40
+
41
+
42
+ <span class="title">Meroku</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Module: Meroku
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>lib/meroku.rb<span class="defines">,<br />
82
+ lib/meroku/api.rb,<br /> lib/meroku/aws.rb,<br /> lib/meroku/cli.rb,<br /> lib/meroku/node.rb,<br /> lib/meroku/aws/ec2.rb,<br /> lib/meroku/version.rb,<br /> lib/meroku/cli/help.rb,<br /> lib/meroku/extensions.rb,<br /> lib/meroku/tunnelable.rb,<br /> lib/meroku/api/request.rb,<br /> lib/meroku/cli/secrets.rb,<br /> lib/meroku/cli/session.rb,<br /> lib/meroku/infrastructure.rb,<br /> lib/meroku/infrastructure/server.rb</span>
83
+ </dd>
84
+ </dl>
85
+
86
+ </div>
87
+
88
+ <h2>Overview</h2><div class="docstring">
89
+ <div class="discussion">
90
+
91
+ <p>My Heroku (Meroku)</p>
92
+
93
+
94
+ </div>
95
+ </div>
96
+ <div class="tags">
97
+
98
+
99
+ </div><h2>Defined Under Namespace</h2>
100
+ <p class="children">
101
+
102
+
103
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Meroku/Api.html" title="Meroku::Api (module)">Api</a></span>, <span class='object_link'><a href="Meroku/Aws.html" title="Meroku::Aws (module)">Aws</a></span>, <span class='object_link'><a href="Meroku/CLI.html" title="Meroku::CLI (module)">CLI</a></span>, <span class='object_link'><a href="Meroku/Extensions.html" title="Meroku::Extensions (module)">Extensions</a></span>, <span class='object_link'><a href="Meroku/Infrastructure.html" title="Meroku::Infrastructure (module)">Infrastructure</a></span>, <span class='object_link'><a href="Meroku/Tunnelable.html" title="Meroku::Tunnelable (module)">Tunnelable</a></span>
104
+
105
+
106
+
107
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Meroku/Node.html" title="Meroku::Node (class)">Node</a></span>
108
+
109
+
110
+ </p>
111
+
112
+ <h2>Constant Summary</h2>
113
+ <dl class="constants">
114
+
115
+ <dt id="VERSION-constant" class="">VERSION =
116
+
117
+ </dt>
118
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>2.0.8</span><span class='tstring_end'>&quot;</span></span></pre></dd>
119
+
120
+ </dl>
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+ </div>
131
+
132
+ <div id="footer">
133
+ Generated on Tue Oct 31 19:39:54 2017 by
134
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
135
+ 0.9.9 (ruby-2.4.2).
136
+ </div>
137
+
138
+ </div>
139
+ </body>
140
+ </html>
@@ -0,0 +1,129 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Module: Meroku::Api
8
+
9
+ &mdash; Documentation by YARD 0.9.9
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../css/style.css" type="text/css" charset="utf-8" />
14
+
15
+ <link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8" />
16
+
17
+ <script type="text/javascript" charset="utf-8">
18
+ pathId = "Meroku::Api";
19
+ relpath = '../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../_index.html">Index (A)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../Meroku.html" title="Meroku (module)">Meroku</a></span></span>
41
+ &raquo;
42
+ <span class="title">Api</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Module: Meroku::Api
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ <dl>
80
+ <dt>Defined in:</dt>
81
+ <dd>lib/meroku/api.rb<span class="defines">,<br />
82
+ lib/meroku/api/request.rb</span>
83
+ </dd>
84
+ </dl>
85
+
86
+ </div>
87
+
88
+ <h2>Overview</h2><div class="docstring">
89
+ <div class="discussion">
90
+
91
+ <p>The api is the rails app/service running on the ec2 server handling login,
92
+ logout, keys:add etc</p>
93
+
94
+
95
+ </div>
96
+ </div>
97
+ <div class="tags">
98
+
99
+
100
+ </div><h2>Defined Under Namespace</h2>
101
+ <p class="children">
102
+
103
+
104
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Api/Request.html" title="Meroku::Api::Request (module)">Request</a></span>
105
+
106
+
107
+
108
+
109
+ </p>
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+ </div>
120
+
121
+ <div id="footer">
122
+ Generated on Tue Oct 31 19:39:54 2017 by
123
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
124
+ 0.9.9 (ruby-2.4.2).
125
+ </div>
126
+
127
+ </div>
128
+ </body>
129
+ </html>