From e01fb62eeb5ee84200ba93dd7cc543c0d25d2dc4 Mon Sep 17 00:00:00 2001 From: Alec Leamas <leamas.alec@gmail.com> Date: Sun, 9 Jan 2011 23:31:55 +0100 Subject: [PATCH] Expose and refer to assets on the sub_uri. When using sub-uri, create a symlink in public/ making the assets available at the sub-uri. Modify environment.rb so that asset paths refers to this sub-uri path. Closes http://bugs.joindiaspora.com/issues/391 and http://bugs.joindiaspora.com/issues/737 when application mounted on suburi (i. e., prev patch) --- .gitignore | 1 + config/environment.rb | 9 +++++++++ features/uri-tests/uri.feature | 2 +- script/get_env.sh | 26 ++++++++++++++++++++++++++ script/server | 17 +++++++++++++---- 5 files changed, 50 insertions(+), 5 deletions(-) create mode 100755 script/get_env.sh diff --git a/.gitignore b/.gitignore index 5e28dee549..4524de687e 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ public/stylesheets/application.css public/stylesheets/sessions.css public/stylesheets/ui.css public/stylesheets/mobile.css +public/diaspora spec/fixtures/users.yaml # Uploded files and local files diff --git a/config/environment.rb b/config/environment.rb index 90e8193e70..3d38e24c73 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -26,3 +26,12 @@ end # Initialize the rails application Diaspora::Application.initialize! + +# Presume the assets are exposed on the sub_uri. +if AppConfig[ :pod_uri].path != "/" + ActionController::Base.asset_host = + Proc.new{ |source, request| + request.scheme + "://" + + request.host_with_port + AppConfig[:pod_uri].path + } +end diff --git a/features/uri-tests/uri.feature b/features/uri-tests/uri.feature index 124dc821a0..e78e9b8131 100644 --- a/features/uri-tests/uri.feature +++ b/features/uri-tests/uri.feature @@ -12,7 +12,7 @@ Feature: Flexible uri deployment Scenario: Present application to user Given configuration parameter pod_url is http://localhost:3000/diaspora When I visit url http://localhost:3000/diaspora - And I retrieve http://localhost:3000/diaspora into tmp/index.html + And I retrieve http://localhost:3000/diaspora/ into tmp/index.html Then I should see "put something in" And a page-asset should be http://localhost:3000/diaspora/stylesheets/ui.css And I should match 'http://localhost:3000/diaspora/stylesheets/blueprint/print.css.[0-9]+"' in tmp/index.html diff --git a/script/get_env.sh b/script/get_env.sh new file mode 100755 index 0000000000..83c4e0e4a8 --- /dev/null +++ b/script/get_env.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# +# Get value from AppConfig +# +# Usage get_env [key ...] + +path=$( readlink -fn $0) && cd $(dirname $path)/.. || exit 2 + +size=0 +size=$( wc tmp/environment 2>/dev/null | awk '{print $1}') || : +if [[ "$size" = "0" || tmp/environment -ot config/app_config.yml ]] +then + ruby > tmp/environment << 'EOT' + require File.join('config', 'environment.rb') + AppConfig.config_vars.each { |key, value| + puts key.to_s + "\t" + value.to_s + } + puts "pod_uri.host\t" + AppConfig[:pod_uri].host.to_s + puts "pod_uri.path\t" + AppConfig[:pod_uri].path.to_s + puts "pod_uri.port\t" + AppConfig[:pod_uri].port.to_s +EOT +fi + +for key in $@; do + awk -v key=$key '{ if ($1 == key ) print $2 }' < tmp/environment +done diff --git a/script/server b/script/server index b20e0d59c2..5fea4a2cf4 100755 --- a/script/server +++ b/script/server @@ -9,12 +9,22 @@ OS=`uname -s` [ -e config/server.sh ] && source config/server.sh +function init_suburi_assets +# fix a symlink corresponding to sub-uri +{ + find public -maxdepth 1 -type l -delete + sub_uri=$(./script/get_env.sh pod_uri.path) + if [ -n "$sub_uri" -a "$sub_uri" != "/" ]; then + cd public; ln -sf . ${sub_uri##/}; cd .. + fi +} + function init_public # Create all dynamically generated files in public/ folder { bundle exec thin \ - -d --pid log/thin.pid --address localhost --port $THIN_PORT \ - start + -d --pid log/thin.pid --address localhost --port $THIN_PORT \ + start for ((i = 0; i < 30; i += 1)) do sleep 2 wget -q -O tmp/server.html http://localhost:$THIN_PORT && \ @@ -107,8 +117,6 @@ if [ -n "$services" ]; then exit 64 fi - - # Check if Mongo is running if ! ps ax | grep -v grep | grep mongod >/dev/null then @@ -140,6 +148,7 @@ if [ ! -e 'public/stylesheets/application.css' ]; then exit 66 fi +[ -w public ] && init_suburi_assets mkdir -p -v log/thin/ bundle exec ruby ./script/websocket_server.rb& -- GitLab