Skip to content

Commit

Permalink
Start moving import task into lib
Browse files Browse the repository at this point in the history
denny committed Feb 24, 2021
1 parent f435892 commit 3afafdb
Showing 4 changed files with 46 additions and 32 deletions.
24 changes: 12 additions & 12 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -51,7 +51,7 @@ Layout/LineLength:
Exclude:
- spec/**/*.rb
- plugins/*/spec/**/*.rb
- db/demo_data.rb
- db/demo_site_data.rb

# This config file is easier to understand laid out as it is, not as this cop wants it
Layout/MultilineArrayLineBreaks:
@@ -140,7 +140,7 @@ Style/DisableCopsWithinSourceCodeDirective:
# The test is for a feature that parses a list of IP addresses; the demo data is demo data
Style/IpAddresses:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
- plugins/ShinyCMS/spec/requests/shinycms/admin_controller_spec.rb

# I'd rather use one style of regex everywhere, and this one is clearer when working with URLs:
@@ -160,11 +160,11 @@ Layout/SpaceInsideBlockBraces:
Layout/SpaceInsideHashLiteralBraces:
EnforcedStyle: space
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Layout/SpaceInsideParens:
EnforcedStyle: space
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Layout/SpaceInsidePercentLiteralDelimiters:
Enabled: false
Layout/SpaceInsideReferenceBrackets:
@@ -189,28 +189,28 @@ Style/MethodCallWithArgsParentheses:
# Maybe I could run it through prettify or something though...
Layout/FirstArrayElementIndentation:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Layout/FirstMethodArgumentLineBreak:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Layout/LeadingEmptyLines:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Layout/SpaceAroundOperators:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Style/FrozenStringLiteralComment:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Style/NumericLiterals:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Style/StringHashKeys:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb
Style/StringLiterals:
Exclude:
- db/demo_data.rb
- db/demo_site_data.rb

# Potentially fixable at some point...
Lint/NumberConversion:
File renamed without changes.
20 changes: 3 additions & 17 deletions lib/tasks/demo.rake
Original file line number Diff line number Diff line change
@@ -16,7 +16,7 @@ require 'dotenv/tasks'
# - inserts the demo site data

# rails shiny:demo:export
# - exports the current database contents to db/demo_data.rb
# - exports the current database contents to db/demo_site_data.rb

require_relative '../../plugins/ShinyCMS/app/lib/shinycms/demo_data'

@@ -29,25 +29,11 @@ namespace :shiny do
desc 'ShinyCMS: reset database, create admin user, and load demo site data'
task load: prereqs do
# :nocov:
@shiny_admin.skip_confirmation!
@shiny_admin.save!

ShinyCMS::User.transaction do
ShinyCMS::Capability.all.find_each do |capability|
@shiny_admin.user_capabilities.create! capability: capability
end
end

# Allow the demo data to replace @shiny_admin's user profile page
@shiny_admin.profile.destroy_fully!
prepare_admin_account_for_import( @shiny_admin )

ShinyCMS::Setting.set :theme_name, to: 'halcyonic'

skip_callbacks_on_templated_models
require Rails.root.join 'db/demo_data.rb'
set_callbacks_on_templated_models

fix_primary_key_sequences
import_demo_data_from_file

ShinyCMS::FeatureFlag.enable :user_login

34 changes: 31 additions & 3 deletions plugins/ShinyCMS/app/lib/shinycms/demo_data.rb
Original file line number Diff line number Diff line change
@@ -9,7 +9,35 @@
module ShinyCMS
# Supporting methods for handling demo site data
module DemoData
# Used when loading demo data from file into database
# Used when importing demo data from file into database

def prepare_admin_account_for_import( admin )
admin.skip_confirmation!
admin.save!

grant_all_capabilities( admin )

# Allow the demo data to replace @shiny_admin's user profile page
admin.profile.destroy_fully!
end

def grant_all_capabilities( admin )
ShinyCMS::User.transaction do
ShinyCMS::Capability.all.find_each do |capability|
admin.user_capabilities.create! capability: capability
end
end
end

def import_demo_data_from_file
skip_callbacks_on_templated_models

require Rails.root.join 'db/demo_site_data.rb'

set_callbacks_on_templated_models

fix_primary_key_sequences
end

def skip_callbacks_on_templated_models
ShinyPages::Page.skip_callback( :create, :after, :add_elements )
@@ -59,7 +87,7 @@ def prepare_for_export
Rails.application.eager_load!

# Avoid collision between seed data and demo data
ShinyCMS::ConsentVersion.find_by( slug: 'shiny-lists-admin-subscribe' )&.delete
ShinyCMS::ConsentVersion.find_by( slug: 'shiny-lists-admin-subscribe' )&.destroy_fully!
end

def create_statements_for_all( models )
@@ -79,7 +107,7 @@ def create_statements_for( model )
end

def write_demo_data_to_file( demo_data_sql )
File.open( Rails.root.join( 'db/demo_data.rb' ), 'w' ) do |demo_data_file|
File.open( Rails.root.join( 'db/demo_site_data.rb' ), 'w' ) do |demo_data_file|
demo_data_file.write demo_data_sql
end
end

0 comments on commit 3afafdb

Please sign in to comment.