Skip to content

Commit

Permalink
Add task which feeds database with demo members (openware#96)
Browse files Browse the repository at this point in the history
  • Loading branch information
yivo authored and Louis committed Jan 3, 2018
1 parent a03e897 commit 9075158
Show file tree
Hide file tree
Showing 7 changed files with 90 additions and 0 deletions.
7 changes: 7 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,11 @@

require File.expand_path('../config/application', __FILE__)

logger = Logger.new(STDOUT)
logger.level = Logger::DEBUG
Rails.logger = logger

Peatio::Application.load_tasks

# Load additional tasks from "support/tasks".
Dir.glob('lib/peatio/tasks/**/*') { |f| load(f) }
3 changes: 3 additions & 0 deletions config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,8 @@ class Application < Rails::Application
config.active_record.raise_in_transactional_callbacks = true

config.assets.initialize_on_precompile = true

# Automatically load and reload constants from "lib/peatio".
config.paths.add 'lib/peatio', eager_load: true, glob: '*'
end
end
7 changes: 7 additions & 0 deletions docs/demo/members.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Generating demo members

To feed database with demo members (including admin account) execute the following:

`bundle exec rake peatio:feed`

Member access level, login and password will be printed on the screen.
5 changes: 5 additions & 0 deletions lib/peatio/feeders/abstract_feeder.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AbstractFeeder
def feed

end
end
5 changes: 5 additions & 0 deletions lib/peatio/feeders/admin_feeder.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AdminFeeder < MemberFeeder
def feed(email, *args)
super(email, *args)
end
end
29 changes: 29 additions & 0 deletions lib/peatio/feeders/member_feeder.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
class MemberFeeder < AbstractFeeder
def feed(email, password)
identity = Identity.find_or_initialize_by(email: email)
identity.update! \
password: password,
password_confirmation: password,
is_active: true

member = Member.find_or_initialize_by(email: email)
member.assign_attributes \
activated: true,
nickname: Faker::Internet.user_name,
phone_number: Faker::PhoneNumber.cell_phone
member.authentications = [Authentication.new(provider: 'identity', uid: identity.id)]
member.save!

member.id_document.update! \
name: Faker::Name.name,
address: Faker::Address.street_address,
city: Faker::Address.city,
country: Faker::Address.country,
zipcode: Faker::Address.zip,
id_document_type: :id_card,
id_document_number: Faker::Number.number(15),
aasm_state: :verified

member
end
end
34 changes: 34 additions & 0 deletions lib/peatio/tasks/feed.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
namespace :peatio do
task feed: :environment do
members = []

def random_email
Faker::Internet.email
end

def random_password
Faker::Internet.password(8, 64)
end

MemberFeeder.new.tap do |feeder|
10.times do
email, password = random_email, random_password
feeder.feed(email, password)
members << { email: email, password: password }
end
end

AdminFeeder.new.tap do |feeder|
ENV.fetch('ADMIN').split(',').each do |email|
password = random_password
feeder.feed(email, password)
members << { email: email, password: password, admin: true }
end
end

longest_email = members.map { |m| m[:email] }.sort_by(&:length).last
members.each do |member|
Rails.logger << "#{member[:admin] ? 'ADMIN ' : 'MEMBER'} #{member[:email].ljust(longest_email.length)} #{member[:password]}\n"
end
end
end

0 comments on commit 9075158

Please sign in to comment.