From 0337a3cb4ea0528ea4601aa4403bd4cde48698ef Mon Sep 17 00:00:00 2001 From: nilsding Date: Fri, 28 Nov 2014 22:31:29 +0100 Subject: [PATCH] added admin and deadmin rake tasks --- README.md | 110 +++++++++++++++++++++++++++--------------------------- Rakefile | 20 ++++++++++ 2 files changed, 75 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index 137608e9..64b1e04c 100644 --- a/README.md +++ b/README.md @@ -13,93 +13,93 @@ #### PostgreSQL -``` -$ sudo -u postgres psql -d template1 -template1=# CREATE USER justask CREATEDB; -template1=# CREATE DATABASE justask_production OWNER justask; -template1=# \q -``` + $ sudo -u postgres psql -d template1 + template1=# CREATE USER justask CREATEDB; + template1=# CREATE DATABASE justask_production OWNER justask; + template1=# \q Try connecting to the database: -``` -$ psql -U justask -d justask_production -``` + $ psql -U justask -d justask_production #### MySQL -``` -$ mysql -u root -p -# change 'hack me' in the command below to a real password -mysql> CREATE USER 'justask'@'localhost' IDENTIFIED BY 'hack me'; -mysql> SET storage_engine=INNODB; -mysql> CREATE DATABASE IF NOT EXISTS `justask_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; -mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `justask_production`.* TO 'justask'@'localhost'; -mysql> \q -``` + $ mysql -u root -p + # change 'hack me' in the command below to a real password + mysql> CREATE USER 'justask'@'localhost' IDENTIFIED BY 'hack me'; + mysql> SET storage_engine=INNODB; + mysql> CREATE DATABASE IF NOT EXISTS `justask_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; + mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `justask_production`.* TO 'justask'@'localhost'; + mysql> \q Try connecting to the database: -``` -$ mysql -u justask -p -D justask_production -``` + $ mysql -u justask -p -D justask_production ### justask #### Clone the Source -``` -$ git clone https://git.rrerr.net/nilsding/justask.git justask -``` + $ git clone https://git.rrerr.net/nilsding/justask.git justask #### Configure It -``` -# Change into the justask directory -$ cd justask + # Change into the justask directory + $ cd justask -# Copy the example config -$ cp config/justask.yml.example config/justask.yml + # Copy the example config + $ cp config/justask.yml.example config/justask.yml -# Edit the configuration file -$ vi config/justask.yml -``` + # Edit the configuration file + $ vi config/justask.yml #### Database Configuration -``` -# PostgreSQL only: -$ cp config/database.yml.postgres config/database.yml + # PostgreSQL only: + $ cp config/database.yml.postgres config/database.yml -# MySQL only: -$ cp config/database.yml.mysql config/database.yml + # MySQL only: + $ cp config/database.yml.mysql config/database.yml -# MySQL and remote PostgreSQL only: -$ vi config/database.yml + # MySQL and remote PostgreSQL only: + $ vi config/database.yml -# Both: -# Make database.yml readable only for you -chmod o-rwx config/database.yml -``` + # Both: + # Make database.yml readable only for you + chmod o-rwx config/database.yml #### Install Gems -``` -# For PostgreSQL (note: the option says "without ... mysql") -$ bundle install --deployment --without development test mysql + # For PostgreSQL (note: the option says "without ... mysql") + $ bundle install --deployment --without development test mysql -# Or, if you use MySQL -$ bundle install --deployment --without development test postgres -``` + # Or, if you use MySQL + $ bundle install --deployment --without development test postgres #### Initialize Database -``` -$ bundle exec rake db:migrate RAILS_ENV=production -``` + $ bundle exec rake db:migrate RAILS_ENV=production #### Compile Assets -``` -$ bundle exec rake assets:precompile RAILS_ENV=production -``` + $ bundle exec rake assets:precompile RAILS_ENV=production + +#### Run the server + + # Production mode: + $ mkdir -p ./tmp/sockets/ + $ bundle exec unicorn -E production -l unix:./tmp/sockets/justask.sock + + # Development mode: + $ bundle exec rails server + +Create an account on your justask installation. + +To make yourself an admin, just execute: + + $ bundle exec rake 'justask:admin[your_username]' RAILS_ENV=production + +If you want to remove admin status from a certain user, you can do this: + + $ bundle exec rake 'justask:deadmin[get_rekt]' RAILS_ENV=production + diff --git a/Rakefile b/Rakefile index 98cfb796..def9fc56 100644 --- a/Rakefile +++ b/Rakefile @@ -23,4 +23,24 @@ namespace :justask do progress.increment end end + + desc "Gives admin status to an user." + task :admin, [:screen_name] => :environment do |t, args| + fail "screen name required" if args[:screen_name].nil? + user = User.find_by_screen_name(args[:screen_name]) + fail "user #{args[:screen_name]} not found" if user.nil? + user.admin = true + user.save! + puts "#{user.screen_name} is now an admin" + end + + desc "Removes admin status from an user." + task :deadmin, [:screen_name] => :environment do |t, args| + fail "screen name required" if args[:screen_name].nil? + user = User.find_by_screen_name(args[:screen_name]) + fail "user #{args[:screen_name]} not found" if user.nil? + user.admin = false + user.save! + puts "#{user.screen_name} no longer an admin" + end end \ No newline at end of file