Merge pull request #1026 from progrium/1025_mh-newlines-and-such

ensure we have newlines around our config. closes #1025
This commit is contained in:
Jose Diaz-Gonzalez
2015-03-11 04:24:01 -04:00
9 changed files with 80 additions and 3 deletions

View File

@@ -11,22 +11,24 @@ APP="$1"; IMAGE="dokku/$APP"; BUILD_ENV=""
if [[ -f "$DOKKU_ROOT/ENV" ]]; then
BUILD_ENV+=$(< "$DOKKU_ROOT/ENV")
BUILD_ENV+=$'\n'
fi
if [[ -f "$DOKKU_ROOT/$APP/ENV" ]]; then
BUILD_ENV+=" "
BUILD_ENV+=$'\n'
BUILD_ENV+=$(< "$DOKKU_ROOT/$APP/ENV")
BUILD_ENV+=$'\n'
fi
if [[ ! -z "$BUILD_ENV" ]]; then
dokku_log_info1 "Adding BUILD_ENV to build environment..."
# create build env files for use in buildpacks like this:
# https://github.com/niteoweb/heroku-buildpack-buildout/blob/5879fa3418f7d8e079f1aa5816ba1adde73f4948/bin/compile#L34
id=$(echo $BUILD_ENV |sed 's@export @@g'| docker run -i -a stdin $IMAGE /bin/bash -c "for ENV_VAR in $(cat); do echo \$ENV_VAR |sed 's@^\([^=]*\)=\(.*\)\$@echo \\\"\2\\\" >/tmp/env/\1@g' >>/tmp/set_env.sh; done && mkdir -p /tmp/env && /bin/bash /tmp/set_env.sh")
id=$(echo $BUILD_ENV |sed -e 's@export @@g' -e 's@\\n@ @g' | docker run -i -a stdin $IMAGE /bin/bash -c "for ENV_VAR in $(cat); do echo \$ENV_VAR |sed 's@^\([^=]*\)=\(.*\)\$@echo \\\"\2\\\" >/tmp/env/\1@g' >>/tmp/set_env.sh; done && mkdir -p /tmp/env && /bin/bash /tmp/set_env.sh")
test "$(docker wait $id)" -eq 0
docker commit $id $IMAGE > /dev/null
# create build env for 'old style' buildpacks and dokku plugins
id=$(echo "$BUILD_ENV" | docker run -i -a stdin $IMAGE /bin/bash -c "cat >> /app/.env")
id=$(echo -e "$BUILD_ENV" | docker run -i -a stdin $IMAGE /bin/bash -c "cat >> /app/.env")
test "$(docker wait $id)" -eq 0
docker commit $id $IMAGE > /dev/null
fi

View File

@@ -107,6 +107,10 @@ deploy-test-python-flask:
@echo deploying python-flask app...
cd tests && ./test_deploy ./apps/python-flask dokku.me
deploy-test-ruby:
@echo deploying ruby app...
cd tests && ./test_deploy ./apps/ruby dokku.me
deploy-test-scala:
@echo deploying scala app...
cd tests && ./test_deploy ./apps/scala dokku.me

1
tests/apps/ruby/CHECKS Normal file
View File

@@ -0,0 +1 @@
/ Hello, world

5
tests/apps/ruby/Gemfile Normal file
View File

@@ -0,0 +1,5 @@
source 'https://rubygems.org'
ruby '2.1.5'
gem 'sinatra', '~>1.4.4'
gem 'thin'

View File

@@ -0,0 +1,24 @@
GEM
remote: https://rubygems.org/
specs:
daemons (1.1.9)
eventmachine (1.0.3)
rack (1.5.2)
rack-protection (1.5.2)
rack
sinatra (1.4.4)
rack (~> 1.4)
rack-protection (~> 1.4)
tilt (~> 1.3, >= 1.3.4)
thin (1.6.1)
daemons (>= 1.0.9)
eventmachine (>= 1.0.0)
rack (>= 1.0.0)
tilt (1.4.1)
PLATFORMS
ruby
DEPENDENCIES
sinatra (~> 1.4.4)
thin

1
tests/apps/ruby/Procfile Normal file
View File

@@ -0,0 +1 @@
web: bundle exec ruby web.rb -p $PORT

33
tests/apps/ruby/README.md Normal file
View File

@@ -0,0 +1,33 @@
# ruby-sample
This is a barebones Ruby app using the [Sinatra](http://www.sinatrarb.com) framework.
## Running Locally
Asumming you have [Ruby](https://www.ruby-lang.org), [Bundler](http://bundler.io) and [Heroku Toolbelt](https://toolbelt.heroku.com) installed on your machine:
```sh
git clone git@github.com:heroku/ruby-sample.git # or clone your own fork
cd ruby-sample
bundle
foreman start
```
Your app should now be running on [localhost:5000](http://localhost:5000/).
## Deploying to Heroku
```
heroku create
git push heroku master
heroku open
```
## Documentation
For more information about using Ruby on Heroku, see these Dev Center articles:
- [Ruby on Heroku](https://devcenter.heroku.com/categories/ruby)
- [Getting Started with Ruby on Heroku](https://devcenter.heroku.com/articles/getting-started-with-ruby)
- [Getting Started with Rails 4.x on Heroku](https://devcenter.heroku.com/articles/getting-started-with-rails4)
- [Heroku Ruby Support](https://devcenter.heroku.com/articles/ruby-support)

2
tests/apps/ruby/check_deploy Executable file
View File

@@ -0,0 +1,2 @@
#!/usr/bin/env bash
set -e; output="$(curl -s -S "$1")"; echo "$output"; test "$output" == "Hello, world"

5
tests/apps/ruby/web.rb Normal file
View File

@@ -0,0 +1,5 @@
require 'sinatra'
get '/' do
"Hello, world"
end