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)
This commit is contained in:
parent
18827b40d1
commit
e01fb62eeb
5 changed files with 50 additions and 5 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -18,6 +18,7 @@ public/stylesheets/application.css
|
||||||
public/stylesheets/sessions.css
|
public/stylesheets/sessions.css
|
||||||
public/stylesheets/ui.css
|
public/stylesheets/ui.css
|
||||||
public/stylesheets/mobile.css
|
public/stylesheets/mobile.css
|
||||||
|
public/diaspora
|
||||||
spec/fixtures/users.yaml
|
spec/fixtures/users.yaml
|
||||||
|
|
||||||
# Uploded files and local files
|
# Uploded files and local files
|
||||||
|
|
|
||||||
|
|
@ -26,3 +26,12 @@ end
|
||||||
|
|
||||||
# Initialize the rails application
|
# Initialize the rails application
|
||||||
Diaspora::Application.initialize!
|
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
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ Feature: Flexible uri deployment
|
||||||
Scenario: Present application to user
|
Scenario: Present application to user
|
||||||
Given configuration parameter pod_url is http://localhost:3000/diaspora
|
Given configuration parameter pod_url is http://localhost:3000/diaspora
|
||||||
When I visit url 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"
|
Then I should see "put something in"
|
||||||
And a page-asset should be http://localhost:3000/diaspora/stylesheets/ui.css
|
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
|
And I should match 'http://localhost:3000/diaspora/stylesheets/blueprint/print.css.[0-9]+"' in tmp/index.html
|
||||||
|
|
|
||||||
26
script/get_env.sh
Executable file
26
script/get_env.sh
Executable file
|
|
@ -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
|
||||||
|
|
@ -9,12 +9,22 @@ OS=`uname -s`
|
||||||
|
|
||||||
[ -e config/server.sh ] && source config/server.sh
|
[ -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
|
function init_public
|
||||||
# Create all dynamically generated files in public/ folder
|
# Create all dynamically generated files in public/ folder
|
||||||
{
|
{
|
||||||
bundle exec thin \
|
bundle exec thin \
|
||||||
-d --pid log/thin.pid --address localhost --port $THIN_PORT \
|
-d --pid log/thin.pid --address localhost --port $THIN_PORT \
|
||||||
start
|
start
|
||||||
for ((i = 0; i < 30; i += 1)) do
|
for ((i = 0; i < 30; i += 1)) do
|
||||||
sleep 2
|
sleep 2
|
||||||
wget -q -O tmp/server.html http://localhost:$THIN_PORT && \
|
wget -q -O tmp/server.html http://localhost:$THIN_PORT && \
|
||||||
|
|
@ -107,8 +117,6 @@ if [ -n "$services" ]; then
|
||||||
exit 64
|
exit 64
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Check if Mongo is running
|
# Check if Mongo is running
|
||||||
if ! ps ax | grep -v grep | grep mongod >/dev/null
|
if ! ps ax | grep -v grep | grep mongod >/dev/null
|
||||||
then
|
then
|
||||||
|
|
@ -140,6 +148,7 @@ if [ ! -e 'public/stylesheets/application.css' ]; then
|
||||||
exit 66
|
exit 66
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ -w public ] && init_suburi_assets
|
||||||
|
|
||||||
mkdir -p -v log/thin/
|
mkdir -p -v log/thin/
|
||||||
bundle exec ruby ./script/websocket_server.rb&
|
bundle exec ruby ./script/websocket_server.rb&
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue