Extended sub-uri support.
Adds new routing in routes.rb based on pod_uri. Assets are handled by a symlink in public when using sub-uri. Various clean-up, removing thin and socket port settings from server.sh (these are now taken from pod_uri and socket_port). Basic functionality when setting a sub_uri like http://example.org/diaspora now seems OK. Closes .http://joindiaspora.com/issues/737, and partially http://joindiaspora.com/issues/391. Ports are yet to be defined and handled in this context. Conflicts: app/views/layouts/application.html.haml config/routes.rb
This commit is contained in:
parent
42c602df2f
commit
9cd08bac67
9 changed files with 117 additions and 90 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@
|
|||
%li= link_to '@joindiaspora', "http://twitter.com/joindiaspora"
|
||||
%li= link_to 'github', "https://github.com/diaspora/diaspora"
|
||||
%li= link_to t('layouts.header.blog'), "http://blog.joindiaspora.com"
|
||||
%li= link_to t('layouts.header.code'), "#{root_url}source.tar.gz"
|
||||
%li= link_to t('layouts.header.code'), "#{root_url}/source.tar.gz"
|
||||
%li= link_to t('.whats_new'), 'https://github.com/diaspora/diaspora/wiki/Changelog'
|
||||
|
||||
-if !@landing_page && request.url.match(/joindiaspora.com/)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
default:
|
||||
|
||||
# Hostname of this host, as seen from the internet.
|
||||
# Url of this host, as seen from the internet.
|
||||
pod_url: "http://localhost:3000"
|
||||
|
||||
# Set this to true in order to close signups. Users will still be
|
||||
|
|
|
|||
|
|
@ -27,3 +27,5 @@ end
|
|||
# Initialize the rails application
|
||||
Diaspora::Application.initialize!
|
||||
|
||||
# Valid as long as thin serves the assets.
|
||||
ActionController::Base.asset_host = APP_CONFIG[ :pod_url]
|
||||
|
|
|
|||
|
|
@ -8,7 +8,10 @@
|
|||
# Specific items
|
||||
# * pod_url: As in app_config.yml, normalized with a trailing /.
|
||||
# * pod_uri: An uri object derived from pod_url.
|
||||
|
||||
#
|
||||
if defined? APP_CONFIG
|
||||
false
|
||||
else
|
||||
require 'uri'
|
||||
|
||||
def load_config_yaml filename
|
||||
|
|
@ -36,7 +39,9 @@ rescue
|
|||
end
|
||||
|
||||
APP_CONFIG[:pod_url] = APP_CONFIG[:pod_uri].normalize.to_s
|
||||
APP_CONFIG[:pod_url].chomp!("/"); APP_CONFIG[:pod_url]+= '/'
|
||||
|
||||
if APP_CONFIG[:pod_uri].host == "example.org" && Rails.env != "test"
|
||||
puts "WARNING: Please modify your app_config.yml to have a proper pod_url!"
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
# the COPYRIGHT file.
|
||||
|
||||
Diaspora::Application.routes.draw do
|
||||
scope APP_CONFIG[:pod_uri].path || '' do
|
||||
|
||||
resources :status_messages, :only => [:create, :destroy, :show]
|
||||
resources :comments, :only => [:create]
|
||||
resources :requests, :only => [:destroy, :create]
|
||||
|
|
@ -11,8 +13,6 @@ Diaspora::Application.routes.draw do
|
|||
resources :notifications
|
||||
resources :posts, :only => [:show], :path => '/p/'
|
||||
|
||||
|
||||
|
||||
match '/people/share_with' => 'people#share_with', :as => 'share_with'
|
||||
resources :people do
|
||||
resources :status_messages
|
||||
|
|
@ -47,10 +47,11 @@ Diaspora::Application.routes.draw do
|
|||
#public routes
|
||||
match 'webfinger', :to => 'publics#webfinger'
|
||||
match 'hcard/users/:id', :to => 'publics#hcard'
|
||||
match '.well-known/host-meta',:to => 'publics#host_meta'
|
||||
match 'receive/users/:id', :to => 'publics#receive'
|
||||
match 'hub', :to => 'publics#hub'
|
||||
|
||||
#root
|
||||
root :to => 'home#show'
|
||||
end
|
||||
match '.well-known/host-meta',:to => 'publics#host_meta'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,16 +1,14 @@
|
|||
#
|
||||
# Included by script/server
|
||||
#
|
||||
THIN_PORT=3000
|
||||
SOCKET_PORT=8080
|
||||
|
||||
# Choose one mode by uncommenting
|
||||
export RAILS_ENV='development'
|
||||
#export RAILS_ENV='production'
|
||||
#export RAILS_ENV='test'
|
||||
|
||||
# See thin -h for possible values.
|
||||
DEFAULT_THIN_ARGS="-p $THIN_PORT -e $RAILS_ENV"
|
||||
# See thin -h for possible values. script/server sets -p <port>.
|
||||
DEFAULT_THIN_ARGS="-e $RAILS_ENV"
|
||||
|
||||
# Set to 'no' to disable server dry-run at first start
|
||||
# creating generated files in public/ folder.
|
||||
|
|
|
|||
23
script/get_env.sh
Executable file
23
script/get_env.sh
Executable file
|
|
@ -0,0 +1,23 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Get value from APP_CONFIG
|
||||
#
|
||||
# Usage get_env [key ...]
|
||||
|
||||
path=$( readlink -fn $0) && cd $(dirname $path)/.. || exit 2
|
||||
|
||||
if [[ ! -e tmp/environment || tmp/environment -ot config/app_config.yml ]]
|
||||
then
|
||||
ruby > tmp/environment << 'EOT'
|
||||
require File.join('config', 'environment.rb')
|
||||
APP_CONFIG.each { |key, value| puts key.to_s + "\t" + value.to_s }
|
||||
puts "pod_uri.host\t" + APP_CONFIG[:pod_uri].host.to_s
|
||||
puts "pod_uri.path\t" + APP_CONFIG[:pod_uri].path.to_s
|
||||
puts "pod_uri.port\t" + APP_CONFIG[:pod_uri].port.to_s
|
||||
EOT
|
||||
fi
|
||||
|
||||
for key in $@; do
|
||||
awk -v key=$key '{ if ($1 == key ) print $2 }' < tmp/environment
|
||||
done
|
||||
|
||||
|
|
@ -12,12 +12,17 @@ OS=`uname -s`
|
|||
function init_public
|
||||
# Create all dynamically generated files in public/ folder
|
||||
{
|
||||
sub_uri=$(./script/get_env.sh pod_uri.path)
|
||||
if [ -n "$sub_uri" ]; then
|
||||
cd public; ln -sf . ${sub_uri##/}; cd ..
|
||||
fi
|
||||
bundle exec thin \
|
||||
-d --pid log/thin.pid --address localhost --port $THIN_PORT \
|
||||
start
|
||||
pod_url=$(./script/get_env.sh pod_url)
|
||||
for ((i = 0; i < 30; i += 1)) do
|
||||
sleep 2
|
||||
wget -q -O tmp/server.html http://localhost:$THIN_PORT && \
|
||||
wget -q -O tmp/server.html "$pod_url" && \
|
||||
rm tmp/server.html && break
|
||||
done
|
||||
bundle exec thin --pid log/thin.pid stop
|
||||
|
|
@ -75,14 +80,8 @@ function redis_config
|
|||
config/redis.conf
|
||||
}
|
||||
|
||||
# Scan for -p, find out what port thin is about to use.
|
||||
args="$DEFAULT_THIN_ARGS $@"
|
||||
prev_arg=''
|
||||
for arg in $( echo $args | awk '{ for (i = 1; i <= NF; i++) print $i}')
|
||||
do
|
||||
[ "$prev_arg" = '-p' ] && THIN_PORT="$arg"
|
||||
prev_arg="$arg"
|
||||
done
|
||||
THIN_PORT=$(./script/get_env.sh 'pod_uri.port')
|
||||
SOCKET_PORT=$(./script/get_env.sh 'socket_port')
|
||||
|
||||
# Is someone listening on the ports already? (ipv4 only test ?)
|
||||
services=$( chk_service $THIN_PORT )
|
||||
|
|
@ -107,8 +106,6 @@ if [ -n "$services" ]; then
|
|||
exit 64
|
||||
fi
|
||||
|
||||
|
||||
|
||||
# Check if Mongo is running
|
||||
if ! ps ax | grep -v grep | grep mongod >/dev/null
|
||||
then
|
||||
|
|
@ -145,4 +142,4 @@ mkdir -p -v log/thin/
|
|||
bundle exec ruby ./script/websocket_server.rb&
|
||||
redis-server config/redis.conf &>log/redis-console.log &
|
||||
QUEUE=* bundle exec rake resque:work&
|
||||
bundle exec thin start $args
|
||||
bundle exec thin start -p $THIN_PORT $@
|
||||
|
|
|
|||
Loading…
Reference in a new issue