Merge branch 'master' into 1.7_branch

* master:
  Corrected the information about setting up the doc/manual submodule.
  Added an example of capistrano deployment recipes for deploying to a remote web host running Phusion Passenger (aka mod_rails), which is probably the easiest Rails deployment environment to configure.
  Update footer links for new website location
  Change mobile login form to post to proper URL for OpenID login. Resolves #810.
  Fix failing specs
  Don't re-generate remember token if we already have one. This should allow you to stay logged in on two devices at the same time. Closes #812.
This commit is contained in:
bsag 2009-01-05 18:52:09 +00:00
commit 3d6789ceb9
10 changed files with 145 additions and 6 deletions

1
.gitignore vendored
View file

@ -1,6 +1,7 @@
*.tmproj
config/database.yml
config/environment.rb
config/deploy.rb
log
tmp
db/data.yml

2
Capfile Normal file
View file

@ -0,0 +1,2 @@
load 'deploy' if respond_to?(:namespace) # cap2 differentiator
load 'config/deploy'

2
README
View file

@ -14,7 +14,7 @@
All the documentation for Tracks can be found within the /doc directory. It contains a manual in HTML (manual.html) or PDF format (manual.pdf), and this includes full instructions for both new installations and upgrades from older installations of Tracks. The instructions might appear long and intimidatingly complex, but that is mostly because of the number of different platforms supported, and the different configurations which can be used (e.g. running Tracks on your local computer or on a remote server). If you choose the appropriate section for your situation (installation vs. upgrade), and use the easiest (recommended) method, you should find the instructions easy to follow. If you encounter problems, try searching the wiki, forum or mailing list (URLs above), and ask a question if you cannot find a solution to your problem.
If you checked out Tracks from the GitHub repository, the manual is not provided by default and is in its own git submodule. To checkout the manual's source files, type "git submodule update --init doc/manual". From then on, you should be able to issue the command "git pull" in the doc/manual directory to update the manual with the latest changes.
If you checked out Tracks from the GitHub repository, the manual is not provided by default and is in its own git submodule. To checkout the manual's source files, type "git submodule init doc/manual & git submodule update doc/manual". From then on, you should be able to issue the command "git pull" in the doc/manual directory to update the manual with the latest changes.
For those upgrading, change notes are available in /doc/CHANGELOG. If you are thinking about contributing towards the development of Tracks, please read /doc/README_DEVELOPERS for general information, or /doc/tracks_api_wrapper.rb for information on Tracks' API.

View file

@ -202,7 +202,7 @@ class User < ActiveRecord::Base
# These create and unset the fields required for remembering users between browser closes
def remember_me
self.remember_token_expires_at = 2.weeks.from_now.utc
self.remember_token = self.class.sha1("#{login}--#{remember_token_expires_at}")
self.remember_token ||= self.class.sha1("#{login}--#{remember_token_expires_at}")
save(false)
end

View file

@ -39,7 +39,7 @@
<h4>...or login with an Open ID:</h4>
<div id="openid_auth_form">
<% form_tag formatted_open_id_begin_path(:format => 'm') do %>
<% form_tag formatted_login_path(:format => 'm') do %>
<table>
<tr>
<td width="100px"><label for="openid_url">Identity URL:</label></td>

View file

@ -1,3 +1,3 @@
<div id="footer">
<p>Send feedback on <%= TRACKS_VERSION %>: <a href="http://dev.rousette.org.uk/report/6">Trac</a> | <a href="http://www.rousette.org.uk/projects/forums/">Forum</a> | <a href="http://www.rousette.org.uk/projects/wiki/index">Wiki</a> | <a href="mailto:butshesagirl@rousette.org.uk?subject=Tracks feedback">Email</a> | <a href="http://www.rousette.org.uk/projects/">Website</a> | <a href="http://www.rousette.org.uk/projects/tracks/contribute">Contribute</a></p>
<p>Send feedback on <%= TRACKS_VERSION %>: <a href="http://www.assembla.com/spaces/tracks-tickets/tickets">Bugs</a> | <a href="http://www.getontracks.org/forums/">Forum</a> | <a href="http://www.getontracks.org/wiki/">Wiki</a> | <a href="mailto:butshesagirl@rousette.org.uk?subject=Tracks feedback">Email</a> | <a href="http://www.getontracks.org/">Website</a> | <a href="http://www.getontracks.org/development/">Contribute</a></p>
</div>

101
config/deploy.rb-example Normal file
View file

@ -0,0 +1,101 @@
#############################################################
# This file is designed as a starting point to use
# capistrano to deploy the trunk of tracks to a webhost
# where it is served using Phusion Passenger. For more
# info on getting started with Passenger, see
# http://www.modrails.com/
#############################################################
#############################################################
# Application
#############################################################
set :application, "tracks"
set :deploy_to, "/var/www/apps/tracks"
#############################################################
# Settings
#############################################################
default_run_options[:pty] = true
ssh_options[:forward_agent] = true
set :use_sudo, true
set :scm_verbose, true
set :rails_env, "production"
#############################################################
# Servers
#############################################################
#set :user, "your_login_name_on_your_webhost_if_different_from_local"
set :domain, "tracks.yoursite.com"
server domain, :app, :web
role :db, domain, :primary => true
#############################################################
# Git
#############################################################
set :scm, :git
set :branch, "master"
set :repository, "git://github.com/bsag/tracks.git"
set :deploy_via, :remote_cache
#############################################################
# Passenger
#############################################################
namespace :deploy do
desc "Symlink config files"
task :before_symlink do
run "rm #{release_path}/public/.htaccess" #not compatible with Passenger
run "ln -s #{shared_path}/config/database.yml #{release_path}/config/database.yml"
run "ln -s #{shared_path}/config/environment.rb #{release_path}/config/environment.rb"
end
# Restart passenger on deploy
desc "Restarting mod_rails with restart.txt"
task :restart, :roles => :app, :except => { :no_release => true } do
run "touch #{current_path}/tmp/restart.txt"
end
[:start, :stop].each do |t|
desc "#{t} task is a no-op with mod_rails"
task t, :roles => :app do ; end
end
end
namespace :db do
desc 'Dumps the production database to db/production_data.sql on the remote server'
task :remote_db_dump, :roles => :db, :only => { :primary => true } do
run "cd #{deploy_to}/#{current_dir} && " +
"rake RAILS_ENV=#{rails_env} db:dump_sql --trace"
end
desc 'Downloads db/production_data.sql from the remote production environment to your local machine'
task :remote_db_download, :roles => :db, :only => { :primary => true } do
execute_on_servers(options) do |servers|
self.sessions[servers.first].sftp.connect do |tsftp|
tsftp.download!("#{deploy_to}/#{current_dir}/db/production_data.sql", "db/production_data.sql")
end
end
end
desc 'Cleans up data dump file'
task :remote_db_cleanup, :roles => :db, :only => { :primary => true } do
execute_on_servers(options) do |servers|
self.sessions[servers.first].sftp.connect do |tsftp|
tsftp.remove! "#{deploy_to}/#{current_dir}/db/production_data.sql"
end
end
end
desc 'Dumps, downloads and then cleans up the production data dump'
task :remote_db_runner do
remote_db_dump
remote_db_download
remote_db_cleanup
end
end

27
lib/tasks/database.rake Normal file
View file

@ -0,0 +1,27 @@
require 'rake'
namespace :db do
desc "Dump the current SQLite3 or MySQL database to a sql file"
task :dump_sql do
load 'config/environment.rb'
abcs = ActiveRecord::Base.configurations
case abcs[RAILS_ENV]["adapter"]
when 'mysql'
ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
File.open("db/#{RAILS_ENV}_data.sql", "w+") do |f|
if abcs[RAILS_ENV]["password"].blank?
f << `mysqldump -h #{abcs[RAILS_ENV]["host"]} -u #{abcs[RAILS_ENV]["username"]} #{abcs[RAILS_ENV]["database"]}`
else
f << `mysqldump -h #{abcs[RAILS_ENV]["host"]} -u #{abcs[RAILS_ENV]["username"]} -p#{abcs[RAILS_ENV]["password"]} #{abcs[RAILS_ENV]["database"]}`
end
end
when 'sqlite3'
ActiveRecord::Base.establish_connection(abcs[RAILS_ENV])
File.open("db/#{RAILS_ENV}_data.sql", "w+") do |f|
f << `sqlite3 #{abcs[RAILS_ENV]["database"]} .dump`
end
else
raise "Task not supported by '#{abcs[RAILS_ENV]['adapter']}'"
end
end
end

View file

@ -170,7 +170,7 @@ describe Todo do
it 'is starred if tag is "starred"' do
todo = create_todo
todo.should_not be_starred
todo.add_tag('starred')
todo._add_tags('starred')
todo.reload
todo.should be_starred
end
@ -178,7 +178,7 @@ describe Todo do
describe 'when toggling star flag' do
it 'toggles to not starred when starred' do
todo = create_todo
todo.add_tag('starred')
todo._add_tags('starred')
todo.should be_starred
todo.toggle_star!
todo.reload

View file

@ -0,0 +1,8 @@
require File.dirname(__FILE__) + '/../../spec_helper'
describe "/login.m" do
it "should render without an error" do
render :action => 'login/login_mobile.html.erb', :layout => 'mobile.m.erb'
response.should_not have_tag("div#Application-Trace")
end
end