parent
114f00b88a
commit
f36af7a7de
3 changed files with 26 additions and 4 deletions
2
Procfile
2
Procfile
|
@ -1,3 +1,3 @@
|
||||||
release: bundle exec rails db:prepare
|
release: bundle exec rails db:chatwoot_prepare
|
||||||
web: bin/rails server -p $PORT -e $RAILS_ENV
|
web: bin/rails server -p $PORT -e $RAILS_ENV
|
||||||
worker: bundle exec sidekiq -C config/sidekiq.yml
|
worker: bundle exec sidekiq -C config/sidekiq.yml
|
||||||
|
|
3
app.json
3
app.json
|
@ -12,9 +12,6 @@
|
||||||
"vue"
|
"vue"
|
||||||
],
|
],
|
||||||
"success_url": "/",
|
"success_url": "/",
|
||||||
"scripts": {
|
|
||||||
"postdeploy": "bundle exec rake db:seed"
|
|
||||||
},
|
|
||||||
"env": {
|
"env": {
|
||||||
"SECRET_TOKEN": {
|
"SECRET_TOKEN": {
|
||||||
"description": "A secret key for verifying the integrity of signed cookies.",
|
"description": "A secret key for verifying the integrity of signed cookies.",
|
||||||
|
|
|
@ -5,3 +5,28 @@ Rake::Task['db:migrate'].enhance do
|
||||||
ConfigLoader.new.process
|
ConfigLoader.new.process
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# we are creating a custom database prepare task
|
||||||
|
# the default rake db:prepare task isn't ideal for environments like heroku
|
||||||
|
# In heroku the database is already created before the first run of db:prepare
|
||||||
|
# In this case rake db:prepare tries to run db:migrate from all the way back from the beginning
|
||||||
|
# Since the assumption is migrations are only run after schema load from a point x, this could lead to things breaking.
|
||||||
|
# ref: https://github.com/rails/rails/blob/main/activerecord/lib/active_record/railties/databases.rake#L356
|
||||||
|
db_namespace = namespace :db do
|
||||||
|
desc 'Runs setup if database does not exist, or runs migrations if it does'
|
||||||
|
task chatwoot_prepare: :load_config do
|
||||||
|
ActiveRecord::Base.configurations.configs_for(env_name: Rails.env).each do |db_config|
|
||||||
|
ActiveRecord::Base.establish_connection(db_config.config)
|
||||||
|
# handling case where database was created by the provider, with out running db:setup
|
||||||
|
if ActiveRecord::Base.connection.tables.count.zero?
|
||||||
|
db_namespace['load_config'].invoke if ActiveRecord::Base.schema_format == :ruby
|
||||||
|
ActiveRecord::Tasks::DatabaseTasks.load_schema_current(:ruby, ENV['SCHEMA'])
|
||||||
|
db_namespace['seed'].invoke
|
||||||
|
end
|
||||||
|
|
||||||
|
db_namespace['migrate'].invoke
|
||||||
|
rescue ActiveRecord::NoDatabaseError
|
||||||
|
db_namespace['setup'].invoke
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in a new issue