meroku 2.0.8 → 2.0.9

Sign up to get free protection for your applications and to get access to all the features.
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>