Запустите ruby ​​test в приложении heroku без базы данных - PullRequest
0 голосов
/ 12 октября 2018

У меня есть одно приложение API rails ( App1 ), у которого нет базы данных (нет файла schema.rb ), но я использую базу данных другого приложения без добавлениялюбое дополнение к heroku postgres, поэтому, когда я помещаю это приложение в heroku, я устанавливаю переменную среды как DATABASE_URL = [URL базы данных App2], также я добавил несколько тестовых случаев с мини-тестом и включил CI в heroku, он запустит тест перед развертыванием, но в этот раз я получаю эту ошибку

enter image description here

, и это мой application.rb

    require_relative 'boot'

    require "rails"
    # Pick the frameworks you want:
    require "active_model/railtie"
    require "active_job/railtie"
    require "active_record/railtie"
    require "action_controller/railtie"
    require "action_mailer/railtie"
    require "action_view/railtie"
    require "action_cable/engine"
    # require "sprockets/railtie"
    require "rails/test_unit/railtie"

    # Require the gems listed in Gemfile, including any gems
    # you've limited to :test, :development, or :production.
    Bundler.require(*Rails.groups)

    module DemoGroup
      class Application < Rails::Application
        # Initialize configuration defaults for originally generated Rails version.
        config.load_defaults 5.1

        # Settings in config/environments/* take precedence over those specified here.
        # Application configuration should go into files in config/initializers
        # -- all .rb files in that directory are automatically loaded.

        # Only loads a smaller set of middleware suitable for API only apps.
        # Middleware like session, flash, cookies can be added back manually.
        # Skip views, helpers and assets when generating a new resource.
        config.api_only = true
      end
    end

Можно ли как-нибудь запустить этот тест в heroku

1 Ответ

0 голосов
/ 12 октября 2018

Правильный способ сделать это - прикрепить надстройку Postgres от app2 до app1.

Допустим, вы установили DATABASE_URL в app1, чтобы указать на вложение в app2.Затем Heroku необходимо выполнить обслуживание, которое изменяет URL базы данных при ее переносе на другой сервер.Heroku достаточно хорош, чтобы автоматически обновлять DATABASE_URL в app2, но app1 будет указывать на недействительный URL.

Предполагается, что у вас установлен клиент Heroku CLI.

Сначала получите списоквложения:

$ heroku addons

Удалите надстройку Postgres по умолчанию

$ heroku addons:remove heroku-postgresql:dev --app app1

Замените app2 именем вашего приложения на heroku.

Прикрепите аддон издругое приложение.

Затем присоедините надстройку Postgres из app2 к app1:

$ heroku addons:attach attachment_name -a app1

Schema.rb

schema.rb требуется для правильной работы ActiveRecord.Если app1 действительно создает миграции, вы можете просто зафиксировать «пустое» schema.rb:

ActiveRecord::Schema.define(version: 0) do
  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"
end
...