diff --git a/plugins/build-env/pre-build b/plugins/build-env/pre-build index 716a18224fc..fa14ac60b82 100755 --- a/plugins/build-env/pre-build +++ b/plugins/build-env/pre-build @@ -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 diff --git a/tests.mk b/tests.mk index 25bf763c2f2..a1d7e62b3b7 100644 --- a/tests.mk +++ b/tests.mk @@ -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 diff --git a/tests/apps/ruby/CHECKS b/tests/apps/ruby/CHECKS new file mode 100644 index 00000000000..69236ed6353 --- /dev/null +++ b/tests/apps/ruby/CHECKS @@ -0,0 +1 @@ +/ Hello, world diff --git a/tests/apps/ruby/Gemfile b/tests/apps/ruby/Gemfile new file mode 100644 index 00000000000..ec958e99144 --- /dev/null +++ b/tests/apps/ruby/Gemfile @@ -0,0 +1,5 @@ +source 'https://rubygems.org' +ruby '2.1.5' + +gem 'sinatra', '~>1.4.4' +gem 'thin' diff --git a/tests/apps/ruby/Gemfile.lock b/tests/apps/ruby/Gemfile.lock new file mode 100644 index 00000000000..defa6b57ce7 --- /dev/null +++ b/tests/apps/ruby/Gemfile.lock @@ -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 diff --git a/tests/apps/ruby/Procfile b/tests/apps/ruby/Procfile new file mode 100644 index 00000000000..5c636c6724e --- /dev/null +++ b/tests/apps/ruby/Procfile @@ -0,0 +1 @@ +web: bundle exec ruby web.rb -p $PORT diff --git a/tests/apps/ruby/README.md b/tests/apps/ruby/README.md new file mode 100644 index 00000000000..aaab891d57f --- /dev/null +++ b/tests/apps/ruby/README.md @@ -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) diff --git a/tests/apps/ruby/check_deploy b/tests/apps/ruby/check_deploy new file mode 100755 index 00000000000..4001f55acbf --- /dev/null +++ b/tests/apps/ruby/check_deploy @@ -0,0 +1,2 @@ +#!/usr/bin/env bash +set -e; output="$(curl -s -S "$1")"; echo "$output"; test "$output" == "Hello, world" diff --git a/tests/apps/ruby/web.rb b/tests/apps/ruby/web.rb new file mode 100644 index 00000000000..dbef45691b7 --- /dev/null +++ b/tests/apps/ruby/web.rb @@ -0,0 +1,5 @@ +require 'sinatra' + +get '/' do + "Hello, world" +end \ No newline at end of file