Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.idea
1 change: 1 addition & 0 deletions bosh/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bosh-package-ruby-release/
1 change: 1 addition & 0 deletions bosh/.ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.7.3
5 changes: 5 additions & 0 deletions bosh/ruby-app-release/.dev_builds/jobs/rubyweb/index.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
builds:
31885bc078fcd490dceb62b32b600b46c5214bdec9bcf01d3189d8320ee96f37:
version: 31885bc078fcd490dceb62b32b600b46c5214bdec9bcf01d3189d8320ee96f37
sha1: sha256:7576432bf066a1ea45a10a53946c88c59e185d7c87744aa6f2178b15e475ee73
format-version: "2"
5 changes: 5 additions & 0 deletions bosh/ruby-app-release/.dev_builds/packages/rubyweb/index.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
builds:
c83678f978ddcb920e2c265d4c9f4f9044c79e75331b059074dda75d0a82c9a6:
version: c83678f978ddcb920e2c265d4c9f4f9044c79e75331b059074dda75d0a82c9a6
sha1: sha256:fa9f72f6b61e9e1bba2ba8cd65fff924403a5a3427a82075c842d0ebcdb4e571
format-version: "2"
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
builds:
53dc8fec45e346855f164fe15d17f17cf2af29fb6ec3a435b2fc23f103bfb0aa:
version: 53dc8fec45e346855f164fe15d17f17cf2af29fb6ec3a435b2fc23f103bfb0aa
blobstore_id: c7522d70-a759-477a-5651-de65bc9e0f00
sha1: sha256:96b39f7e8a27bfdfd5668d0b9340894f69ef223f3f7d4631179e81042f62b589
65be1e4d2f3bf2f828a861cd17b220492ad5c6680e1a3a320cf1179ed20b8609:
version: 65be1e4d2f3bf2f828a861cd17b220492ad5c6680e1a3a320cf1179ed20b8609
blobstore_id: 01018e54-715b-44f2-4173-be949907b2b9
Expand Down
1 change: 1 addition & 0 deletions bosh/ruby-app-release/config/final.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ blobstore:
provider: local
options:
blobstore_path: /tmp/ruby-app-release-blobs
name: anynines
23 changes: 23 additions & 0 deletions bosh/ruby-app-release/dev_releases/anynines/anynines-0+dev.1.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: anynines
version: 0+dev.1
commit_hash: 4cd8397
uncommitted_changes: true
jobs:
- name: rubyweb
version: 31885bc078fcd490dceb62b32b600b46c5214bdec9bcf01d3189d8320ee96f37
fingerprint: 31885bc078fcd490dceb62b32b600b46c5214bdec9bcf01d3189d8320ee96f37
sha1: sha256:7576432bf066a1ea45a10a53946c88c59e185d7c87744aa6f2178b15e475ee73
packages:
- ruby-2.7
packages:
- name: ruby-2.7
version: 53dc8fec45e346855f164fe15d17f17cf2af29fb6ec3a435b2fc23f103bfb0aa
fingerprint: 53dc8fec45e346855f164fe15d17f17cf2af29fb6ec3a435b2fc23f103bfb0aa
sha1: sha256:96b39f7e8a27bfdfd5668d0b9340894f69ef223f3f7d4631179e81042f62b589
dependencies: []
- name: rubyweb
version: c83678f978ddcb920e2c265d4c9f4f9044c79e75331b059074dda75d0a82c9a6
fingerprint: c83678f978ddcb920e2c265d4c9f4f9044c79e75331b059074dda75d0a82c9a6
sha1: sha256:fa9f72f6b61e9e1bba2ba8cd65fff924403a5a3427a82075c842d0ebcdb4e571
dependencies:
- ruby-2.7
4 changes: 4 additions & 0 deletions bosh/ruby-app-release/dev_releases/anynines/index.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
builds:
9b821ef4-2111-4514-6622-441262e331f4:
version: 0+dev.1
format-version: "2"
6 changes: 3 additions & 3 deletions bosh/ruby-app-release/jobs/rubyweb/spec
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
name: rubyweb

templates:
ctl.ebr: tmp/ctl
config.ebr: tmp/config.yml
ctl.erb: bin/ctl
config.erb: cfg/config.yml

packages:
- ruby
- ruby-2.7

properties:
port:
Expand Down
10 changes: 5 additions & 5 deletions bosh/ruby-app-release/jobs/rubyweb/templates/config.erb
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
-
---

port = <%=
port: <%=

port = p("port")

if port < 1024 or port > 4000
if port < 8000
raise "Invalid port number"
end

if (port.eql? 8080) || (port.eql? 8081)
if ! (port.eql? 8080) || (port.eql? 8081)
raise "Wrong port number"
end

port
%>
%>
27 changes: 20 additions & 7 deletions bosh/ruby-app-release/jobs/rubyweb/templates/ctl.erb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#!/bin/bash

set -e -x

RUN_DIR=/var/vcap/sys/run/rubyweb
Expand All @@ -16,21 +18,32 @@ case $1 in

source /var/vcap/packages/ruby-2.7/bosh/runtime.env

<%=

<%=
start_file = p('bootstrap')
if not start_file.empty?
if start_file.empty?
raise 'No bootstrap file provided'
end

if ! start_file.eql? "app.rb"
raise 'Wrong bootstrap file provided'
end
%>
bundle exec ruby <%= start_file unless start_file.eql? "app.rb" %> \
bundle exec ruby <%= start_file %> \
>> $LOG_DIR/rubyweb.stdout.log \
2>> $LOG_DIR/rubyweb.stderr.log
;;

stop)
if [ ! -f "$PIDFILE" ] || ! kill -0 `cat "$PIDFILE"`; then
echo 'Service not running' >&2
return 1
fi
echo "Stopping service..." >&2
kill -9 `cat $PIDFILE`
echo "Service stopped" >&2
;;

*)
echo "Usage: ctl {start|stop}"
;;

esac

esac
2 changes: 1 addition & 1 deletion bosh/ruby-app-release/packages/ruby-2.7/spec.lock
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
name: ruby-2.7
fingerprint: 65be1e4d2f3bf2f828a861cd17b220492ad5c6680e1a3a320cf1179ed20b8609
fingerprint: 53dc8fec45e346855f164fe15d17f17cf2af29fb6ec3a435b2fc23f103bfb0aa
2 changes: 1 addition & 1 deletion bosh/ruby-app-release/packages/rubyweb/spec
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ files:
- ruby-web-app/**/*

dependencies:
- ruby-2.3.2
- ruby-2.7
2 changes: 1 addition & 1 deletion bosh/ruby-app-release/src/ruby-web-app/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
# config = YAML.load_file('/var/vcap/jobs/rubyweb/cfg/config.yml')

set :bind, '0.0.0.0'
set :port, 8181
set :port, 8080

class Item
attr_reader :name, :type
Expand Down
2 changes: 2 additions & 0 deletions bosh/ruby-app-release/unit-tests/.bundle/config
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
BUNDLE_WITH: "development"
17 changes: 17 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
version: '3.1'
services :
db:
image: postgres:10-alpine
ports:
- "5432:5432"
environment:
POSTGRES_USER: applicant
POSTGRES_PASSWORD: temp123
POSTGRES_DB: blog_db
admin:
image: adminer
restart: always
depends_on:
- db
ports:
- 8080:8080
2 changes: 2 additions & 0 deletions ruby/Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,5 @@ gem 'dotenv', '~> 2.8'
gem 'pg', '~> 1.4'
gem 'webrick', '~> 1.7'
gem "activerecord", "~> 7.0"
gem "minitest", "~> 5.0"
gem "minitest-reporters"
36 changes: 20 additions & 16 deletions ruby/app/controllers/articles.rb
Original file line number Diff line number Diff line change
@@ -1,55 +1,59 @@
class ArticleController
def create_article(article)
article_not_exists = ! (Article.where(:title => article['title']).empty?)
article_not_exists = Article.where(:title => article['title']).empty?

return { ok: false, msg: 'Article with given title already exists' } unless article_not_exists

new_article = Article.new(:title => article['title'], :content => article['content'], :created_at => Time.now)
new_article.save

{ ok: false, obj: article }
{ ok: true, obj: article }
rescue StandardError
{ ok: false }
end

def update_article(id, new_data)

article = Article.where(id: id).first

return { ok: false, msg: 'Article could not be found' } unless article.nil?
return { ok: false, msg: 'Article could not be found' } if article.nil?

article.title = new_data['title']
article.content = new_data['content']
article.save_changes
article.save

{ ok: true }
{ ok: true, obj: article }
rescue StandardError
{ ok: false }
end

def get_article(id)
res = Article.where(:id => id)
res = Article.where(id: id).first

if res.empty?
{ ok: true, data: res }
else
{ ok: false, msg: 'Article not found' }
end
return { ok: false, msg: 'Article not found' } if res.nil?
{ ok: true, data: res }
rescue StandardError
{ ok: false }
end

def delete_article(_id)
delete_count = Article.delete(:id => id)
def delete_article(id)
delete_count = Article.delete(id)

if delete_count == 0
{ ok: true }
{ ok: false }
else
{ ok: true, delete_count: delete_count }
end
end

def get_batch

res = Article.all

if res.empty?
{ ok: false, msg: 'No articles found' }
else
{ ok: true, data: res }
end
rescue StandardError
{ ok: false }
end
end
23 changes: 15 additions & 8 deletions ruby/app/routes/articles.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,47 +13,54 @@ def initialize
end

get('/') do
summmary = @articleCtrl.get_batch
summary = @articleCtrl.get_batch

if !(summary[:ok])
if summary[:ok]
{ articles: summary[:data] }.to_json
else
{ msg: 'Could not get articles.' }.to_json
end
end

get('/:id') do

article = @articleCtrl.get_article(params['id'])

if article[:ok]
{ article: article[:data] }.to_json
else
{ msg: 'Could not get articles.' }.to_json
end
end

post('/') do
payload = JSON.parse(request.body.read)
summary = @articleCtrl.update_article(payload)
summary = @articleCtrl.create_article(payload)

if summary[:ok]
{ msg: 'Article updated' }.to_json
{ msg: 'Article created' }.to_json
else
{ msg: summary[:msg] }.to_json
end
end

put('/:id') do
payload = JSON.parse(request.body.read)
summary = @articleCtrl.uptade_article params['ids'], payload
summary = @articleCtrl.update_article params['id'], payload

if summary[:ok]
{ msg: 'Article updated' }.to_json
else
{ msg: summary[:msg] }.to_json
end
end

delete('/:id') do
summary = self.delete_article params['id']
summary = @articleCtrl.delete_article params['id']

if summary[:ok]
{ msg: 'Article deleted' }.to_json
else
{ mgs: 'Article does not exist' }.to_bson
{ msg: 'Article does not exist' }.to_json
end
end
end
3 changes: 2 additions & 1 deletion ruby/app/routes/health.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
class HealthRoutes < Sinatra::Base

use AuthMiddleware

get('/') do
if request.env['AUTHED'] == true
'App working OK'
Expand Down