meroku 0.1.36 → 2.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.
- checksums.yaml +4 -4
- data/.env.example +2 -0
- data/.gitignore +10 -0
- data/.travis.yml +5 -0
- data/Gemfile +6 -0
- data/Guardfile +58 -0
- data/LICENSE.txt +21 -0
- data/README.md +16 -0
- data/Rakefile +10 -0
- data/bin/meroku +6 -0
- data/exe/meroku +6 -2
- data/lib/meroku.rb +24 -15
- data/lib/meroku/infrastructure.rb +24 -0
- data/lib/meroku/version.rb +1 -1
- data/meroku.gemspec +40 -0
- metadata +111 -81
- data/lib/meroku/app.rb +0 -12
- data/lib/meroku/app/collaborator.rb +0 -18
- data/lib/meroku/application_record.rb +0 -8
- data/lib/meroku/apps_controller.rb +0 -112
- data/lib/meroku/cli.rb +0 -8
- data/lib/meroku/cli/certs.rb +0 -30
- data/lib/meroku/cli/certs.rb~ +0 -14
- data/lib/meroku/cli/cli.rb +0 -97
- data/lib/meroku/cli/config.rb +0 -111
- data/lib/meroku/cli/domains.rb +0 -69
- data/lib/meroku/cli/keys.rb +0 -38
- data/lib/meroku/cli/remote.rb +0 -13
- data/lib/meroku/cli/remote.rb~ +0 -12
- data/lib/meroku/cli/server.rb +0 -163
- data/lib/meroku/cli/server.rb~ +0 -4
- data/lib/meroku/config.rb +0 -6
- data/lib/meroku/configs_controller.rb +0 -62
- data/lib/meroku/core_ext.rb +0 -30
- data/lib/meroku/domain.rb +0 -6
- data/lib/meroku/domains_controller.rb +0 -83
- data/lib/meroku/error.rb +0 -6
- data/lib/meroku/key.rb +0 -11
- data/lib/meroku/keys_controller.rb +0 -82
- data/lib/meroku/sanitychecks.rb +0 -19
- data/lib/meroku/user.rb +0 -23
- data/lib/meroku/util.rb +0 -434
    
        data/lib/meroku/cli/keys.rb
    DELETED
    
    | @@ -1,38 +0,0 @@ | |
| 1 | 
            -
            module Meroku
         | 
| 2 | 
            -
              module CLI
         | 
| 3 | 
            -
             | 
| 4 | 
            -
                require 'action_view'
         | 
| 5 | 
            -
                include ActionView::Helpers::TextHelper
         | 
| 6 | 
            -
                class Keys < Thor
         | 
| 7 | 
            -
                  include Meroku::Util
         | 
| 8 | 
            -
                  include ActionView::Helpers::TextHelper
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  desc "add", "Upload your public key (~/.ssh/id_rsa.pub) to meroku"
         | 
| 11 | 
            -
                  def add
         | 
| 12 | 
            -
                    require 'rest-client'
         | 
| 13 | 
            -
                    require 'rack'
         | 
| 14 | 
            -
                    require 'action_view'
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                    if !public_key_exists?
         | 
| 17 | 
            -
                      puts "Public key not found at ~/.ssh/id_rsa.pub"
         | 
| 18 | 
            -
                      puts "see https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key"
         | 
| 19 | 
            -
                      return
         | 
| 20 | 
            -
                    end
         | 
| 21 | 
            -
                    key = IO.read("#{Dir.home}/.ssh/id_rsa.pub")
         | 
| 22 | 
            -
                    resp = RestClient.post 'https://www.meroku.com/meroku/keys.json', { key: key, authentication: { token: cli_token } }
         | 
| 23 | 
            -
                    puts "Added #{truncate(JSON.parse(resp)["data"]["key"])}. (#{resp.code} #{Rack::Utils::HTTP_STATUS_CODES[resp.code]})"
         | 
| 24 | 
            -
                  rescue RestClient::Exception => e
         | 
| 25 | 
            -
                    out_str = "ERROR"
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                    if valid_json?(e.response) && JSON.parse(e.response)["errors"].size >= 1
         | 
| 28 | 
            -
                      out_str += " "
         | 
| 29 | 
            -
                      out_str += JSON.parse(e.response)["errors"].map { |e| e.join(' ') }.to_sentence
         | 
| 30 | 
            -
                    end
         | 
| 31 | 
            -
                    out_str += " (#{e.to_s}) "
         | 
| 32 | 
            -
                    puts out_str
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
             | 
| 35 | 
            -
                end    
         | 
| 36 | 
            -
             | 
| 37 | 
            -
              end
         | 
| 38 | 
            -
            end
         | 
    
        data/lib/meroku/cli/remote.rb
    DELETED
    
    | @@ -1,13 +0,0 @@ | |
| 1 | 
            -
            require 'action_view'
         | 
| 2 | 
            -
            include ActionView::Helpers::TextHelper
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            class Remote < Thor
         | 
| 5 | 
            -
              include ::Meroku::Util
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              desc "add APPNAME", "adds a git remote for app named APPNAME"
         | 
| 8 | 
            -
              def add(name)
         | 
| 9 | 
            -
                `git remote remove meroku 2>&1 >/dev/null`
         | 
| 10 | 
            -
                `git remote add meroku u#{cli_user_id}@www.meroku.com:#{name}.git 2>&1 >/dev/null`
         | 
| 11 | 
            -
                puts "Added git remote meroku ( u#{cli_user_id}@www.meroku.com:#{name}.git )"
         | 
| 12 | 
            -
              end
         | 
| 13 | 
            -
            end
         | 
    
        data/lib/meroku/cli/remote.rb~
    DELETED
    
    | @@ -1,12 +0,0 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 3 | 
            -
            class Remote < Thor
         | 
| 4 | 
            -
              include ::Meroku::Util
         | 
| 5 | 
            -
             | 
| 6 | 
            -
              desc "add APPNAME", "adds a git remote for app named APPNAME"
         | 
| 7 | 
            -
              def add(name)
         | 
| 8 | 
            -
                `git remote remove meroku 2>&1 >/dev/null`
         | 
| 9 | 
            -
                `git remote add meroku u#{cli_user_id}@www.meroku.com:#{name}.git 2>&1 >/dev/null`
         | 
| 10 | 
            -
                puts "Added git remote meroku ( u#{cli_user_id}@www.meroku.com:#{name}.git )"
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
            end
         | 
    
        data/lib/meroku/cli/server.rb
    DELETED
    
    | @@ -1,163 +0,0 @@ | |
| 1 | 
            -
            module Meroku
         | 
| 2 | 
            -
              module CLI
         | 
| 3 | 
            -
                require 'action_view'
         | 
| 4 | 
            -
                include ActionView::Helpers::TextHelper
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                class Server < Thor
         | 
| 7 | 
            -
                  include Meroku::Sanitychecks
         | 
| 8 | 
            -
                  include Meroku::Util
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  desc "_downall", "Wip"
         | 
| 11 | 
            -
                  def _downall()
         | 
| 12 | 
            -
                    admin_secrets_required
         | 
| 13 | 
            -
                    ec2_client.terminate_instances({ instance_ids: [ production_servers.first ] }) if !production_servers.empty?
         | 
| 14 | 
            -
                  end
         | 
| 15 | 
            -
                  
         | 
| 16 | 
            -
                  desc "revert", "Puts server in state it was in when it was started and installed"
         | 
| 17 | 
            -
                  def revert()
         | 
| 18 | 
            -
                    puts `ssh -o 'StrictHostKeyChecking=no' -i ~/crypto/meroku/meroku.id_rsa ubuntu@34.239.241.218 'cd ~/meroku/ && git pull'`
         | 
| 19 | 
            -
                    puts `ssh -o 'StrictHostKeyChecking=no' -i ~/crypto/meroku/meroku.id_rsa ubuntu@34.239.241.218 'sudo ~/meroku/rails_app/script/revert'`
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
             | 
| 22 | 
            -
                  desc "backup", "Backup databases in production server"
         | 
| 23 | 
            -
                  def backup()
         | 
| 24 | 
            -
                    admin_secrets_required
         | 
| 25 | 
            -
                    timestamp=Time.now.to_i
         | 
| 26 | 
            -
                    aws_exports="AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=#{ENV['AWS_ACCESS_KEY_ID']} AWS_SECRET_ACCESS_KEY=#{ENV['AWS_SECRET_ACCESS_KEY']}"
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                    if production_servers.empty?
         | 
| 29 | 
            -
                      puts "Not doing backup - No production servers"
         | 
| 30 | 
            -
                      return
         | 
| 31 | 
            -
                    end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                    # DBs
         | 
| 34 | 
            -
                    ssh3("34.239.241.218","PGPASSWORD=bitnami pg_dumpall -U postgres -f /tmp/#{timestamp}.postgres")
         | 
| 35 | 
            -
                    ssh3("34.239.241.218","mysqldump -uroot -pbitnami --flush-privileges --all-databases > /tmp/#{timestamp}.mysql")
         | 
| 36 | 
            -
                    ssh3("34.239.241.218","gzip -fv -9 /tmp/#{timestamp}.postgres /tmp/#{timestamp}.mysql")
         | 
| 37 | 
            -
                    ssh("34.239.241.218","#{aws_exports} aws s3 cp /tmp/#{timestamp}.postgres.gz s3://meroku-database-backups/")
         | 
| 38 | 
            -
                    ssh("34.239.241.218","#{aws_exports} aws s3 cp /tmp/#{timestamp}.postgres.gz s3://meroku-database-backups/postgres.gz")
         | 
| 39 | 
            -
                    ssh("34.239.241.218","#{aws_exports} aws s3 cp /tmp/#{timestamp}.mysql.gz s3://meroku-database-backups/")
         | 
| 40 | 
            -
                    ssh("34.239.241.218","#{aws_exports} aws s3 cp /tmp/#{timestamp}.mysql.gz s3://meroku-database-backups/mysql.gz")
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                    # HOME DIRS
         | 
| 43 | 
            -
                    ssh3("34.239.241.218","sudo rm -f /tmp/home_dirs.tgz || true; sudo tar --exclude='/home/bitnami' -zcvf /tmp/home_dirs.gz /home/*")
         | 
| 44 | 
            -
                    ssh("34.239.241.218","#{aws_exports} aws s3 cp /tmp/home_dirs.gz s3://meroku-database-backups/")
         | 
| 45 | 
            -
                    ssh("34.239.241.218","#{aws_exports} aws s3 cp s3://meroku-database-backups/home_dirs.gz  s3://meroku-database-backups/#{timestamp}.home_dirs.gz")
         | 
| 46 | 
            -
             | 
| 47 | 
            -
                    # CLEANUP
         | 
| 48 | 
            -
                    ssh("34.239.241.218","sudo rm -f /tmp/*.mysql.gz /tmp/*.postgres.gz /tmp/home_dirs.gz")
         | 
| 49 | 
            -
                  end
         | 
| 50 | 
            -
                  
         | 
| 51 | 
            -
                  desc "activate", "Assigns production elastic ip to standby node"
         | 
| 52 | 
            -
                  def activate()
         | 
| 53 | 
            -
                    admin_secrets_required
         | 
| 54 | 
            -
                    # Terminate server with production ip
         | 
| 55 | 
            -
                    if !production_servers.empty?
         | 
| 56 | 
            -
                      ec2_client.terminate_instances({ instance_ids: [ production_servers.first ] })
         | 
| 57 | 
            -
                    end
         | 
| 58 | 
            -
             | 
| 59 | 
            -
                    standby_servers = unused_servers
         | 
| 60 | 
            -
                    abort "Too many unused servers (#{standby_servers.size})" if standby_servers.size > 1
         | 
| 61 | 
            -
             | 
| 62 | 
            -
                    ec2_client.associate_address(
         | 
| 63 | 
            -
                      {
         | 
| 64 | 
            -
                        allocation_id: 'eipalloc-139f7823', # this is eip 34.239.241.218
         | 
| 65 | 
            -
                        instance_id: standby_servers.first
         | 
| 66 | 
            -
                      }
         | 
| 67 | 
            -
                    )
         | 
| 68 | 
            -
                    puts "Associated 34.239.241.218 with #{standby_servers.first}"
         | 
| 69 | 
            -
                    puts 'ping 34.239.241.218 -c 20'
         | 
| 70 | 
            -
                    puts `ping 34.239.241.218 -c 20`
         | 
| 71 | 
            -
                    puts `ssh -i ~/crypto/meroku/meroku.id_rsa -o "StrictHostKeyChecking=no" -v ubuntu@34.239.241.218 pwd`
         | 
| 72 | 
            -
                    # remove the next 3 lines later
         | 
| 73 | 
            -
                    ssh3("34.239.241.218","cat meroku/rails_app/tmp/pids/server.pid")
         | 
| 74 | 
            -
                    ssh3("34.239.241.218","kill -9 `cat meroku/rails_app/tmp/pids/server.pid`")
         | 
| 75 | 
            -
                    ssh3("34.239.241.218","cd meroku/rails_app; RAILS_SERVE_STATIC_FILES=1 SECRET_KEY_BASE=fixme rails s -e production -d -b 0.0.0.0 && sleep 5")
         | 
| 76 | 
            -
                    ssh3("34.239.241.218","sudo ls -la /opt/bitnami/nginx/conf/vhosts/") # for debugging
         | 
| 77 | 
            -
                  end
         | 
| 78 | 
            -
             | 
| 79 | 
            -
                  desc "install", "installs software needed to meroku work"
         | 
| 80 | 
            -
                  def install()
         | 
| 81 | 
            -
                    admin_secrets_required
         | 
| 82 | 
            -
                    ip = server_being_built
         | 
| 83 | 
            -
             | 
| 84 | 
            -
                    ssh2(ip,"sudo apt-add-repository ppa:git-core/ppa -y")
         | 
| 85 | 
            -
                    ssh2(ip,"sudo apt-get update -y")
         | 
| 86 | 
            -
                    ssh2(ip,"sudo apt-get install -yqq libyaml-dev libsqlite3-dev sqlite3 libgmp-dev libgdbm-dev")
         | 
| 87 | 
            -
                    ssh2(ip,"sudo apt-get install -yqq libncurses5-dev bison pkg-config libffi-dev")
         | 
| 88 | 
            -
                    ssh2(ip,"sudo apt-get install -yqq libgmp-dev libreadline6-dev libssl-dev libpq-dev libmysqlclient-dev jq awscli")
         | 
| 89 | 
            -
                    #ssh2(ip,"sudo apt-get install -yqq nodejs")
         | 
| 90 | 
            -
                    ssh2(ip,"sudo npm install -g yarn")
         | 
| 91 | 
            -
             | 
| 92 | 
            -
                    ssh2(ip,"sudo apt-get install git-core -y")
         | 
| 93 | 
            -
                    ssh2(ip,"sudo rm /opt/bitnami/git/bin/git")
         | 
| 94 | 
            -
                    ssh2(ip,"sudo ln -s /usr/bin/git /opt/bitnami/git/bin/git")
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                    ssh2(ip,"sudo addgroup meroku;")
         | 
| 97 | 
            -
                    ssh2(ip,"sudo apt-get install emacs24-nox -y")
         | 
| 98 | 
            -
                    ssh2(ip,"git clone --quiet https://github.com/meroku/meroku.git")
         | 
| 99 | 
            -
             | 
| 100 | 
            -
                    ssh2(ip,"sudo mkdir /opt/githooks; sudo chmod 777 /opt/githooks")
         | 
| 101 | 
            -
                    ssh2(ip,'cp ~/meroku/misc/githook_post-receive /opt/githooks/post-receive')
         | 
| 102 | 
            -
                    ssh2(ip,'cp ~/meroku/misc/start_app /opt/githooks/start_app')
         | 
| 103 | 
            -
                    
         | 
| 104 | 
            -
                    ssh2(ip,"sudo chmod 777 /opt/githooks/* ")
         | 
| 105 | 
            -
                    ssh2(ip,"sudo ln -s /usr/bin/install /bin/install")
         | 
| 106 | 
            -
             | 
| 107 | 
            -
                    aws_exports="AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=#{ENV['AWS_ACCESS_KEY_ID']} AWS_SECRET_ACCESS_KEY=#{ENV['AWS_SECRET_ACCESS_KEY']}"
         | 
| 108 | 
            -
             | 
| 109 | 
            -
                    # postgres / mysql restore happens here
         | 
| 110 | 
            -
                    ssh3(ip,"#{aws_exports} aws s3 cp s3://meroku-database-backups/postgres.gz /tmp/")
         | 
| 111 | 
            -
                    ssh3(ip,"#{aws_exports} aws s3 cp s3://meroku-database-backups/mysql.gz /tmp/")
         | 
| 112 | 
            -
                    ssh3(ip,"cd /tmp/ && gunzip postgres.gz && gunzip mysql.gz")
         | 
| 113 | 
            -
                    ssh3(ip,"PGPASSWORD=bitnami psql -U postgres -f /tmp/postgres")
         | 
| 114 | 
            -
                    ssh3(ip,"mysql -uroot -pbitnami < /tmp/mysql")
         | 
| 115 | 
            -
                    ssh3(ip,"sudo rm -f /tmp/mysql /tmp/postgres")
         | 
| 116 | 
            -
             | 
| 117 | 
            -
                    ssh2(ip,"sudo mkdir /opt/bitnami/nginx/keys/; ")
         | 
| 118 | 
            -
                    puts `scp -i ~/crypto/meroku/meroku.id_rsa ~/crypto/meroku/meroku_site_fullchain.pem ubuntu@#{ip}:/home/bitnami/`
         | 
| 119 | 
            -
                    ssh2(ip, 'sudo mv ~/meroku_site_fullchain.pem /opt/bitnami/nginx/keys/; ')
         | 
| 120 | 
            -
                    puts `scp -i ~/crypto/meroku/meroku.id_rsa ~/crypto/meroku/meroku_site_privkey.pem ubuntu@#{ip}:/home/bitnami/`
         | 
| 121 | 
            -
                    ssh2(ip,'sudo mv ~/meroku_site_privkey.pem /opt/bitnami/nginx/keys/; ')
         | 
| 122 | 
            -
             | 
| 123 | 
            -
                    ssh2(ip,"sudo cp meroku/misc/gemrc /etc/gemrc")
         | 
| 124 | 
            -
                    ssh2(ip,"cd meroku/rails_app; NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install")
         | 
| 125 | 
            -
             | 
| 126 | 
            -
                    ssh3(ip,"cd meroku/rails_app; RAILS_ENV=production rake nginx:rebuild")
         | 
| 127 | 
            -
             | 
| 128 | 
            -
                    # create unix users
         | 
| 129 | 
            -
                    ssh3(ip,"cd meroku/rails_app; RAILS_ENV=production rake unix_users:rebuild")
         | 
| 130 | 
            -
                    # create unix users directories
         | 
| 131 | 
            -
                    ssh3(ip,"#{aws_exports} aws s3 cp s3://meroku-database-backups/home_dirs.gz /tmp/")
         | 
| 132 | 
            -
                    ssh3(ip,"#{aws_exports} cd /; sudo tar xzvf /tmp/home_dirs.gz")
         | 
| 133 | 
            -
                    ssh3(ip,"sudo rm -f /tmp/home_dirs.gz")
         | 
| 134 | 
            -
             | 
| 135 | 
            -
                    ssh3(ip,"cd meroku/rails_app; RAILS_ENV=production rake rvm:rebuild")
         | 
| 136 | 
            -
             | 
| 137 | 
            -
                    ssh3(ip,"cd meroku/rails_app; SECRET_KEY_BASE=fixme rake assets:precompile")
         | 
| 138 | 
            -
                    ssh3(ip,"cd meroku/rails_app; RAILS_SERVE_STATIC_FILES=1 SECRET_KEY_BASE=fixme rails s -e production -d -b 0.0.0.0 && sleep 5")
         | 
| 139 | 
            -
             | 
| 140 | 
            -
                    
         | 
| 141 | 
            -
                    # start customer rails apps here wipwip
         | 
| 142 | 
            -
                    ssh3(ip,"cd meroku/rails_app; RAILS_ENV=production rake meroku:start_apps")
         | 
| 143 | 
            -
             | 
| 144 | 
            -
                    ssh3(ip,"sudo /opt/bitnami/ctlscript.sh stop apache")
         | 
| 145 | 
            -
                    ssh3(ip,"sudo /opt/bitnami/ctlscript.sh restart nginx")
         | 
| 146 | 
            -
                    ssh3(ip,"sudo ls -la /opt/bitnami/nginx/conf/vhosts/")
         | 
| 147 | 
            -
                  end
         | 
| 148 | 
            -
             | 
| 149 | 
            -
                  desc "start", "spins up an ubuntu server"
         | 
| 150 | 
            -
                  long_desc <<-LONGDESC
         | 
| 151 | 
            -
                    Spins up an ubuntu server with name tag "meroku",
         | 
| 152 | 
            -
                    with the production ip not yet assigned
         | 
| 153 | 
            -
                  LONGDESC
         | 
| 154 | 
            -
                  def start()
         | 
| 155 | 
            -
                    admin_secrets_required
         | 
| 156 | 
            -
                    terminate_unused_servers
         | 
| 157 | 
            -
                    instance_id = ec2_start_instance
         | 
| 158 | 
            -
                    ec2_tag_instance(instance_id)
         | 
| 159 | 
            -
                    ec2_await_boot(instance_id)
         | 
| 160 | 
            -
                  end
         | 
| 161 | 
            -
                end
         | 
| 162 | 
            -
              end
         | 
| 163 | 
            -
            end
         | 
    
        data/lib/meroku/cli/server.rb~
    DELETED
    
    
    
        data/lib/meroku/config.rb
    DELETED
    
    
| @@ -1,62 +0,0 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            module Meroku
         | 
| 3 | 
            -
              
         | 
| 4 | 
            -
              class ConfigsController < ApplicationController
         | 
| 5 | 
            -
                skip_before_action :verify_authenticity_token, only: [:create, :destroy]
         | 
| 6 | 
            -
                before_action :authenticate, only: [ :create, :index, :destroy ]
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                def index
         | 
| 9 | 
            -
                  configs = Meroku::App.last.configs.map { |x| "#{x.name}: #{x.value || 'nil'}" }.join("\n")
         | 
| 10 | 
            -
                  render json: {
         | 
| 11 | 
            -
                    "data": "#{configs}\n"
         | 
| 12 | 
            -
                  }
         | 
| 13 | 
            -
                end  
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def create
         | 
| 16 | 
            -
                  @config = Meroku::Config.where(name: params["name"], app_id: @app_.id).try(:first)
         | 
| 17 | 
            -
                  if @config
         | 
| 18 | 
            -
                    # if variable exists, update its value
         | 
| 19 | 
            -
                    @config.update_attributes(value: params["value"])
         | 
| 20 | 
            -
                  else      
         | 
| 21 | 
            -
                    # if it doesn't exist, create record      
         | 
| 22 | 
            -
                    @config = Meroku::Config.new(
         | 
| 23 | 
            -
                      name: params["name"],
         | 
| 24 | 
            -
                      value: params["value"],
         | 
| 25 | 
            -
                      app_id: @app_.id
         | 
| 26 | 
            -
                    )
         | 
| 27 | 
            -
                  end
         | 
| 28 | 
            -
                  respond_to do |format|
         | 
| 29 | 
            -
                    if @config.save
         | 
| 30 | 
            -
                      format.json { render json: {  data: @config  } }
         | 
| 31 | 
            -
                    else
         | 
| 32 | 
            -
                      format.json { render json: { :errors => @config.errors }, status: :unprocessable_entity }
         | 
| 33 | 
            -
                    end
         | 
| 34 | 
            -
                  end
         | 
| 35 | 
            -
                end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                ## PATCH/PUT /keys/1
         | 
| 38 | 
            -
                ## PATCH/PUT /keys/1.json
         | 
| 39 | 
            -
                #def update
         | 
| 40 | 
            -
                #  respond_to do |format|
         | 
| 41 | 
            -
                #    if @key.update(key_params)
         | 
| 42 | 
            -
                #      format.html { redirect_to @key, notice: 'Key was successfully updated.' }
         | 
| 43 | 
            -
                #      format.json { render :show, status: :ok, location: @key }
         | 
| 44 | 
            -
                #    else
         | 
| 45 | 
            -
                #      format.html { render :edit }
         | 
| 46 | 
            -
                #      format.json { render json: @key.errors, status: :unprocessable_entity }
         | 
| 47 | 
            -
                #    end
         | 
| 48 | 
            -
                #  end
         | 
| 49 | 
            -
                #end
         | 
| 50 | 
            -
             | 
| 51 | 
            -
                # DELETE /keys/1
         | 
| 52 | 
            -
                # DELETE /keys/1.json
         | 
| 53 | 
            -
                def destroy
         | 
| 54 | 
            -
                  @config = Meroku::Config.find_by_name(params["name"])
         | 
| 55 | 
            -
                  @config.destroy
         | 
| 56 | 
            -
                  respond_to do |format|
         | 
| 57 | 
            -
                    format.json { render json: {  data: @config  } }
         | 
| 58 | 
            -
                  end
         | 
| 59 | 
            -
                end
         | 
| 60 | 
            -
              
         | 
| 61 | 
            -
              end
         | 
| 62 | 
            -
            end
         | 
    
        data/lib/meroku/core_ext.rb
    DELETED
    
    | @@ -1,30 +0,0 @@ | |
| 1 | 
            -
            class Array
         | 
| 2 | 
            -
              # File activesupport/lib/active_support/core_ext/array/conversions.rb, line 59
         | 
| 3 | 
            -
              def to_sentence(options = {})
         | 
| 4 | 
            -
                options.assert_valid_keys(:words_connector, :two_words_connector, :last_word_connector, :locale)
         | 
| 5 | 
            -
              
         | 
| 6 | 
            -
                default_connectors = {
         | 
| 7 | 
            -
                  :words_connector     => ', ',
         | 
| 8 | 
            -
                  :two_words_connector => ' and ',
         | 
| 9 | 
            -
                  :last_word_connector => ', and '
         | 
| 10 | 
            -
                }
         | 
| 11 | 
            -
                if defined?(I18n)
         | 
| 12 | 
            -
                  i18n_connectors = I18n.translate(:'support.array', locale: options[:locale], default: {})
         | 
| 13 | 
            -
                  default_connectors.merge!(i18n_connectors)
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
                options = default_connectors.merge!(options)
         | 
| 16 | 
            -
              
         | 
| 17 | 
            -
                case length
         | 
| 18 | 
            -
                when 0
         | 
| 19 | 
            -
                  ''
         | 
| 20 | 
            -
                when 1
         | 
| 21 | 
            -
                  self[0].to_s.dup
         | 
| 22 | 
            -
                when 2
         | 
| 23 | 
            -
                  "#{self[0]}#{options[:two_words_connector]}#{self[1]}"
         | 
| 24 | 
            -
                else
         | 
| 25 | 
            -
                  "#{self[0...-1].join(options[:words_connector])}#{options[:last_word_connector]}#{self[-1]}"
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
            end
         | 
| 29 | 
            -
             | 
| 30 | 
            -
              
         | 
    
        data/lib/meroku/domain.rb
    DELETED
    
    
| @@ -1,83 +0,0 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            module Meroku
         | 
| 3 | 
            -
              
         | 
| 4 | 
            -
              class DomainsController < ApplicationController
         | 
| 5 | 
            -
                #before_action :set_domain, only: [:show, :edit, :update, :destroy]
         | 
| 6 | 
            -
                skip_before_action :verify_authenticity_token, only: [:create, :destroy]
         | 
| 7 | 
            -
                before_action :authenticate, only: [ :create, :index, :destroy ]
         | 
| 8 | 
            -
             | 
| 9 | 
            -
                ## GET /keys
         | 
| 10 | 
            -
                ## GET /keys.json
         | 
| 11 | 
            -
                def index
         | 
| 12 | 
            -
                  @domain_names = @app_.domains.pluck(:domain)
         | 
| 13 | 
            -
                  render json: { "data": @domain_names  }
         | 
| 14 | 
            -
                end
         | 
| 15 | 
            -
              
         | 
| 16 | 
            -
                ## GET /keys/1
         | 
| 17 | 
            -
                ## GET /keys/1.json
         | 
| 18 | 
            -
                #def show
         | 
| 19 | 
            -
                #end
         | 
| 20 | 
            -
                #
         | 
| 21 | 
            -
                ## GET /keys/new
         | 
| 22 | 
            -
                #def new
         | 
| 23 | 
            -
                #  @key = Key.new
         | 
| 24 | 
            -
                #end
         | 
| 25 | 
            -
                #
         | 
| 26 | 
            -
                ## GET /keys/1/edit
         | 
| 27 | 
            -
                #def edit
         | 
| 28 | 
            -
                #end
         | 
| 29 | 
            -
                #
         | 
| 30 | 
            -
                # POST /keys
         | 
| 31 | 
            -
                # POST /keys.json
         | 
| 32 | 
            -
                def create
         | 
| 33 | 
            -
                  @domain = Meroku::Domain.new(
         | 
| 34 | 
            -
                    domain: params["domain"],
         | 
| 35 | 
            -
                    app_id: @app_.id
         | 
| 36 | 
            -
                  )
         | 
| 37 | 
            -
                  respond_to do |format|
         | 
| 38 | 
            -
                    if @domain.save
         | 
| 39 | 
            -
                      Meroku::Util.nginx_rebuild()
         | 
| 40 | 
            -
                      format.json { render json: {  data: @domain  } }
         | 
| 41 | 
            -
                    else
         | 
| 42 | 
            -
                      format.json { render json: { :errors => @domain.errors }, status: :unprocessable_entity }
         | 
| 43 | 
            -
                    end
         | 
| 44 | 
            -
                  end
         | 
| 45 | 
            -
                end
         | 
| 46 | 
            -
                #
         | 
| 47 | 
            -
                ## PATCH/PUT /keys/1
         | 
| 48 | 
            -
                ## PATCH/PUT /keys/1.json
         | 
| 49 | 
            -
                #def update
         | 
| 50 | 
            -
                #  respond_to do |format|
         | 
| 51 | 
            -
                #    if @key.update(key_params)
         | 
| 52 | 
            -
                #      format.html { redirect_to @key, notice: 'Key was successfully updated.' }
         | 
| 53 | 
            -
                #      format.json { render :show, status: :ok, location: @key }
         | 
| 54 | 
            -
                #    else
         | 
| 55 | 
            -
                #      format.html { render :edit }
         | 
| 56 | 
            -
                #      format.json { render json: @key.errors, status: :unprocessable_entity }
         | 
| 57 | 
            -
                #    end
         | 
| 58 | 
            -
                #  end
         | 
| 59 | 
            -
                #end
         | 
| 60 | 
            -
             | 
| 61 | 
            -
                # DELETE /keys/1
         | 
| 62 | 
            -
                # DELETE /keys/1.json
         | 
| 63 | 
            -
                def destroy
         | 
| 64 | 
            -
                  @domain = Meroku::Domain.find_by_domain(params["domain"])
         | 
| 65 | 
            -
                  @domain.destroy
         | 
| 66 | 
            -
                  Meroku::Util.nginx_rebuild()
         | 
| 67 | 
            -
                  respond_to do |format|
         | 
| 68 | 
            -
                    format.json { render json: {  data: @domain  } }
         | 
| 69 | 
            -
                  end
         | 
| 70 | 
            -
                end
         | 
| 71 | 
            -
              
         | 
| 72 | 
            -
                private
         | 
| 73 | 
            -
                  ## Use callbacks to share common setup or constraints between actions.
         | 
| 74 | 
            -
                  #def set_key
         | 
| 75 | 
            -
                  #  @key = Key.find(params[:id])
         | 
| 76 | 
            -
                  #end
         | 
| 77 | 
            -
                  #
         | 
| 78 | 
            -
                  ## Never trust parameters from the scary internet, only allow the white list through.
         | 
| 79 | 
            -
                  #def key_params
         | 
| 80 | 
            -
                  #  params.require(:key).permit(:key, :original_filename, :user_id)
         | 
| 81 | 
            -
                  #end
         | 
| 82 | 
            -
              end
         | 
| 83 | 
            -
            end
         | 
    
        data/lib/meroku/error.rb
    DELETED