Я развернул приложение rails для heroku, используя базу данных mysql, размещенную на удаленном сервере. Для этого я добавил админу героя "cleardb" и установил правильные настройки конфигурации ENV Config:
DATABASE_URL = mysql2://user:password@host?reconnect=true
Я также установил непрерывное развертывание Heroku для трех ветвей (ветвь → среда)
develop -> devint,
staging -> staging,
master -> production
Непрерывное развертывание работает отлично, и база данных также настроена слишком хорошо (потому что, когда я создаю запись в приложении rails, я могу видеть данные на удаленном узле mysql).
Моя проблема заключается в том, что когда я включаю HEROKU CI, сборка сбой прерывается каждый раз с ошибкой Mysql2::Error: Can't connect to MySQL server on '127.0.0.1' (111)
Полная ошибка здесь: https://gist.github.com/siddhantbhardwaj/dab7c435815e7729d0f70081449f21ff#file-gistfile1-txt
Это происходит, когда Heroku CI пытается выполнить rake db:schema:load_if_ruby
для: test env
Моя database.yml выглядит так:
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: what_course_development
username: user
password: password
socket: /tmp/mysql.sock
test:
<<: *default
database: what_course_test
devint:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
staging:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
production:
<<: *default
url: <%= ENV['DATABASE_URL'] %>
Ознакомьтесь с нижеприведенным предложением о настройке базы данных.yml из DATABASE_URL:
DatabaseUrl.to_active_record_hash('postgres://uuu:[email protected]:1234/abc')
Это даст следующий результат:
{:adapter=>"postgres", :host=>"127.0.0.1", :port=>1234, :database=>"abc", :user=>"uuu", :password=>"xxx"}
Для получения дополнительной информации см. Файл seamusabshere database_url.