diff --git a/README b/README deleted file mode 100644 index 77a025e..0000000 --- a/README +++ /dev/null @@ -1,245 +0,0 @@ -== Welcome to OpenStreetView - -== Welcome to Rails - -Rails is a web-application framework that includes everything needed to create -database-backed web applications according to the Model-View-Control pattern. - -This pattern splits the view (also called the presentation) into "dumb" templates -that are primarily responsible for inserting pre-built data in between HTML tags. -The model contains the "smart" domain objects (such as Account, Product, Person, -Post) that holds all the business logic and knows how to persist themselves to -a database. The controller handles the incoming requests (such as Save New Account, -Update Product, Show Post) by manipulating the model and directing data to the view. - -In Rails, the model is handled by what's called an object-relational mapping -layer entitled Active Record. This layer allows you to present the data from -database rows as objects and embellish these data objects with business logic -methods. You can read more about Active Record in -link:files/vendor/rails/activerecord/README.html. - -The controller and view are handled by the Action Pack, which handles both -layers by its two parts: Action View and Action Controller. These two layers -are bundled in a single package due to their heavy interdependence. This is -unlike the relationship between the Active Record and Action Pack that is much -more separate. Each of these packages can be used independently outside of -Rails. You can read more about Action Pack in -link:files/vendor/rails/actionpack/README.html. - - -== Getting Started - -1. At the command prompt, start a new Rails application using the rails command - and your application name. Ex: rails myapp -2. Change directory into myapp and start the web server: script/server (run with --help for options) -3. Go to http://localhost:3000/ and get "Welcome aboard: You're riding the Rails!" -4. Follow the guidelines to start developing your application - - -== Web Servers - -By default, Rails will try to use Mongrel if it's are installed when started with script/server, otherwise Rails will use WEBrick, the webserver that ships with Ruby. But you can also use Rails -with a variety of other web servers. - -Mongrel is a Ruby-based webserver with a C component (which requires compilation) that is -suitable for development and deployment of Rails applications. If you have Ruby Gems installed, -getting up and running with mongrel is as easy as: gem install mongrel. -More info at: http://mongrel.rubyforge.org - -Say other Ruby web servers like Thin and Ebb or regular web servers like Apache or LiteSpeed or -Lighttpd or IIS. The Ruby web servers are run through Rack and the latter can either be setup to use -FCGI or proxy to a pack of Mongrels/Thin/Ebb servers. - -== Apache .htaccess example for FCGI/CGI - -# General Apache options -AddHandler fastcgi-script .fcgi -AddHandler cgi-script .cgi -Options +FollowSymLinks +ExecCGI - -# If you don't want Rails to look in certain directories, -# use the following rewrite rules so that Apache won't rewrite certain requests -# -# Example: -# RewriteCond %{REQUEST_URI} ^/notrails.* -# RewriteRule .* - [L] - -# Redirect all requests not available on the filesystem to Rails -# By default the cgi dispatcher is used which is very slow -# -# For better performance replace the dispatcher with the fastcgi one -# -# Example: -# RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] -RewriteEngine On - -# If your Rails application is accessed via an Alias directive, -# then you MUST also set the RewriteBase in this htaccess file. -# -# Example: -# Alias /myrailsapp /path/to/myrailsapp/public -# RewriteBase /myrailsapp - -RewriteRule ^$ index.html [QSA] -RewriteRule ^([^.]+)$ $1.html [QSA] -RewriteCond %{REQUEST_FILENAME} !-f -RewriteRule ^(.*)$ dispatch.cgi [QSA,L] - -# In case Rails experiences terminal errors -# Instead of displaying this message you can supply a file here which will be rendered instead -# -# Example: -# ErrorDocument 500 /500.html - -ErrorDocument 500 "

Application error

Rails application failed to start properly" - - -== Debugging Rails - -Sometimes your application goes wrong. Fortunately there are a lot of tools that -will help you debug it and get it back on the rails. - -First area to check is the application log files. Have "tail -f" commands running -on the server.log and development.log. Rails will automatically display debugging -and runtime information to these files. Debugging info will also be shown in the -browser on requests from 127.0.0.1. - -You can also log your own messages directly into the log file from your code using -the Ruby logger class from inside your controllers. Example: - - class WeblogController < ActionController::Base - def destroy - @weblog = Weblog.find(params[:id]) - @weblog.destroy - logger.info("#{Time.now} Destroyed Weblog ID ##{@weblog.id}!") - end - end - -The result will be a message in your log file along the lines of: - - Mon Oct 08 14:22:29 +1000 2007 Destroyed Weblog ID #1 - -More information on how to use the logger is at http://www.ruby-doc.org/core/ - -Also, Ruby documentation can be found at http://www.ruby-lang.org/ including: - -* The Learning Ruby (Pickaxe) Book: http://www.ruby-doc.org/docs/ProgrammingRuby/ -* Learn to Program: http://pine.fm/LearnToProgram/ (a beginners guide) - -These two online (and free) books will bring you up to speed on the Ruby language -and also on programming in general. - - -== Debugger - -Debugger support is available through the debugger command when you start your Mongrel or -Webrick server with --debugger. This means that you can break out of execution at any point -in the code, investigate and change the model, AND then resume execution! -You need to install ruby-debug to run the server in debugging mode. With gems, use 'gem install ruby-debug' -Example: - - class WeblogController < ActionController::Base - def index - @posts = Post.find(:all) - debugger - end - end - -So the controller will accept the action, run the first line, then present you -with a IRB prompt in the server window. Here you can do things like: - - >> @posts.inspect - => "[#nil, \"body\"=>nil, \"id\"=>\"1\"}>, - #\"Rails you know!\", \"body\"=>\"Only ten..\", \"id\"=>\"2\"}>]" - >> @posts.first.title = "hello from a debugger" - => "hello from a debugger" - -...and even better is that you can examine how your runtime objects actually work: - - >> f = @posts.first - => #nil, "body"=>nil, "id"=>"1"}> - >> f. - Display all 152 possibilities? (y or n) - -Finally, when you're ready to resume execution, you enter "cont" - - -== Console - -You can interact with the domain model by starting the console through script/console. -Here you'll have all parts of the application configured, just like it is when the -application is running. You can inspect domain models, change values, and save to the -database. Starting the script without arguments will launch it in the development environment. -Passing an argument will specify a different environment, like script/console production. - -To reload your controllers and models after launching the console run reload! - -== dbconsole - -You can go to the command line of your database directly through script/dbconsole. -You would be connected to the database with the credentials defined in database.yml. -Starting the script without arguments will connect you to the development database. Passing an -argument will connect you to a different database, like script/dbconsole production. -Currently works for mysql, postgresql and sqlite. - -== Description of Contents - -app - Holds all the code that's specific to this particular application. - -app/controllers - Holds controllers that should be named like weblogs_controller.rb for - automated URL mapping. All controllers should descend from ApplicationController - which itself descends from ActionController::Base. - -app/models - Holds models that should be named like post.rb. - Most models will descend from ActiveRecord::Base. - -app/views - Holds the template files for the view that should be named like - weblogs/index.html.erb for the WeblogsController#index action. All views use eRuby - syntax. - -app/views/layouts - Holds the template files for layouts to be used with views. This models the common - header/footer method of wrapping views. In your views, define a layout using the - layout :default and create a file named default.html.erb. Inside default.html.erb, - call <% yield %> to render the view using this layout. - -app/helpers - Holds view helpers that should be named like weblogs_helper.rb. These are generated - for you automatically when using script/generate for controllers. Helpers can be used to - wrap functionality for your views into methods. - -config - Configuration files for the Rails environment, the routing map, the database, and other dependencies. - -db - Contains the database schema in schema.rb. db/migrate contains all - the sequence of Migrations for your schema. - -doc - This directory is where your application documentation will be stored when generated - using rake doc:app - -lib - Application specific libraries. Basically, any kind of custom code that doesn't - belong under controllers, models, or helpers. This directory is in the load path. - -public - The directory available for the web server. Contains subdirectories for images, stylesheets, - and javascripts. Also contains the dispatchers and the default HTML files. This should be - set as the DOCUMENT_ROOT of your web server. - -script - Helper scripts for automation and generation. - -test - Unit and functional tests along with fixtures. When using the script/generate scripts, template - test files will be generated for you and placed in this directory. - -vendor - External libraries that the application depends on. Also includes the plugins subdirectory. - If the app has frozen rails, those gems also go here, under vendor/rails/. - This directory is in the load path. diff --git a/README.md b/README.md new file mode 100644 index 0000000..bc4f34a --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +See the [README](http://rails.documentation.codyrobbins.com/2.3.18/) of the Ruby on Rails 2.3.18 Documentation for more info. + +# Running the OpenStreetView + +Step-to-step tested in Ubuntu 12.04.4 LTS "Precise". + +## System dependencies +```bash +sudo apt-get install build-essential git ruby ruby-dev libmysqlclient-dev mysql-server imagemagick +``` + +## Rails +```bash +sudo apt-get install rubygems +sudo gem install -v=2.3.18 rails +``` +This command take a few seconds to start showing output. + +**If you face "Gem.source_index deprecated"** (issue #38) at the "Web start", you can switch to `slimgems` and retrace the steps of the "Ruby dependencies" section (below): + +```bash +sudo gem install slimgems +sudo gem install -v=2.3.18 rails +``` +This has happened with Ubuntu 12.04.4 LTS "Precise". + +Attention! In this case, do not forget to retrace the steps of the "Ruby dependencies" section (below). + +## OSV + auth +```bash +sudo mkdir -p /srv/http +cd !$ + +# $MYGITDIR example: /home/USER/Git/ +sudo ln -s $MYGITDIR/OpenStreetView openstreetview +cd $MYGITDIR/OpenStreetView + +git clone git://github.com/technoweenie/restful-authentication.git vendor/plugins/restful_authentication +``` + +For fixing the issue #37: +```bash +mv fix_issue_37.patch vendor/plugins/restful_authentication/ +cd vendor/plugins/restful_authentication/ +patch lib/authorization/aasm_roles.rb < fix_issue_37.patch + +# do not forget to come back: +cd $MYGITDIR/OpenStreetView +``` +This because the project [restful-authentication](https://github.com/technoweenie/restful-authentication) is not accepting pull requests there are four years. + +## Ruby dependencies +```bash +sudo rake gems:install +sudo gem install mysql +``` + +## Database creation +```bash +cat << EOF | mysql -h localhost -u root -p +CREATE DATABASE openstreetview_org_development; +GRANT ALL ON openstreetview_org_development.* TO DB_USER@localhost IDENTIFIED BY 'DB_PASS'; +EOF + +# change the connection config +sed -i 's@/tmp/mysql.sock@/var/run/mysqld/mysqld.sock@' config/database.yml +sed -i 's@username: root@username: DB_USER@' config/database.yml +sed -i 's@password:@password: DB_PASS@' config/database.yml + +rake db:migrate RAILS_ENV="development" +``` + +## Web start +```bash +./script/server -e development -p3002 +``` + +1. Access `http://localhost:3002` → [Go!](http://localhost:3002) +1. Create an account +1. Access the log: `less -R log/development.log` +1. Get a activation link that looks with http://localhost:3002/activate/b082238ef819c39136d71a3558821b0cd5577b10 +1. Access it +1. You can to access your account now! + +Remember that you need to run `script/tools/processor.rb` manually and **keep it running**. + diff --git a/fix_issue_37.patch b/fix_issue_37.patch new file mode 100644 index 0000000..2b2e879 --- /dev/null +++ b/fix_issue_37.patch @@ -0,0 +1,44 @@ +--- lib/authorization/aasm_roles.rb 2014-03-12 23:33:33.000000000 -0300 ++++ lib/authorization/aasm_roles.rb 2014-03-12 23:32:39.000000000 -0300 +@@ -10,30 +10,30 @@ + include StatefulRolesInstanceMethods + include AASM + aasm_column :state +- aasm_initial_state :pending +- aasm_state :passive +- aasm_state :pending, :enter => :make_activation_code +- aasm_state :active, :enter => :do_activate +- aasm_state :suspended +- aasm_state :deleted, :enter => :do_delete ++ aasm.initial_state :pending ++ aasm.state :passive ++ aasm.state :pending, :enter => :make_activation_code ++ aasm.state :active, :enter => :do_activate ++ aasm.state :suspended ++ aasm.state :deleted, :enter => :do_delete + +- aasm_event :register do ++ aasm.event :register do + transitions :from => :passive, :to => :pending, :guard => Proc.new {|u| !(u.crypted_password.blank? && u.password.blank?) } + end + +- aasm_event :activate do ++ aasm.event :activate do + transitions :from => :pending, :to => :active + end + +- aasm_event :suspend do ++ aasm.event :suspend do + transitions :from => [:passive, :pending, :active], :to => :suspended + end + +- aasm_event :delete do ++ aasm.event :delete do + transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted + end + +- aasm_event :unsuspend do ++ aasm.event :unsuspend do + transitions :from => :suspended, :to => :active, :guard => Proc.new {|u| !u.activated_at.blank? } + transitions :from => :suspended, :to => :pending, :guard => Proc.new {|u| !u.activation_code.blank? } + transitions :from => :suspended, :to => :passive